Compare commits
501 commits
feature/lo
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c1c2d7b302 | ||
|
|
4cc24dea75 | ||
|
|
1f896d05ed | ||
|
|
1f978ffd72 | ||
|
|
6ce273baf5 | ||
|
|
e18b332414 | ||
|
|
2edda6e743 | ||
|
|
b335568bf9 | ||
|
|
0758250ad1 | ||
|
|
843aac631b | ||
|
|
0ce7c11d36 | ||
|
|
26d374d52a | ||
|
|
39f5949441 | ||
|
|
abf73947f4 | ||
|
|
4358e24dab | ||
|
|
c063d9512e | ||
|
|
39de9c04f6 | ||
|
|
1637ea95cb | ||
|
|
6fb687871c | ||
|
|
dd06033a58 | ||
|
|
13a50f7806 | ||
|
|
c18562b150 | ||
|
|
dba3010c89 | ||
|
|
00fb9bc9f9 | ||
|
|
5893730704 | ||
|
|
0f23bd24cc | ||
|
|
324d48aa90 | ||
|
|
dadc1b2843 | ||
|
|
0534a2c6be | ||
|
|
050e78b1b6 | ||
|
|
084b253ff7 | ||
|
|
a9a83a2052 | ||
|
|
d117ce0bf2 | ||
|
|
10b1f7e1ca | ||
|
|
4ac32d89e8 | ||
|
|
7aa5308f9c | ||
|
|
f51bc4daaf | ||
|
|
049fe55c7f | ||
|
|
f5cf566fca | ||
|
|
97c11a1199 | ||
|
|
ba64d6f494 | ||
|
|
410ba4b19a | ||
|
|
74076078bb | ||
|
|
d9e23a0303 | ||
|
|
dbb9c1d4f4 | ||
|
|
d202695e88 | ||
|
|
323f5ea92e | ||
|
|
5b74f1e756 | ||
|
|
ee4af65268 | ||
|
|
739b975cad | ||
|
|
5035451af7 | ||
|
|
18a3ff5f12 | ||
|
|
0d12bf0b1f | ||
|
|
b3fbe1b015 | ||
|
|
e9cd0b15a2 | ||
|
|
cd08c96fa4 | ||
|
|
ac4a993259 | ||
|
|
435bac5599 | ||
|
|
d5d6b911b0 | ||
|
|
29cdca380f | ||
|
|
e5f5db69b4 | ||
|
|
d635e69ee3 | ||
|
|
a1531aa057 | ||
|
|
b24ba221e9 | ||
|
|
253f0594e4 | ||
|
|
02517bf6ab | ||
|
|
184128a79b | ||
|
|
93869dbef6 | ||
|
|
af82a6c5d5 | ||
|
|
fdca333280 | ||
|
|
c954c08c07 | ||
|
|
0b8220be32 | ||
|
|
f7d40ec88e | ||
|
|
316336d1cf | ||
|
|
224c26620e | ||
|
|
c6d5864aa9 | ||
|
|
c45395be95 | ||
|
|
6d47351d15 | ||
|
|
450c748299 | ||
|
|
cafae9d8c6 | ||
|
|
b82f376bfb | ||
|
|
66f89416d5 | ||
|
|
11d0da9560 | ||
|
|
8de9e86fed | ||
|
|
05c407fbb2 | ||
|
|
aaf41001f1 | ||
|
|
af517be184 | ||
|
|
1af1b7bbdc | ||
|
|
1f3ce2b34d | ||
|
|
2f239fd6a3 | ||
|
|
ab005e5950 | ||
|
|
7349f99ba2 | ||
|
|
3e7d4d1d6b | ||
|
|
43fade82e5 | ||
|
|
3630f3ec38 | ||
|
|
66d24ff419 | ||
|
|
2346b0f6ab | ||
|
|
2957f5084d | ||
|
|
e6dee96266 | ||
|
|
86ce506956 | ||
|
|
7a46a6595c | ||
|
|
fa9478ac44 | ||
|
|
cc7904e1bc | ||
|
|
dba69abefc | ||
|
|
041879c4e6 | ||
|
|
0887eb0976 | ||
|
|
f8edde9587 | ||
|
|
74ce20b256 | ||
|
|
1cfdd7e4a2 | ||
|
|
bf3593a60d | ||
|
|
65704274cb | ||
|
|
1bc9e8aff2 | ||
|
|
c23da55b95 | ||
|
|
2a37785a7c | ||
|
|
0ef01165ea | ||
|
|
f9923ffda0 | ||
|
|
6e765e7ddc | ||
|
|
8b4a886d01 | ||
|
|
507bbe83f3 | ||
|
|
d33f806efa | ||
|
|
d7d9c73e5e | ||
|
|
d90d680e8a | ||
|
|
baa53e134a | ||
|
|
3bafc5b3f4 | ||
|
|
b2e4e91fbd | ||
|
|
10ffcf155d | ||
|
|
ed71543dff | ||
|
|
0dcaea1e4e | ||
|
|
52a359180c | ||
|
|
8f89f38f5c | ||
|
|
f2b67ae969 | ||
|
|
ef0398ebd3 | ||
|
|
dcc921efcb | ||
|
|
eedd5e2821 | ||
|
|
96b65b848b | ||
|
|
694d380e66 | ||
|
|
672c09ee11 | ||
|
|
ca9756abc9 | ||
|
|
da7b5b3560 | ||
|
|
ecc1dd9475 | ||
|
|
8f7702095b | ||
|
|
13303a1e14 | ||
|
|
b184a5d013 | ||
|
|
9f5ce8e3c9 | ||
|
|
6621338064 | ||
|
|
00902d8a7e | ||
|
|
01f69bcc51 | ||
|
|
f429df39a9 | ||
|
|
0c533071d4 | ||
|
|
fac9c3469f | ||
|
|
8414973077 | ||
|
|
5fba138a5a | ||
|
|
053bdb8646 | ||
|
|
ff5ea82e38 | ||
|
|
55d4865d36 | ||
|
|
b01793081a | ||
|
|
18e9c4dc95 | ||
|
|
ed9f155f7c | ||
|
|
d83dc339fc | ||
|
|
8d7fdd6549 | ||
|
|
65f2f823a8 | ||
|
|
fac75a3ae0 | ||
|
|
19e9c0bc22 | ||
|
|
9816608bba | ||
|
|
83b279bac3 | ||
|
|
32aeb6197f | ||
|
|
11eab9c284 | ||
|
|
8d863a507b | ||
|
|
c194e2ac9c | ||
|
|
aeb0dbc6ae | ||
|
|
4039cb12ba | ||
|
|
b7983d4c20 | ||
|
|
e8ab176d4a | ||
|
|
b7f7c66a50 | ||
|
|
3455863099 | ||
|
|
7fe0bbacd4 | ||
|
|
c8dfb72cd2 | ||
|
|
42b34bbf87 | ||
|
|
963b8fdd53 | ||
|
|
0923ff040f | ||
|
|
369461f9e1 | ||
|
|
bb2dcdcb31 | ||
|
|
e67b3dd6d4 | ||
|
|
ddfc0dda42 | ||
|
|
f7cc51c134 | ||
|
|
1b27d9dc9d | ||
|
|
8011c4afcc | ||
|
|
69de53c459 | ||
|
|
82b3cccc95 | ||
|
|
91d9a4f73c | ||
|
|
93f83923ce | ||
|
|
9759208ed6 | ||
|
|
9d3d9a97ff | ||
|
|
a29de5963f | ||
|
|
381b029ffc | ||
|
|
772c88d020 | ||
|
|
b69213abcc | ||
|
|
4338d657fc | ||
|
|
2430b38406 | ||
|
|
6cfe7853f5 | ||
|
|
64c97a5283 | ||
|
|
f32f4346e7 | ||
|
|
dcc2dcdb8d | ||
|
|
9b8845949e | ||
|
|
36bfebfe6a | ||
|
|
0c70004102 | ||
|
|
5238d30236 | ||
|
|
58e0ce6a4b | ||
|
|
e4b437cb5f | ||
|
|
5a94e82db8 | ||
|
|
9713d62849 | ||
|
|
a751339c99 | ||
|
|
62e480fed7 | ||
|
|
b74edd9dc2 | ||
|
|
7eba9552e2 | ||
|
|
396c300315 | ||
|
|
c192590af6 | ||
|
|
fb5fc935e7 | ||
|
|
780c7a8476 | ||
|
|
c72e18f082 | ||
|
|
a90d836bcd | ||
|
|
c0129a6b8a | ||
|
|
a77d2408ac | ||
|
|
6baf8412c6 | ||
|
|
9907984aca | ||
|
|
f767a7c076 | ||
|
|
445fcc2d40 | ||
|
|
f4ee11ac62 | ||
|
|
d30593c35e | ||
|
|
102263f37d | ||
|
|
19ae461e36 | ||
|
|
c481d52064 | ||
|
|
7c69400618 | ||
|
|
ca98ea9872 | ||
|
|
7d40e42cc2 | ||
|
|
f1920f2132 | ||
|
|
30490abc50 | ||
|
|
c5c0a3a73e | ||
|
|
0551cfc013 | ||
|
|
1a2cec58f1 | ||
|
|
a9b992a1b0 | ||
|
|
d87ae839a2 | ||
|
|
0f859a2a0f | ||
|
|
7e1e1651e4 | ||
|
|
1c00edb458 | ||
|
|
eb24e333d7 | ||
|
|
836210404c | ||
|
|
896dd48960 | ||
|
|
312ee2b42c | ||
|
|
3fc1aea3ce | ||
|
|
0f5a7e1317 | ||
|
|
bebf95cfe3 | ||
|
|
02aa4302de | ||
|
|
b7d002dd8b | ||
|
|
480e3a89df | ||
|
|
427b4db2b3 | ||
|
|
306328529e | ||
|
|
0396bada96 | ||
|
|
e9be7146af | ||
|
|
53bbbbba1d | ||
|
|
f5817677df | ||
|
|
7b9d88b70b | ||
|
|
4750768e0f | ||
|
|
90295d8dec | ||
|
|
6fe05bbf5e | ||
|
|
a4d8d2261a | ||
|
|
c58ba2e6a5 | ||
|
|
3fa236c2bb | ||
|
|
e13346560e | ||
|
|
d6e29810f1 | ||
|
|
29e693d443 | ||
|
|
7fbf522aa3 | ||
|
|
0456bef903 | ||
|
|
6c8c81f3db | ||
|
|
538092d59e | ||
|
|
789cfb2490 | ||
|
|
83928fa4d0 | ||
|
|
f854137ca0 | ||
|
|
de5b7f472d | ||
|
|
33e5bd0b67 | ||
|
|
a312cd6e1d | ||
|
|
8b2b2db848 | ||
|
|
4f9eaf7574 | ||
|
|
fc7d8a82e5 | ||
|
|
81e4bd6040 | ||
|
|
54a175b3ef | ||
|
|
738fd48163 | ||
|
|
e5916c5c03 | ||
|
|
1de590137f | ||
|
|
311042f06d | ||
|
|
6acfc41778 | ||
|
|
955cbeb826 | ||
|
|
6e9f920931 | ||
|
|
4ae9904822 | ||
|
|
c0b8bfde03 | ||
|
|
c09ada67d6 | ||
|
|
cc5dd4cd82 | ||
|
|
8708564889 | ||
|
|
f506ce9d58 | ||
|
|
074b7096df | ||
|
|
b46eca4ec6 | ||
|
|
54500b0e72 | ||
|
|
d2ad2ec078 | ||
|
|
b85feb5461 | ||
|
|
022f82291a | ||
|
|
579c300cbc | ||
|
|
0f051b68ae | ||
|
|
58b3708a47 | ||
|
|
b68994f25c | ||
|
|
ad51de052c | ||
|
|
77406d7322 | ||
|
|
3ed7215a92 | ||
|
|
3a1eb51890 | ||
|
|
ca113cdd85 | ||
|
|
da5d4b9830 | ||
|
|
79287fc507 | ||
|
|
cd98b8bc6f | ||
|
|
18dd9e6637 | ||
|
|
6266aa86a4 | ||
|
|
c26c6af356 | ||
|
|
a3a6e55d22 | ||
|
|
b965a165b1 | ||
|
|
2c2c2ac5ee | ||
|
|
cbccd72050 | ||
|
|
3db23e402c | ||
|
|
c45840173e | ||
|
|
76b5803f83 | ||
|
|
b377fd183a | ||
|
|
8e52dd0579 | ||
|
|
b5db40cba6 | ||
|
|
ea34aa2030 | ||
|
|
40717970ff | ||
|
|
1d24432e47 | ||
|
|
a597753bee | ||
|
|
4d1abce084 | ||
|
|
f822798c63 | ||
|
|
0c5bd9b338 | ||
|
|
779fc6265e | ||
|
|
d6ab87e2c4 | ||
|
|
6e5ca19d18 | ||
|
|
fba078bbe9 | ||
|
|
ce19deb5d1 | ||
|
|
1f3c5af996 | ||
|
|
9c4df6f026 | ||
|
|
d8b825f478 | ||
|
|
ba9ce2335e | ||
|
|
15235d77f7 | ||
|
|
cb4a117503 | ||
|
|
d61879fd3c | ||
|
|
3e373210c5 | ||
|
|
5a826add92 | ||
|
|
3843ed6540 | ||
|
|
184ea679f2 | ||
|
|
e99528fe73 | ||
|
|
70161aecc4 | ||
|
|
e8d250827d | ||
|
|
f97cc7cdec | ||
|
|
06d84b83de | ||
|
|
da2a6205ed | ||
|
|
fa21d835d9 | ||
|
|
6a7980ec75 | ||
|
|
f23ca8055f | ||
|
|
892556e26d | ||
|
|
75410e8886 | ||
|
|
4af5f79328 | ||
|
|
ea0b37b7fc | ||
|
|
006f7bf9e9 | ||
|
|
17be2bf2f7 | ||
|
|
6165550133 | ||
|
|
59d10a9db3 | ||
|
|
f287e9318e | ||
|
|
402491b36b | ||
|
|
2c4f505309 | ||
|
|
f9eafa52f9 | ||
|
|
4284624096 | ||
|
|
9b82cf57e4 | ||
|
|
9164073d14 | ||
|
|
148af3edfc | ||
|
|
dcbcc5a156 | ||
|
|
33f2336244 | ||
|
|
3f4ea66ea1 | ||
|
|
5ddb62e275 | ||
|
|
a7795eda5d | ||
|
|
aee3e1084c | ||
|
|
39fad0c1a0 | ||
|
|
32cc2d66dd | ||
|
|
780cf148fa | ||
|
|
8c1f556f29 | ||
|
|
c9504452e1 | ||
|
|
528b74109e | ||
|
|
89c6d1e258 | ||
|
|
50f9a49911 | ||
|
|
cc0c5afd00 | ||
|
|
a1b5b210dd | ||
|
|
d92c0e330d | ||
|
|
43963783db | ||
|
|
11181190ee | ||
|
|
af766dd323 | ||
|
|
158dad052c | ||
|
|
a9c65cd4b2 | ||
|
|
ef77b28b3f | ||
|
|
b116730885 | ||
|
|
78eb3be127 | ||
|
|
1819b7c23b | ||
|
|
eccc79e4ce | ||
|
|
9102bb1478 | ||
|
|
8eef2ae089 | ||
|
|
f74605d339 | ||
|
|
7798504641 | ||
|
|
da067be2fa | ||
|
|
a77f8b582e | ||
|
|
51a74c23ef | ||
|
|
c593ed6a05 | ||
|
|
c1d7a82307 | ||
|
|
a920d449ff | ||
|
|
21a1a7bed7 | ||
|
|
8a0f242fc6 | ||
|
|
4ec9ccae98 | ||
|
|
cc344ac98a | ||
|
|
69a8507908 | ||
|
|
f87662f676 | ||
|
|
1eb5e4a0c1 | ||
|
|
a1cc68d214 | ||
|
|
c6d4d8f291 | ||
|
|
fff53fc465 | ||
|
|
5a4c651d6b | ||
|
|
ff4c9e1e70 | ||
|
|
8bc60acd77 | ||
|
|
f26b3195c9 | ||
|
|
31019b8832 | ||
|
|
df4ccaf970 | ||
|
|
eb0d12f220 | ||
|
|
60254105f1 | ||
|
|
1fc4073a05 | ||
|
|
be12cad7bd | ||
|
|
25c596656c | ||
|
|
ee7ef97506 | ||
|
|
80ce499f67 | ||
|
|
62efae2e00 | ||
|
|
e9d312fa86 | ||
|
|
c1c010bc8d | ||
|
|
f03669b8f4 | ||
|
|
b996f40016 | ||
|
|
a4a4a2266b | ||
|
|
82512899b2 | ||
|
|
4ac62a2ddc | ||
|
|
1d4bea21c1 | ||
|
|
ed351fb4cb | ||
|
|
d507222d21 | ||
|
|
27e19900ae | ||
|
|
32f4722c0f | ||
|
|
5e93746e8c | ||
|
|
1106e404c7 | ||
|
|
0e2c918479 | ||
|
|
05dfe748d3 | ||
|
|
cd2b2c3c19 | ||
|
|
6f2b39792a | ||
|
|
ff6de1938b | ||
|
|
d5451c5d77 | ||
|
|
96fb156c47 | ||
|
|
56afa0404b | ||
|
|
29f7bc7a9c | ||
|
|
ad74af7797 | ||
|
|
3fe0f59deb | ||
|
|
ebf1cc2bc6 | ||
|
|
32407dbb56 | ||
|
|
482816058f | ||
|
|
8ed2ea5cfe | ||
|
|
5d4a78fb3f | ||
|
|
ebea77e8ea | ||
|
|
51356610b2 | ||
|
|
84a75f2a77 | ||
|
|
9be5ac4ca6 | ||
|
|
b8586bf9cb | ||
|
|
7cc23fcbeb | ||
|
|
539de20a11 | ||
|
|
b57bcced40 | ||
|
|
9ab61d4ed4 | ||
|
|
09e0b09649 | ||
|
|
b9f01e0d1c | ||
|
|
f7e997fba1 | ||
|
|
78776df107 | ||
|
|
bd4810351d | ||
|
|
0506c01103 | ||
|
|
24a8ca39d3 | ||
|
|
ecf47a0bbb | ||
|
|
6a4a4de31c | ||
|
|
efdead0b0a | ||
|
|
e319746ca9 | ||
|
|
f78828216d | ||
|
|
9d0f7781b4 | ||
|
|
f6e544a2e6 | ||
|
|
3ffb5299a8 | ||
|
|
aeb1ce0fbe | ||
|
|
3245fa6123 | ||
|
|
8e7591cd4b | ||
|
|
44a1256eb9 | ||
|
|
147916ce2e | ||
|
|
42781036a8 | ||
|
|
eacd2c2cde | ||
|
|
7bea9a7273 |
607 changed files with 56803 additions and 36944 deletions
16
.drone.yml
Normal file
16
.drone.yml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: EQEmulator Server Linux CI
|
||||
|
||||
# Limits how many of these builds can run on the drone runner at a time, this isn't about cores
|
||||
concurrency:
|
||||
limit: 1
|
||||
|
||||
steps:
|
||||
- name: server-build
|
||||
# Source build script https://github.com/Akkadius/akk-stack/blob/master/containers/eqemu-server/Dockerfile#L20
|
||||
image: akkadius/eqemu-server:latest
|
||||
commands:
|
||||
- sudo chown eqemu:eqemu /drone/src/ * -R
|
||||
- git submodule init && git submodule update && mkdir -p build && cd build && cmake -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_BOTS=ON -DEQEMU_BUILD_LUA=ON -G 'Unix Makefiles' .. && make -j$((`nproc`-4))
|
||||
35
.vscode/tasks.json
vendored
35
.vscode/tasks.json
vendored
|
|
@ -6,7 +6,7 @@
|
|||
{
|
||||
"label": "make",
|
||||
"type": "shell",
|
||||
"command": "cd build && make",
|
||||
"command": "cd bin && make",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
{
|
||||
"label": "make clean",
|
||||
"type": "shell",
|
||||
"command": "cd build && make clean",
|
||||
"command": "cd bin && make clean",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
{
|
||||
"label": "cmake",
|
||||
"type": "shell",
|
||||
"command": "mkdir -p build && cd build && rm CMakeCache.txt && cmake -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -G 'Unix Makefiles' ..",
|
||||
"command": "mkdir -p bin && cd bin && rm CMakeCache.txt && cmake -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -G 'Unix Makefiles' ..",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
|
|
@ -52,7 +52,7 @@
|
|||
{
|
||||
"label": "download maps",
|
||||
"type": "shell",
|
||||
"command": "mkdir -p build/bin && cd build/bin && wget https://codeload.github.com/Akkadius/EQEmuMaps/zip/master -O maps.zip && unzip -o maps.zip && rm ./maps -rf && mv EQEmuMaps-master maps && rm maps.zip",
|
||||
"command": "mkdir -p bin && cd bin && wget https://codeload.github.com/Akkadius/EQEmuMaps/zip/master -O maps.zip && unzip -o maps.zip && rm ./maps -rf && mv EQEmuMaps-master maps && rm maps.zip",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
|
|
@ -64,7 +64,7 @@
|
|||
{
|
||||
"label": "download quests",
|
||||
"type": "shell",
|
||||
"command": "mkdir -p build/bin && cd build/bin && cd server && git -C ./quests pull 2> /dev/null || git clone https://github.com/ProjectEQ/projecteqquests.git quests",
|
||||
"command": "mkdir -p bin && cd bin && cd server && git -C ./quests pull 2> /dev/null || git clone https://github.com/ProjectEQ/projecteqquests.git quests",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
|
|
@ -76,7 +76,7 @@
|
|||
{
|
||||
"label": "download eqemu_config",
|
||||
"type": "shell",
|
||||
"command": "mkdir -p build/bin && cd build/bin && wget --no-check-certificate https://raw.githubusercontent.com/Akkadius/EQEmuInstall/master/eqemu_config_docker.json -O eqemu_config.json",
|
||||
"command": "mkdir -p bin && cd bin && wget --no-check-certificate https://raw.githubusercontent.com/Akkadius/EQEmuInstall/master/eqemu_config_docker.json -O eqemu_config.json",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
{
|
||||
"label": "rebuild database (mariadb must be started)",
|
||||
"type": "shell",
|
||||
"command": "mkdir -p build/bin && cd build/bin && docker run -i --rm --privileged -v ${HOST_PROJECT_PATH}/build/bin:/src --network=eqemu -it eqemu/server:0.0.3 bash -c './eqemu_server.pl source_peq_db && ./eqemu_server.pl check_db_updates && ./eqemu_server.pl linux_login_server_setup'",
|
||||
"command": "mkdir -p bin && cd bin && docker run -i --rm --privileged -v ${HOST_PROJECT_PATH}/bin:/src --network=eqemu -it eqemu/server:0.0.3 bash -c './eqemu_server.pl source_peq_db && ./eqemu_server.pl check_db_updates && ./eqemu_server.pl linux_login_server_setup'",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
|
|
@ -100,7 +100,7 @@
|
|||
{
|
||||
"label": "zone 7000",
|
||||
"type": "shell",
|
||||
"command": "docker stop zone7000 | true && docker network create eqemu | true && docker run -i --rm --name zone7000 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged -v ${HOST_PROJECT_PATH}/build/bin:/src --ulimit core=10000000 --network=eqemu -p 7000:7000/udp -e LD_LIBRARY_PATH=/src/ eqemu/server:0.0.3 gdb -ex run --args ./zone dynamic_zone7000:7000",
|
||||
"command": "docker stop zone7000 | true && docker network create eqemu | true && docker run -i --rm --name zone7000 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged -v ${HOST_PROJECT_PATH}/bin:/src --ulimit core=10000000 --network=eqemu -p 7000:7000/udp -e LD_LIBRARY_PATH=/src/ eqemu/server:0.0.3 gdb -ex run --args ./zone dynamic_zone7000:7000",
|
||||
"group": {
|
||||
"kind": "test",
|
||||
"isDefault": true
|
||||
|
|
@ -109,7 +109,7 @@
|
|||
{
|
||||
"label": "zone 7001",
|
||||
"type": "shell",
|
||||
"command": "docker stop zone7001 | true && docker network create eqemu | true && docker run -i --rm --name zone7001 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged -v ${HOST_PROJECT_PATH}/build/bin:/src --ulimit core=10000000 --network=eqemu -p 7001:7001/udp -e LD_LIBRARY_PATH=/src/ eqemu/server:0.0.3 gdb -ex run --args ./zone dynamic_zone7001:7001",
|
||||
"command": "docker stop zone7001 | true && docker network create eqemu | true && docker run -i --rm --name zone7001 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged -v ${HOST_PROJECT_PATH}/bin:/src --ulimit core=10000000 --network=eqemu -p 7001:7001/udp -e LD_LIBRARY_PATH=/src/ eqemu/server:0.0.3 gdb -ex run --args ./zone dynamic_zone7001:7001",
|
||||
"group": {
|
||||
"kind": "test",
|
||||
"isDefault": true
|
||||
|
|
@ -118,7 +118,7 @@
|
|||
{
|
||||
"label": "loginserver",
|
||||
"type": "shell",
|
||||
"command": "docker stop loginserver | true && docker network create eqemu | true && docker run -i --rm --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged -v ${HOST_PROJECT_PATH}/build/bin:/src --ulimit core=10000000 --network=eqemu --name loginserver -p 5999:5999/udp -p 5998:5998/udp -e LD_LIBRARY_PATH=/src/ eqemu/server:0.0.3 gdb -ex run --args ./loginserver",
|
||||
"command": "docker stop loginserver | true && docker network create eqemu | true && docker run -i --rm --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --privileged -v ${HOST_PROJECT_PATH}/bin:/src --ulimit core=10000000 --network=eqemu --name loginserver -p 5999:5999/udp -p 5998:5998/udp -e LD_LIBRARY_PATH=/src/ eqemu/server:0.0.3 gdb -ex run --args ./loginserver",
|
||||
"group": {
|
||||
"kind": "test",
|
||||
"isDefault": true
|
||||
|
|
@ -127,7 +127,7 @@
|
|||
{
|
||||
"label": "shared_memory, world",
|
||||
"type": "shell",
|
||||
"command": "docker stop sharedmemory | true && docker stop world | true && docker network create eqemu | true && docker run --rm -v ${HOST_PROJECT_PATH}/build/bin:/src --network=eqemu --name sharedmemory eqemu/server:0.0.3 ./shared_memory && docker run --rm -v ${HOST_PROJECT_PATH}/build/bin:/src --ulimit core=10000000 -e LD_LIBRARY_PATH=/src/ --network=eqemu --name world -p 9000:9000 -p 9000:9000/udp -p 9001:9001 -p 9080:9080 eqemu/server:0.0.3 gdb -ex run ./world",
|
||||
"command": "docker stop sharedmemory | true && docker stop world | true && docker network create eqemu | true && docker run --rm -v ${HOST_PROJECT_PATH}/bin:/src --network=eqemu --name sharedmemory eqemu/server:0.0.3 ./shared_memory && docker run --rm -v ${HOST_PROJECT_PATH}/bin:/src --ulimit core=10000000 -e LD_LIBRARY_PATH=/src/ --network=eqemu --name world -p 9000:9000 -p 9000:9000/udp -p 9001:9001 -p 9080:9080 eqemu/server:0.0.3 gdb -ex run ./world",
|
||||
"group": {
|
||||
"kind": "test",
|
||||
"isDefault": true
|
||||
|
|
@ -136,7 +136,7 @@
|
|||
{
|
||||
"label": "queryserv",
|
||||
"type": "shell",
|
||||
"command": "docker stop queryserv | true && docker run --rm -v ${HOST_PROJECT_PATH}/build/bin:/src --ulimit core=10000000 -e LD_LIBRARY_PATH=/src/ --network=eqemu --name queryserv eqemu/server:0.0.3 gdb -ex run ./queryserv",
|
||||
"command": "docker stop queryserv | true && docker run --rm -v ${HOST_PROJECT_PATH}/bin:/src --ulimit core=10000000 -e LD_LIBRARY_PATH=/src/ --network=eqemu --name queryserv eqemu/server:0.0.3 gdb -ex run ./queryserv",
|
||||
"group": {
|
||||
"kind": "test",
|
||||
"isDefault": true
|
||||
|
|
@ -145,7 +145,16 @@
|
|||
{
|
||||
"label": "mariadb",
|
||||
"type": "shell",
|
||||
"command": "docker stop mariadb | true && cd build/bin && docker network create eqemu | true && docker run --rm -v ${HOST_PROJECT_PATH}/build/bin/db:/bitnami/mariadb -p 3306:3306 -e MARIADB_DATABASE=peq -e MARIADB_USER=eqemu -e MARIADB_PASSWORD=eqemupass -e ALLOW_EMPTY_PASSWORD=yes --name mariadb --network=eqemu bitnami/mariadb:latest",
|
||||
"command": "docker stop mariadb | true && cd bin && docker network create eqemu | true && docker run --rm -v ${HOST_PROJECT_PATH}/bin/db:/bitnami/mariadb -p 3306:3306 -e MARIADB_DATABASE=peq -e MARIADB_USER=eqemu -e MARIADB_PASSWORD=eqemupass -e ALLOW_EMPTY_PASSWORD=yes --name mariadb --network=eqemu bitnami/mariadb:latest",
|
||||
"group": {
|
||||
"kind": "test",
|
||||
"isDefault": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "ucs",
|
||||
"type": "shell",
|
||||
"command": "docker stop ucs | true && cd bin && docker network create eqemu | true && docker run --rm -v ${HOST_PROJECT_PATH}/bin:/src -p 7778:7778 --name ucs --network=eqemu eqemu/server:0.0.3 gdb -ex run ./ucs",
|
||||
"group": {
|
||||
"kind": "test",
|
||||
"isDefault": true
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ IF(NOT CMAKE_BUILD_TYPE)
|
|||
SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE)
|
||||
ENDIF(NOT CMAKE_BUILD_TYPE)
|
||||
|
||||
SET(CMAKE_CXX_STANDARD 11)
|
||||
SET(CMAKE_CXX_STANDARD 14)
|
||||
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
SET(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
|
|
@ -55,6 +55,7 @@ FIND_PACKAGE(MariaDB)
|
|||
FIND_PACKAGE(ZLIB)
|
||||
FIND_PACKAGE(OpenSSL)
|
||||
FIND_PACKAGE(Lua51)
|
||||
FIND_PACKAGE(LuaJit)
|
||||
FIND_PACKAGE(PerlLibs)
|
||||
FIND_PACKAGE(Sodium)
|
||||
FIND_PACKAGE(mbedTLS)
|
||||
|
|
@ -87,6 +88,12 @@ ELSE()
|
|||
MESSAGE(STATUS "* Lua: MISSING *")
|
||||
ENDIF()
|
||||
|
||||
IF(LuaJit_FOUND)
|
||||
MESSAGE(STATUS "* LuaJIT: FOUND *")
|
||||
ELSE()
|
||||
MESSAGE(STATUS "* LuaJIT: MISSING *")
|
||||
ENDIF()
|
||||
|
||||
IF(PerlLibs_FOUND)
|
||||
MESSAGE(STATUS "* Perl: FOUND *")
|
||||
ELSE()
|
||||
|
|
@ -122,6 +129,7 @@ OPTION(EQEMU_BUILD_LOGIN "Build the login server." ON)
|
|||
OPTION(EQEMU_BUILD_HC "Build the headless client." OFF)
|
||||
OPTION(EQEMU_BUILD_TESTS "Build utility tests." OFF)
|
||||
OPTION(EQEMU_BUILD_CLIENT_FILES "Build Client Import/Export Data Programs." ON)
|
||||
OPTION(EQEMU_PREFER_LUA "Build with normal Lua even if LuaJIT is found." OFF)
|
||||
|
||||
IF(EQEMU_COMMANDS_LOGGING)
|
||||
ADD_DEFINITIONS(-DCOMMANDS_LOGGING)
|
||||
|
|
@ -212,7 +220,12 @@ ELSE()
|
|||
SET(SODIUM_LIBRARY_ENABLED OFF)
|
||||
ENDIF()
|
||||
|
||||
IF(Lua51_FOUND)
|
||||
IF(LUAJIT_FOUND AND NOT (EQEMU_PREFER_LUA AND Lua51_FOUND))
|
||||
SET(LUA_LIBRARY_TYPE " LuaJIT")
|
||||
SET(LUA_LIBRARY_ENABLED ON)
|
||||
SET(LUA_LIBRARY_LIBS ${LUAJIT_LIBRARY} luabind)
|
||||
SET(LUA_LIBRARY_INCLUDE ${LUAJIT_INCLUDE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/libs/luabind")
|
||||
ELSEIF(Lua51_FOUND )
|
||||
SET(LUA_LIBRARY_TYPE " Lua 5.1")
|
||||
SET(LUA_LIBRARY_ENABLED ON)
|
||||
SET(LUA_LIBRARY_LIBS ${LUA_LIBRARY} luabind)
|
||||
|
|
@ -239,6 +252,7 @@ IF(ZLIB_FOUND)
|
|||
SET(ZLIB_LIBRARY_TYPE "zlib-ng")
|
||||
SET(ZLIB_LIBRARY_LIBS "zlibstatic")
|
||||
SET(ZLIB_LIBRARY_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/libs/zlibng")
|
||||
INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_BINARY_DIR}/libs/zlibng")
|
||||
ELSE()
|
||||
SET(ZLIB_LIBRARY_TYPE " zlib")
|
||||
SET(ZLIB_LIBRARY_LIBS ${ZLIB_LIBRARY})
|
||||
|
|
@ -299,7 +313,7 @@ IF(LUA_LIBRARY_ENABLED)
|
|||
|
||||
IF(EQEMU_BUILD_LUA)
|
||||
ADD_DEFINITIONS(-DLUA_EQEMU)
|
||||
SET(SERVER_LIBS ${SERVER_LIBS} ${LUA_LIBRARY_LIBS})
|
||||
SET(ZONE_LIBS ${LUA_LIBRARY_LIBS})
|
||||
INCLUDE_DIRECTORIES(SYSTEM "${LUA_LIBRARY_INCLUDE}")
|
||||
|
||||
OPTION(EQEMU_SANITIZE_LUA_LIBS "Sanitize Lua Libraries (Remove OS and IO standard libraries from being able to run)." ON)
|
||||
|
|
@ -334,6 +348,8 @@ IF(UNIX)
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
SET(ZONE_LIBS ${ZONE_LIBS} ${SERVER_LIBS})
|
||||
|
||||
IF(EQEMU_BUILD_LOGIN AND NOT TLS_LIBRARY_ENABLED)
|
||||
MESSAGE(FATAL_ERROR "Login server requires a TLS Library to build.")
|
||||
ENDIF()
|
||||
|
|
|
|||
|
|
@ -80,3 +80,4 @@ forum, although pull requests will be much quicker and easier on all parties.
|
|||
<a href="https://github.com/EQEmu/server/graphs/contributors">
|
||||
<img src="https://contributors-img.firebaseapp.com/image?repo=EQEmu/server" />
|
||||
</a>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,6 @@ build:
|
|||
verbosity: minimal
|
||||
after_build:
|
||||
- cmd: >-
|
||||
7z a build_x64-bots.zip C:\projects\eqemu\build\bin\RelWithDebInfo\*.exe C:\projects\eqemu\build\bin\RelWithDebInfo\*.dll C:\projects\eqemu\build\bin\RelWithDebInfo\*.pdb
|
||||
7z a build_x64-bots.zip C:\projects\eqemu\build\bin\RelWithDebInfo\*.exe C:\projects\eqemu\build\bin\RelWithDebInfo\*.dll C:\projects\eqemu\build\bin\RelWithDebInfo\*.pdb C:\projects\eqemu\build\libs\zlibng\RelWithDebInfo\*.dll
|
||||
|
||||
appveyor PushArtifact build_x64-bots.zip
|
||||
appveyor PushArtifact build_x64-bots.zip
|
||||
|
|
|
|||
|
|
@ -16,6 +16,6 @@ build:
|
|||
verbosity: minimal
|
||||
after_build:
|
||||
- cmd: >-
|
||||
7z a build_x64-no-bots.zip C:\projects\eqemu\build\bin\RelWithDebInfo\*.exe C:\projects\eqemu\build\bin\RelWithDebInfo\*.dll C:\projects\eqemu\build\bin\RelWithDebInfo\*.pdb
|
||||
7z a build_x64-no-bots.zip C:\projects\eqemu\build\bin\RelWithDebInfo\*.exe C:\projects\eqemu\build\bin\RelWithDebInfo\*.dll C:\projects\eqemu\build\bin\RelWithDebInfo\*.pdb C:\projects\eqemu\build\libs\zlibng\RelWithDebInfo\*.dll
|
||||
|
||||
appveyor PushArtifact build_x64-no-bots.zip
|
||||
appveyor PushArtifact build_x64-no-bots.zip
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ locations other than lua/
|
|||
find_path(LUA_INCLUDE_DIR lua.h
|
||||
HINTS
|
||||
ENV LUA_DIR
|
||||
PATH_SUFFIXES include/lua51 include/lua5.1 include/lua-5.1 include/lua include/luajit include
|
||||
PATH_SUFFIXES include/lua51 include/lua5.1 include/lua-5.1 include/lua include
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
|
|
@ -49,7 +49,7 @@ find_path(LUA_INCLUDE_DIR lua.h
|
|||
)
|
||||
|
||||
find_library(LUA_LIBRARY
|
||||
NAMES lua51 lua5.1 lua-5.1 lua luajit
|
||||
NAMES lua51 lua5.1 lua-5.1 lua
|
||||
HINTS
|
||||
ENV LUA_DIR
|
||||
PATH_SUFFIXES lib
|
||||
|
|
|
|||
91
cmake/FindLuaJit.cmake
Normal file
91
cmake/FindLuaJit.cmake
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
# Modified from the FindLua51 that comes with CMake
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindLuaJit
|
||||
---------
|
||||
|
||||
|
||||
|
||||
Locate LuaJit library This module defines
|
||||
|
||||
::
|
||||
|
||||
LUAJIT_FOUND, if false, do not try to link to Lua
|
||||
LUAJIT_LIBRARIES
|
||||
LUAJIT_INCLUDE_DIR, where to find lua.h
|
||||
LUAJIT_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
|
||||
|
||||
|
||||
|
||||
Note that the expected include convention is
|
||||
|
||||
::
|
||||
|
||||
#include "lua.h"
|
||||
|
||||
and not
|
||||
|
||||
::
|
||||
|
||||
#include <lua/lua.h>
|
||||
|
||||
This is because, the lua location is not standardized and may exist in
|
||||
locations other than lua/
|
||||
#]=======================================================================]
|
||||
|
||||
find_path(LUAJIT_INCLUDE_DIR lua.h
|
||||
HINTS
|
||||
ENV LUA_DIR
|
||||
PATH_SUFFIXES include/luajit include/luajit-2.0 include/luajit-2.1 include
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/csw # Blastwave
|
||||
/opt
|
||||
)
|
||||
|
||||
find_library(LUAJIT_LIBRARY
|
||||
NAMES luajit51 luajit5.1 luajit-5.1 luajit lua51
|
||||
HINTS
|
||||
ENV LUA_DIR
|
||||
PATH_SUFFIXES lib
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
/sw
|
||||
/opt/local
|
||||
/opt/csw
|
||||
/opt
|
||||
)
|
||||
|
||||
if(LUAJIT_LIBRARY)
|
||||
# include the math library for Unix
|
||||
if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU)
|
||||
find_library(LUAJIT_MATH_LIBRARY m)
|
||||
set( LUAJIT_LIBRARIES "${LUAJIT_LIBRARY};${LUAJIT_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
|
||||
# For Windows and Mac, don't need to explicitly include the math library
|
||||
else()
|
||||
set( LUAJIT_LIBRARIES "${LUAJIT_LIBRARY}" CACHE STRING "Lua Libraries")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(LUAJIT_INCLUDE_DIR AND EXISTS "${LUAJIT_INCLUDE_DIR}/lua.h")
|
||||
file(STRINGS "${LUAJIT_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"")
|
||||
|
||||
string(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([^\"]+)\".*" "\\1" LUAJIT_VERSION_STRING "${lua_version_str}")
|
||||
unset(lua_version_str)
|
||||
endif()
|
||||
|
||||
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
|
||||
# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJit
|
||||
REQUIRED_VARS LUAJIT_LIBRARIES LUAJIT_INCLUDE_DIR
|
||||
VERSION_VAR LUAJIT_VERSION_STRING)
|
||||
|
||||
mark_as_advanced(LUAJIT_INCLUDE_DIR LUAJIT_LIBRARIES LUAJIT_LIBRARY LUAJIT_MATH_LIBRARY)
|
||||
|
||||
|
|
@ -16,6 +16,7 @@ SET(common_sources
|
|||
database_instances.cpp
|
||||
dbcore.cpp
|
||||
deity.cpp
|
||||
dynamic_zone_base.cpp
|
||||
emu_constants.cpp
|
||||
emu_limits.cpp
|
||||
emu_opcodes.cpp
|
||||
|
|
@ -31,6 +32,8 @@ SET(common_sources
|
|||
eq_stream_proxy.cpp
|
||||
eqtime.cpp
|
||||
event_sub.cpp
|
||||
expedition_base.cpp
|
||||
expedition_lockout_timer.cpp
|
||||
extprofile.cpp
|
||||
faction.cpp
|
||||
file_util.cpp
|
||||
|
|
@ -67,6 +70,7 @@ SET(common_sources
|
|||
rulesys.cpp
|
||||
say_link.cpp
|
||||
serialize_buffer.cpp
|
||||
server_event_scheduler.cpp
|
||||
serverinfo.cpp
|
||||
shareddb.cpp
|
||||
skills.cpp
|
||||
|
|
@ -148,6 +152,7 @@ SET(repositories
|
|||
repositories/base/base_character_currency_repository.h
|
||||
repositories/base/base_character_data_repository.h
|
||||
repositories/base/base_character_disciplines_repository.h
|
||||
repositories/base/base_character_expedition_lockouts_repository.h
|
||||
repositories/base/base_character_inspect_messages_repository.h
|
||||
repositories/base/base_character_item_recast_repository.h
|
||||
repositories/base/base_character_languages_repository.h
|
||||
|
|
@ -166,11 +171,16 @@ SET(repositories
|
|||
repositories/base/base_char_recipe_list_repository.h
|
||||
repositories/base/base_completed_tasks_repository.h
|
||||
repositories/base/base_content_flags_repository.h
|
||||
repositories/base/base_damageshieldtypes_repository.h
|
||||
repositories/base/base_data_buckets_repository.h
|
||||
repositories/base/base_db_str_repository.h
|
||||
repositories/base/base_discovered_items_repository.h
|
||||
repositories/base/base_doors_repository.h
|
||||
repositories/base/base_dynamic_zones_repository.h
|
||||
repositories/base/base_eventlog_repository.h
|
||||
repositories/base/base_expeditions_repository.h
|
||||
repositories/base/base_expedition_lockouts_repository.h
|
||||
repositories/base/base_expedition_members_repository.h
|
||||
repositories/base/base_faction_base_data_repository.h
|
||||
repositories/base/base_faction_list_repository.h
|
||||
repositories/base/base_faction_list_mod_repository.h
|
||||
|
|
@ -244,6 +254,7 @@ SET(repositories
|
|||
repositories/base/base_rule_sets_repository.h
|
||||
repositories/base/base_rule_values_repository.h
|
||||
repositories/base/base_saylink_repository.h
|
||||
repositories/base/base_server_scheduled_events_repository.h
|
||||
repositories/base/base_skill_caps_repository.h
|
||||
repositories/base/base_spawn2_repository.h
|
||||
repositories/base/base_spawnentry_repository.h
|
||||
|
|
@ -267,7 +278,6 @@ SET(repositories
|
|||
repositories/base/base_traps_repository.h
|
||||
repositories/base/base_tributes_repository.h
|
||||
repositories/base/base_tribute_levels_repository.h
|
||||
repositories/base/base_variables_repository.h
|
||||
repositories/base/base_veteran_reward_templates_repository.h
|
||||
repositories/base/base_zone_repository.h
|
||||
repositories/base/base_zone_points_repository.h
|
||||
|
|
@ -306,6 +316,7 @@ SET(repositories
|
|||
repositories/character_currency_repository.h
|
||||
repositories/character_data_repository.h
|
||||
repositories/character_disciplines_repository.h
|
||||
repositories/character_expedition_lockouts_repository.h
|
||||
repositories/character_inspect_messages_repository.h
|
||||
repositories/character_item_recast_repository.h
|
||||
repositories/character_languages_repository.h
|
||||
|
|
@ -324,11 +335,16 @@ SET(repositories
|
|||
repositories/char_recipe_list_repository.h
|
||||
repositories/completed_tasks_repository.h
|
||||
repositories/content_flags_repository.h
|
||||
repositories/damageshieldtypes_repository.h
|
||||
repositories/data_buckets_repository.h
|
||||
repositories/db_str_repository.h
|
||||
repositories/discovered_items_repository.h
|
||||
repositories/doors_repository.h
|
||||
repositories/dynamic_zones_repository.h
|
||||
repositories/eventlog_repository.h
|
||||
repositories/expeditions_repository.h
|
||||
repositories/expedition_lockouts_repository.h
|
||||
repositories/expedition_members_repository.h
|
||||
repositories/faction_base_data_repository.h
|
||||
repositories/faction_list_repository.h
|
||||
repositories/faction_list_mod_repository.h
|
||||
|
|
@ -402,6 +418,7 @@ SET(repositories
|
|||
repositories/rule_sets_repository.h
|
||||
repositories/rule_values_repository.h
|
||||
repositories/saylink_repository.h
|
||||
repositories/server_scheduled_events_repository.h
|
||||
repositories/skill_caps_repository.h
|
||||
repositories/spawn2_repository.h
|
||||
repositories/spawnentry_repository.h
|
||||
|
|
@ -425,7 +442,6 @@ SET(repositories
|
|||
repositories/traps_repository.h
|
||||
repositories/tributes_repository.h
|
||||
repositories/tribute_levels_repository.h
|
||||
repositories/variables_repository.h
|
||||
repositories/veteran_reward_templates_repository.h
|
||||
repositories/zone_repository.h
|
||||
repositories/zone_points_repository.h
|
||||
|
|
@ -449,12 +465,14 @@ SET(common_headers
|
|||
cli/argh.h
|
||||
cli/eqemu_command_handler.h
|
||||
cli/terminal_color.hpp
|
||||
cron/croncpp.h
|
||||
database/database_dump_service.h
|
||||
data_verification.h
|
||||
database.h
|
||||
database_schema.h
|
||||
dbcore.h
|
||||
deity.h
|
||||
dynamic_zone_base.h
|
||||
emu_constants.h
|
||||
emu_limits.h
|
||||
emu_opcodes.h
|
||||
|
|
@ -478,6 +496,8 @@ SET(common_headers
|
|||
eqtime.h
|
||||
errmsg.h
|
||||
event_sub.h
|
||||
expedition_base.h
|
||||
expedition_lockout_timer.h
|
||||
extprofile.h
|
||||
faction.h
|
||||
file_util.h
|
||||
|
|
@ -529,6 +549,7 @@ SET(common_headers
|
|||
say_link.h
|
||||
seperator.h
|
||||
serialize_buffer.h
|
||||
server_event_scheduler.h
|
||||
serverinfo.h
|
||||
servertalk.h
|
||||
shareddb.h
|
||||
|
|
|
|||
|
|
@ -378,6 +378,8 @@ const char *GetClassIDName(uint8 class_id, uint8 level)
|
|||
return "Berserker Guildmaster";
|
||||
case MERCHANT:
|
||||
return "Merchant";
|
||||
case DISCORD_MERCHANT:
|
||||
return "Discord Merchant";
|
||||
case ADVENTURERECRUITER:
|
||||
return "Adventure Recruiter";
|
||||
case ADVENTUREMERCHANT:
|
||||
|
|
@ -388,6 +390,18 @@ const char *GetClassIDName(uint8 class_id, uint8 level)
|
|||
return "Tribute Master";
|
||||
case GUILD_TRIBUTE_MASTER:
|
||||
return "Guild Tribute Master";
|
||||
case GUILD_BANKER:
|
||||
return "Guild Banker";
|
||||
case NORRATHS_KEEPERS_MERCHANT:
|
||||
return "Radiant Crystal Merchant";
|
||||
case DARK_REIGN_MERCHANT:
|
||||
return "Ebon Crystal Merchant";
|
||||
case FELLOWSHIP_MASTER:
|
||||
return "Fellowship Master";
|
||||
case ALT_CURRENCY_MERCHANT:
|
||||
return "Alternate Currency Merchant";
|
||||
case MERCERNARY_MASTER:
|
||||
return "Mercenary Liaison";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@
|
|||
#define CORPSE_CLASS 62 // only seen on Danvi's Corpse in Akheva so far..
|
||||
#define TRIBUTE_MASTER 63
|
||||
#define GUILD_TRIBUTE_MASTER 64 // not sure
|
||||
#define GUILD_BANKER 66
|
||||
#define NORRATHS_KEEPERS_MERCHANT 67
|
||||
#define DARK_REIGN_MERCHANT 68
|
||||
#define FELLOWSHIP_MASTER 69
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#include "../database.h"
|
||||
#include "../rulesys.h"
|
||||
#include "../eqemu_logsys.h"
|
||||
#include "../repositories/content_flags_repository.h"
|
||||
|
||||
|
||||
WorldContentService::WorldContentService()
|
||||
|
|
@ -99,3 +100,21 @@ bool WorldContentService::IsContentFlagEnabled(const std::string& content_flag)
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
void WorldContentService::ReloadContentFlags(Database &db)
|
||||
{
|
||||
std::vector<std::string> set_content_flags;
|
||||
auto content_flags = ContentFlagsRepository::GetWhere(db, "enabled = 1");
|
||||
|
||||
set_content_flags.reserve(content_flags.size());
|
||||
for (auto &flags: content_flags) {
|
||||
set_content_flags.push_back(flags.flag_name);
|
||||
}
|
||||
|
||||
LogInfo(
|
||||
"Enabled content flags [{}]",
|
||||
implode(", ", set_content_flags)
|
||||
);
|
||||
|
||||
SetContentFlags(set_content_flags);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Database;
|
||||
|
||||
namespace Expansion {
|
||||
static const int EXPANSION_ALL = -1;
|
||||
static const int EXPANSION_FILTER_MAX = 99;
|
||||
|
|
@ -102,33 +104,33 @@ public:
|
|||
int GetCurrentExpansion() const;
|
||||
void SetCurrentExpansion(int current_expansion);
|
||||
|
||||
bool IsClassicEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::Classic; }
|
||||
bool IsTheRuinsOfKunarkEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheRuinsOfKunark; }
|
||||
bool IsTheScarsOfVeliousEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheScarsOfVelious; }
|
||||
bool IsTheShadowsOfLuclinEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheShadowsOfLuclin; }
|
||||
bool IsThePlanesOfPowerEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::ThePlanesOfPower; }
|
||||
bool IsTheLegacyOfYkeshaEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheLegacyOfYkesha; }
|
||||
bool IsLostDungeonsOfNorrathEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::LostDungeonsOfNorrath; }
|
||||
bool IsGatesOfDiscordEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::GatesOfDiscord; }
|
||||
bool IsOmensOfWarEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::OmensOfWar; }
|
||||
bool IsDragonsOfNorrathEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::DragonsOfNorrath; }
|
||||
bool IsDepthsOfDarkhollowEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::DepthsOfDarkhollow; }
|
||||
bool IsProphecyOfRoEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::ProphecyOfRo; }
|
||||
bool IsTheSerpentsSpineEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheSerpentsSpine; }
|
||||
bool IsTheBuriedSeaEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheBuriedSea; }
|
||||
bool IsSecretsOfFaydwerEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::SecretsOfFaydwer; }
|
||||
bool IsSeedsOfDestructionEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::SeedsOfDestruction; }
|
||||
bool IsUnderfootEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::Underfoot; }
|
||||
bool IsHouseOfThuleEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::HouseOfThule; }
|
||||
bool IsVeilOfAlarisEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::VeilOfAlaris; }
|
||||
bool IsRainOfFearEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::RainOfFear; }
|
||||
bool IsCallOfTheForsakenEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::CallOfTheForsaken; }
|
||||
bool IsTheDarkendSeaEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheDarkendSea; }
|
||||
bool IsTheBrokenMirrorEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheBrokenMirror; }
|
||||
bool IsEmpiresOfKunarkEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::EmpiresOfKunark; }
|
||||
bool IsRingOfScaleEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::RingOfScale; }
|
||||
bool IsTheBurningLandsEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheBurningLands; }
|
||||
bool IsTormentOfVeliousEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TormentOfVelious; }
|
||||
bool IsClassicEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::Classic || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTheRuinsOfKunarkEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheRuinsOfKunark || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTheScarsOfVeliousEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheScarsOfVelious || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTheShadowsOfLuclinEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheShadowsOfLuclin || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsThePlanesOfPowerEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::ThePlanesOfPower || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTheLegacyOfYkeshaEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheLegacyOfYkesha || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsLostDungeonsOfNorrathEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::LostDungeonsOfNorrath || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsGatesOfDiscordEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::GatesOfDiscord || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsOmensOfWarEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::OmensOfWar || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsDragonsOfNorrathEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::DragonsOfNorrath || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsDepthsOfDarkhollowEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::DepthsOfDarkhollow || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsProphecyOfRoEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::ProphecyOfRo || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTheSerpentsSpineEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheSerpentsSpine || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTheBuriedSeaEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheBuriedSea || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsSecretsOfFaydwerEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::SecretsOfFaydwer || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsSeedsOfDestructionEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::SeedsOfDestruction || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsUnderfootEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::Underfoot || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsHouseOfThuleEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::HouseOfThule || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsVeilOfAlarisEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::VeilOfAlaris || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsRainOfFearEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::RainOfFear || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsCallOfTheForsakenEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::CallOfTheForsaken || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTheDarkendSeaEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheDarkendSea || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTheBrokenMirrorEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheBrokenMirror || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsEmpiresOfKunarkEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::EmpiresOfKunark || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsRingOfScaleEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::RingOfScale || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTheBurningLandsEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TheBurningLands || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
bool IsTormentOfVeliousEnabled() { return GetCurrentExpansion() >= Expansion::ExpansionNumber::TormentOfVelious || GetCurrentExpansion() == Expansion::EXPANSION_ALL; }
|
||||
|
||||
bool IsCurrentExpansionClassic() { return current_expansion == Expansion::ExpansionNumber::Classic; }
|
||||
bool IsCurrentExpansionTheRuinsOfKunark() { return current_expansion == Expansion::ExpansionNumber::TheRuinsOfKunark; }
|
||||
|
|
@ -165,6 +167,7 @@ public:
|
|||
const std::vector<std::string> &GetContentFlags() const;
|
||||
bool IsContentFlagEnabled(const std::string& content_flag);
|
||||
void SetContentFlags(std::vector<std::string> content_flags);
|
||||
void ReloadContentFlags(Database &db);
|
||||
void SetExpansionContext();
|
||||
};
|
||||
|
||||
|
|
|
|||
876
common/cron/croncpp.h
Normal file
876
common/cron/croncpp.h
Normal file
|
|
@ -0,0 +1,876 @@
|
|||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <bitset>
|
||||
#include <cctype>
|
||||
#include <ctime>
|
||||
#include <iomanip>
|
||||
#include <algorithm>
|
||||
|
||||
#if __cplusplus > 201402L
|
||||
#include <string_view>
|
||||
#define CRONCPP_IS_CPP17
|
||||
#endif
|
||||
|
||||
namespace cron
|
||||
{
|
||||
#ifdef CRONCPP_IS_CPP17
|
||||
#define HAS_STRING_VIEW
|
||||
#define STRING_VIEW std::string_view
|
||||
#define STRING_VIEW_NPOS std::string_view::npos
|
||||
#define CONSTEXPTR constexpr
|
||||
#else
|
||||
#define STRING_VIEW std::string const &
|
||||
#define STRING_VIEW_NPOS std::string::npos
|
||||
#define CONSTEXPTR
|
||||
#endif
|
||||
|
||||
using cron_int = uint8_t;
|
||||
|
||||
constexpr std::time_t INVALID_TIME = static_cast<std::time_t>(-1);
|
||||
|
||||
constexpr size_t INVALID_CRON_INDEX = static_cast<size_t>(-1);
|
||||
|
||||
class cronexpr;
|
||||
|
||||
namespace detail
|
||||
{
|
||||
enum class cron_field
|
||||
{
|
||||
second,
|
||||
minute,
|
||||
hour_of_day,
|
||||
day_of_week,
|
||||
day_of_month,
|
||||
month,
|
||||
year
|
||||
};
|
||||
|
||||
template <typename Traits>
|
||||
static bool find_next(cronexpr const & cex,
|
||||
std::tm& date,
|
||||
size_t const dot);
|
||||
}
|
||||
|
||||
struct bad_cronexpr : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
explicit bad_cronexpr(STRING_VIEW message) :
|
||||
std::runtime_error(message.data())
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
struct cron_standard_traits
|
||||
{
|
||||
static const cron_int CRON_MIN_SECONDS = 0;
|
||||
static const cron_int CRON_MAX_SECONDS = 59;
|
||||
|
||||
static const cron_int CRON_MIN_MINUTES = 0;
|
||||
static const cron_int CRON_MAX_MINUTES = 59;
|
||||
|
||||
static const cron_int CRON_MIN_HOURS = 0;
|
||||
static const cron_int CRON_MAX_HOURS = 23;
|
||||
|
||||
static const cron_int CRON_MIN_DAYS_OF_WEEK = 0;
|
||||
static const cron_int CRON_MAX_DAYS_OF_WEEK = 6;
|
||||
|
||||
static const cron_int CRON_MIN_DAYS_OF_MONTH = 1;
|
||||
static const cron_int CRON_MAX_DAYS_OF_MONTH = 31;
|
||||
|
||||
static const cron_int CRON_MIN_MONTHS = 1;
|
||||
static const cron_int CRON_MAX_MONTHS = 12;
|
||||
|
||||
static const cron_int CRON_MAX_YEARS_DIFF = 4;
|
||||
|
||||
#ifdef CRONCPP_IS_CPP17
|
||||
static const inline std::vector<std::string> DAYS = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
|
||||
static const inline std::vector<std::string> MONTHS = { "NIL", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };
|
||||
#else
|
||||
static std::vector<std::string>& DAYS()
|
||||
{
|
||||
static std::vector<std::string> days = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
|
||||
return days;
|
||||
}
|
||||
|
||||
static std::vector<std::string>& MONTHS()
|
||||
{
|
||||
static std::vector<std::string> months = { "NIL", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };
|
||||
return months;
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
struct cron_oracle_traits
|
||||
{
|
||||
static const cron_int CRON_MIN_SECONDS = 0;
|
||||
static const cron_int CRON_MAX_SECONDS = 59;
|
||||
|
||||
static const cron_int CRON_MIN_MINUTES = 0;
|
||||
static const cron_int CRON_MAX_MINUTES = 59;
|
||||
|
||||
static const cron_int CRON_MIN_HOURS = 0;
|
||||
static const cron_int CRON_MAX_HOURS = 23;
|
||||
|
||||
static const cron_int CRON_MIN_DAYS_OF_WEEK = 1;
|
||||
static const cron_int CRON_MAX_DAYS_OF_WEEK = 7;
|
||||
|
||||
static const cron_int CRON_MIN_DAYS_OF_MONTH = 1;
|
||||
static const cron_int CRON_MAX_DAYS_OF_MONTH = 31;
|
||||
|
||||
static const cron_int CRON_MIN_MONTHS = 0;
|
||||
static const cron_int CRON_MAX_MONTHS = 11;
|
||||
|
||||
static const cron_int CRON_MAX_YEARS_DIFF = 4;
|
||||
|
||||
#ifdef CRONCPP_IS_CPP17
|
||||
static const inline std::vector<std::string> DAYS = { "NIL", "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
|
||||
static const inline std::vector<std::string> MONTHS = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };
|
||||
#else
|
||||
|
||||
static std::vector<std::string>& DAYS()
|
||||
{
|
||||
static std::vector<std::string> days = { "NIL", "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
|
||||
return days;
|
||||
}
|
||||
|
||||
static std::vector<std::string>& MONTHS()
|
||||
{
|
||||
static std::vector<std::string> months = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };
|
||||
return months;
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
struct cron_quartz_traits
|
||||
{
|
||||
static const cron_int CRON_MIN_SECONDS = 0;
|
||||
static const cron_int CRON_MAX_SECONDS = 59;
|
||||
|
||||
static const cron_int CRON_MIN_MINUTES = 0;
|
||||
static const cron_int CRON_MAX_MINUTES = 59;
|
||||
|
||||
static const cron_int CRON_MIN_HOURS = 0;
|
||||
static const cron_int CRON_MAX_HOURS = 23;
|
||||
|
||||
static const cron_int CRON_MIN_DAYS_OF_WEEK = 1;
|
||||
static const cron_int CRON_MAX_DAYS_OF_WEEK = 7;
|
||||
|
||||
static const cron_int CRON_MIN_DAYS_OF_MONTH = 1;
|
||||
static const cron_int CRON_MAX_DAYS_OF_MONTH = 31;
|
||||
|
||||
static const cron_int CRON_MIN_MONTHS = 1;
|
||||
static const cron_int CRON_MAX_MONTHS = 12;
|
||||
|
||||
static const cron_int CRON_MAX_YEARS_DIFF = 4;
|
||||
|
||||
#ifdef CRONCPP_IS_CPP17
|
||||
static const inline std::vector<std::string> DAYS = { "NIL", "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
|
||||
static const inline std::vector<std::string> MONTHS = { "NIL", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };
|
||||
#else
|
||||
static std::vector<std::string>& DAYS()
|
||||
{
|
||||
static std::vector<std::string> days = { "NIL", "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
|
||||
return days;
|
||||
}
|
||||
|
||||
static std::vector<std::string>& MONTHS()
|
||||
{
|
||||
static std::vector<std::string> months = { "NIL", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };
|
||||
return months;
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
class cronexpr;
|
||||
|
||||
template <typename Traits = cron_standard_traits>
|
||||
static cronexpr make_cron(STRING_VIEW expr);
|
||||
|
||||
class cronexpr
|
||||
{
|
||||
std::bitset<60> seconds;
|
||||
std::bitset<60> minutes;
|
||||
std::bitset<24> hours;
|
||||
std::bitset<7> days_of_week;
|
||||
std::bitset<31> days_of_month;
|
||||
std::bitset<12> months;
|
||||
|
||||
friend bool operator==(cronexpr const & e1, cronexpr const & e2);
|
||||
friend bool operator!=(cronexpr const & e1, cronexpr const & e2);
|
||||
|
||||
template <typename Traits>
|
||||
friend bool detail::find_next(cronexpr const & cex,
|
||||
std::tm& date,
|
||||
size_t const dot);
|
||||
|
||||
friend std::string to_string(cronexpr const & cex);
|
||||
|
||||
template <typename Traits>
|
||||
friend cronexpr make_cron(STRING_VIEW expr);
|
||||
};
|
||||
|
||||
inline bool operator==(cronexpr const & e1, cronexpr const & e2)
|
||||
{
|
||||
return
|
||||
e1.seconds == e2.seconds &&
|
||||
e1.minutes == e2.minutes &&
|
||||
e1.hours == e2.hours &&
|
||||
e1.days_of_week == e2.days_of_week &&
|
||||
e1.days_of_month == e2.days_of_month &&
|
||||
e1.months == e2.months;
|
||||
}
|
||||
|
||||
inline bool operator!=(cronexpr const & e1, cronexpr const & e2)
|
||||
{
|
||||
return !(e1 == e2);
|
||||
}
|
||||
|
||||
inline std::string to_string(cronexpr const & cex)
|
||||
{
|
||||
return
|
||||
cex.seconds.to_string() + " " +
|
||||
cex.minutes.to_string() + " " +
|
||||
cex.hours.to_string() + " " +
|
||||
cex.days_of_month.to_string() + " " +
|
||||
cex.months.to_string() + " " +
|
||||
cex.days_of_week.to_string();
|
||||
}
|
||||
|
||||
namespace utils
|
||||
{
|
||||
inline std::time_t tm_to_time(std::tm& date)
|
||||
{
|
||||
return std::mktime(&date);
|
||||
}
|
||||
|
||||
inline std::tm* time_to_tm(std::time_t const * date, std::tm* const out)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
errno_t err = localtime_s(out, date);
|
||||
return 0 == err ? out : nullptr;
|
||||
#else
|
||||
return localtime_r(date, out);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline std::tm to_tm(STRING_VIEW time)
|
||||
{
|
||||
std::istringstream str(time.data());
|
||||
str.imbue(std::locale(setlocale(LC_ALL, nullptr)));
|
||||
|
||||
std::tm result;
|
||||
str >> std::get_time(&result, "%Y-%m-%d %H:%M:%S");
|
||||
if (str.fail()) throw std::runtime_error("Parsing date failed!");
|
||||
|
||||
result.tm_isdst = -1; // DST info not available
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
inline std::string to_string(std::tm const & tm)
|
||||
{
|
||||
std::ostringstream str;
|
||||
str.imbue(std::locale(setlocale(LC_ALL, nullptr)));
|
||||
str << std::put_time(&tm, "%Y-%m-%d %H:%M:%S");
|
||||
if (str.fail()) throw std::runtime_error("Writing date failed!");
|
||||
|
||||
return str.str();
|
||||
}
|
||||
|
||||
inline std::string to_upper(std::string text)
|
||||
{
|
||||
std::transform(std::begin(text), std::end(text),
|
||||
std::begin(text), static_cast<int(*)(int)>(std::toupper));
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
static std::vector<std::string> split(STRING_VIEW text, char const delimiter)
|
||||
{
|
||||
std::vector<std::string> tokens;
|
||||
std::string token;
|
||||
std::istringstream tokenStream(text.data());
|
||||
while (std::getline(tokenStream, token, delimiter))
|
||||
{
|
||||
tokens.push_back(token);
|
||||
}
|
||||
return tokens;
|
||||
}
|
||||
|
||||
CONSTEXPTR inline bool contains(STRING_VIEW text, char const ch) noexcept
|
||||
{
|
||||
return STRING_VIEW_NPOS != text.find_first_of(ch);
|
||||
}
|
||||
}
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
inline cron_int to_cron_int(STRING_VIEW text)
|
||||
{
|
||||
try
|
||||
{
|
||||
return static_cast<cron_int>(std::stoul(text.data()));
|
||||
}
|
||||
catch (std::exception const & ex)
|
||||
{
|
||||
throw bad_cronexpr(ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
static std::string replace_ordinals(
|
||||
std::string text,
|
||||
std::vector<std::string> const & replacement)
|
||||
{
|
||||
for (size_t i = 0; i < replacement.size(); ++i)
|
||||
{
|
||||
auto pos = text.find(replacement[i]);
|
||||
if (std::string::npos != pos)
|
||||
text.replace(pos, 3 ,std::to_string(i));
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
static std::pair<cron_int, cron_int> make_range(
|
||||
STRING_VIEW field,
|
||||
cron_int const minval,
|
||||
cron_int const maxval)
|
||||
{
|
||||
cron_int first = 0;
|
||||
cron_int last = 0;
|
||||
if (field.size() == 1 && field[0] == '*')
|
||||
{
|
||||
first = minval;
|
||||
last = maxval;
|
||||
}
|
||||
else if (!utils::contains(field, '-'))
|
||||
{
|
||||
first = to_cron_int(field);
|
||||
last = first;
|
||||
}
|
||||
else
|
||||
{
|
||||
auto parts = utils::split(field, '-');
|
||||
if (parts.size() != 2)
|
||||
throw bad_cronexpr("Specified range requires two fields");
|
||||
|
||||
first = to_cron_int(parts[0]);
|
||||
last = to_cron_int(parts[1]);
|
||||
}
|
||||
|
||||
if (first > maxval || last > maxval)
|
||||
{
|
||||
throw bad_cronexpr("Specified range exceeds maximum");
|
||||
}
|
||||
if (first < minval || last < minval)
|
||||
{
|
||||
throw bad_cronexpr("Specified range is less than minimum");
|
||||
}
|
||||
if (first > last)
|
||||
{
|
||||
throw bad_cronexpr("Specified range start exceeds range end");
|
||||
}
|
||||
|
||||
return { first, last };
|
||||
}
|
||||
|
||||
template <size_t N>
|
||||
static void set_cron_field(
|
||||
STRING_VIEW value,
|
||||
std::bitset<N>& target,
|
||||
cron_int const minval,
|
||||
cron_int const maxval)
|
||||
{
|
||||
if(value.length() > 0 && value[value.length()-1] == ',')
|
||||
throw bad_cronexpr("Value cannot end with comma");
|
||||
|
||||
auto fields = utils::split(value, ',');
|
||||
if (fields.empty())
|
||||
throw bad_cronexpr("Expression parsing error");
|
||||
|
||||
for (auto const & field : fields)
|
||||
{
|
||||
if (!utils::contains(field, '/'))
|
||||
{
|
||||
#ifdef CRONCPP_IS_CPP17
|
||||
auto[first, last] = detail::make_range(field, minval, maxval);
|
||||
#else
|
||||
auto range = detail::make_range(field, minval, maxval);
|
||||
auto first = range.first;
|
||||
auto last = range.second;
|
||||
#endif
|
||||
for (cron_int i = first - minval; i <= last - minval; ++i)
|
||||
{
|
||||
target.set(i);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
auto parts = utils::split(field, '/');
|
||||
if (parts.size() != 2)
|
||||
throw bad_cronexpr("Incrementer must have two fields");
|
||||
|
||||
#ifdef CRONCPP_IS_CPP17
|
||||
auto[first, last] = detail::make_range(parts[0], minval, maxval);
|
||||
#else
|
||||
auto range = detail::make_range(parts[0], minval, maxval);
|
||||
auto first = range.first;
|
||||
auto last = range.second;
|
||||
#endif
|
||||
|
||||
if (!utils::contains(parts[0], '-'))
|
||||
{
|
||||
last = maxval;
|
||||
}
|
||||
|
||||
auto delta = detail::to_cron_int(parts[1]);
|
||||
if(delta <= 0)
|
||||
throw bad_cronexpr("Incrementer must be a positive value");
|
||||
|
||||
for (cron_int i = first - minval; i <= last - minval; i += delta)
|
||||
{
|
||||
target.set(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Traits>
|
||||
static void set_cron_days_of_week(
|
||||
std::string value,
|
||||
std::bitset<7>& target)
|
||||
{
|
||||
auto days = utils::to_upper(value);
|
||||
auto days_replaced = detail::replace_ordinals(
|
||||
days,
|
||||
#ifdef CRONCPP_IS_CPP17
|
||||
Traits::DAYS
|
||||
#else
|
||||
Traits::DAYS()
|
||||
#endif
|
||||
);
|
||||
|
||||
if (days_replaced.size() == 1 && days_replaced[0] == '?')
|
||||
days_replaced[0] = '*';
|
||||
|
||||
set_cron_field(
|
||||
days_replaced,
|
||||
target,
|
||||
Traits::CRON_MIN_DAYS_OF_WEEK,
|
||||
Traits::CRON_MAX_DAYS_OF_WEEK);
|
||||
}
|
||||
|
||||
template <typename Traits>
|
||||
static void set_cron_days_of_month(
|
||||
std::string value,
|
||||
std::bitset<31>& target)
|
||||
{
|
||||
if (value.size() == 1 && value[0] == '?')
|
||||
value[0] = '*';
|
||||
|
||||
set_cron_field(
|
||||
value,
|
||||
target,
|
||||
Traits::CRON_MIN_DAYS_OF_MONTH,
|
||||
Traits::CRON_MAX_DAYS_OF_MONTH);
|
||||
}
|
||||
|
||||
template <typename Traits>
|
||||
static void set_cron_month(
|
||||
std::string value,
|
||||
std::bitset<12>& target)
|
||||
{
|
||||
auto month = utils::to_upper(value);
|
||||
auto month_replaced = replace_ordinals(
|
||||
month,
|
||||
#ifdef CRONCPP_IS_CPP17
|
||||
Traits::MONTHS
|
||||
#else
|
||||
Traits::MONTHS()
|
||||
#endif
|
||||
);
|
||||
|
||||
set_cron_field(
|
||||
month_replaced,
|
||||
target,
|
||||
Traits::CRON_MIN_MONTHS,
|
||||
Traits::CRON_MAX_MONTHS);
|
||||
}
|
||||
|
||||
template <size_t N>
|
||||
inline size_t next_set_bit(
|
||||
std::bitset<N> const & target,
|
||||
size_t /*minimum*/,
|
||||
size_t /*maximum*/,
|
||||
size_t offset)
|
||||
{
|
||||
for (auto i = offset; i < N; ++i)
|
||||
{
|
||||
if (target.test(i)) return i;
|
||||
}
|
||||
|
||||
return INVALID_CRON_INDEX;
|
||||
}
|
||||
|
||||
inline void add_to_field(
|
||||
std::tm& date,
|
||||
cron_field const field,
|
||||
int const val)
|
||||
{
|
||||
switch (field)
|
||||
{
|
||||
case cron_field::second:
|
||||
date.tm_sec += val;
|
||||
break;
|
||||
case cron_field::minute:
|
||||
date.tm_min += val;
|
||||
break;
|
||||
case cron_field::hour_of_day:
|
||||
date.tm_hour += val;
|
||||
break;
|
||||
case cron_field::day_of_week:
|
||||
case cron_field::day_of_month:
|
||||
date.tm_mday += val;
|
||||
break;
|
||||
case cron_field::month:
|
||||
date.tm_mon += val;
|
||||
break;
|
||||
case cron_field::year:
|
||||
date.tm_year += val;
|
||||
break;
|
||||
}
|
||||
|
||||
if (INVALID_TIME == utils::tm_to_time(date))
|
||||
throw bad_cronexpr("Invalid time expression");
|
||||
}
|
||||
|
||||
inline void set_field(
|
||||
std::tm& date,
|
||||
cron_field const field,
|
||||
int const val)
|
||||
{
|
||||
switch (field)
|
||||
{
|
||||
case cron_field::second:
|
||||
date.tm_sec = val;
|
||||
break;
|
||||
case cron_field::minute:
|
||||
date.tm_min = val;
|
||||
break;
|
||||
case cron_field::hour_of_day:
|
||||
date.tm_hour = val;
|
||||
break;
|
||||
case cron_field::day_of_week:
|
||||
date.tm_wday = val;
|
||||
break;
|
||||
case cron_field::day_of_month:
|
||||
date.tm_mday = val;
|
||||
break;
|
||||
case cron_field::month:
|
||||
date.tm_mon = val;
|
||||
break;
|
||||
case cron_field::year:
|
||||
date.tm_year = val;
|
||||
break;
|
||||
}
|
||||
|
||||
if (INVALID_TIME == utils::tm_to_time(date))
|
||||
throw bad_cronexpr("Invalid time expression");
|
||||
}
|
||||
|
||||
inline void reset_field(
|
||||
std::tm& date,
|
||||
cron_field const field)
|
||||
{
|
||||
switch (field)
|
||||
{
|
||||
case cron_field::second:
|
||||
date.tm_sec = 0;
|
||||
break;
|
||||
case cron_field::minute:
|
||||
date.tm_min = 0;
|
||||
break;
|
||||
case cron_field::hour_of_day:
|
||||
date.tm_hour = 0;
|
||||
break;
|
||||
case cron_field::day_of_week:
|
||||
date.tm_wday = 0;
|
||||
break;
|
||||
case cron_field::day_of_month:
|
||||
date.tm_mday = 1;
|
||||
break;
|
||||
case cron_field::month:
|
||||
date.tm_mon = 0;
|
||||
break;
|
||||
case cron_field::year:
|
||||
date.tm_year = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (INVALID_TIME == utils::tm_to_time(date))
|
||||
throw bad_cronexpr("Invalid time expression");
|
||||
}
|
||||
|
||||
inline void reset_all_fields(
|
||||
std::tm& date,
|
||||
std::bitset<7> const & marked_fields)
|
||||
{
|
||||
for (size_t i = 0; i < marked_fields.size(); ++i)
|
||||
{
|
||||
if (marked_fields.test(i))
|
||||
reset_field(date, static_cast<cron_field>(i));
|
||||
}
|
||||
}
|
||||
|
||||
inline void mark_field(
|
||||
std::bitset<7> & orders,
|
||||
cron_field const field)
|
||||
{
|
||||
if (!orders.test(static_cast<size_t>(field)))
|
||||
orders.set(static_cast<size_t>(field));
|
||||
}
|
||||
|
||||
template <size_t N>
|
||||
static size_t find_next(
|
||||
std::bitset<N> const & target,
|
||||
std::tm& date,
|
||||
unsigned int const minimum,
|
||||
unsigned int const maximum,
|
||||
unsigned int const value,
|
||||
cron_field const field,
|
||||
cron_field const next_field,
|
||||
std::bitset<7> const & marked_fields)
|
||||
{
|
||||
auto next_value = next_set_bit(target, minimum, maximum, value);
|
||||
if (INVALID_CRON_INDEX == next_value)
|
||||
{
|
||||
add_to_field(date, next_field, 1);
|
||||
reset_field(date, field);
|
||||
next_value = next_set_bit(target, minimum, maximum, 0);
|
||||
}
|
||||
|
||||
if (INVALID_CRON_INDEX == next_value || next_value != value)
|
||||
{
|
||||
set_field(date, field, static_cast<int>(next_value));
|
||||
reset_all_fields(date, marked_fields);
|
||||
}
|
||||
|
||||
return next_value;
|
||||
}
|
||||
|
||||
template <typename Traits>
|
||||
static size_t find_next_day(
|
||||
std::tm& date,
|
||||
std::bitset<31> const & days_of_month,
|
||||
size_t day_of_month,
|
||||
std::bitset<7> const & days_of_week,
|
||||
size_t day_of_week,
|
||||
std::bitset<7> const & marked_fields)
|
||||
{
|
||||
unsigned int count = 0;
|
||||
unsigned int maximum = 366;
|
||||
while (
|
||||
(!days_of_month.test(day_of_month - Traits::CRON_MIN_DAYS_OF_MONTH) ||
|
||||
!days_of_week.test(day_of_week - Traits::CRON_MIN_DAYS_OF_WEEK))
|
||||
&& count++ < maximum)
|
||||
{
|
||||
add_to_field(date, cron_field::day_of_month, 1);
|
||||
|
||||
day_of_month = date.tm_mday;
|
||||
day_of_week = date.tm_wday;
|
||||
|
||||
reset_all_fields(date, marked_fields);
|
||||
}
|
||||
|
||||
return day_of_month;
|
||||
}
|
||||
|
||||
template <typename Traits>
|
||||
static bool find_next(cronexpr const & cex,
|
||||
std::tm& date,
|
||||
size_t const dot)
|
||||
{
|
||||
bool res = true;
|
||||
|
||||
std::bitset<7> marked_fields{ 0 };
|
||||
std::bitset<7> empty_list{ 0 };
|
||||
|
||||
unsigned int second = date.tm_sec;
|
||||
auto updated_second = find_next(
|
||||
cex.seconds,
|
||||
date,
|
||||
Traits::CRON_MIN_SECONDS,
|
||||
Traits::CRON_MAX_SECONDS,
|
||||
second,
|
||||
cron_field::second,
|
||||
cron_field::minute,
|
||||
empty_list);
|
||||
|
||||
if (second == updated_second)
|
||||
{
|
||||
mark_field(marked_fields, cron_field::second);
|
||||
}
|
||||
|
||||
unsigned int minute = date.tm_min;
|
||||
auto update_minute = find_next(
|
||||
cex.minutes,
|
||||
date,
|
||||
Traits::CRON_MIN_MINUTES,
|
||||
Traits::CRON_MAX_MINUTES,
|
||||
minute,
|
||||
cron_field::minute,
|
||||
cron_field::hour_of_day,
|
||||
marked_fields);
|
||||
if (minute == update_minute)
|
||||
{
|
||||
mark_field(marked_fields, cron_field::minute);
|
||||
}
|
||||
else
|
||||
{
|
||||
res = find_next<Traits>(cex, date, dot);
|
||||
if (!res) return res;
|
||||
}
|
||||
|
||||
unsigned int hour = date.tm_hour;
|
||||
auto updated_hour = find_next(
|
||||
cex.hours,
|
||||
date,
|
||||
Traits::CRON_MIN_HOURS,
|
||||
Traits::CRON_MAX_HOURS,
|
||||
hour,
|
||||
cron_field::hour_of_day,
|
||||
cron_field::day_of_week,
|
||||
marked_fields);
|
||||
if (hour == updated_hour)
|
||||
{
|
||||
mark_field(marked_fields, cron_field::hour_of_day);
|
||||
}
|
||||
else
|
||||
{
|
||||
res = find_next<Traits>(cex, date, dot);
|
||||
if (!res) return res;
|
||||
}
|
||||
|
||||
unsigned int day_of_week = date.tm_wday;
|
||||
unsigned int day_of_month = date.tm_mday;
|
||||
auto updated_day_of_month = find_next_day<Traits>(
|
||||
date,
|
||||
cex.days_of_month,
|
||||
day_of_month,
|
||||
cex.days_of_week,
|
||||
day_of_week,
|
||||
marked_fields);
|
||||
if (day_of_month == updated_day_of_month)
|
||||
{
|
||||
mark_field(marked_fields, cron_field::day_of_month);
|
||||
}
|
||||
else
|
||||
{
|
||||
res = find_next<Traits>(cex, date, dot);
|
||||
if (!res) return res;
|
||||
}
|
||||
|
||||
unsigned int month = date.tm_mon;
|
||||
auto updated_month = find_next(
|
||||
cex.months,
|
||||
date,
|
||||
Traits::CRON_MIN_MONTHS,
|
||||
Traits::CRON_MAX_MONTHS,
|
||||
month,
|
||||
cron_field::month,
|
||||
cron_field::year,
|
||||
marked_fields);
|
||||
if (month != updated_month)
|
||||
{
|
||||
if (date.tm_year - dot > Traits::CRON_MAX_YEARS_DIFF)
|
||||
return false;
|
||||
|
||||
res = find_next<Traits>(cex, date, dot);
|
||||
if (!res) return res;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Traits>
|
||||
static cronexpr make_cron(STRING_VIEW expr)
|
||||
{
|
||||
cronexpr cex;
|
||||
|
||||
if (expr.empty())
|
||||
throw bad_cronexpr("Invalid empty cron expression");
|
||||
|
||||
auto fields = utils::split(expr, ' ');
|
||||
fields.erase(
|
||||
std::remove_if(std::begin(fields), std::end(fields),
|
||||
[](STRING_VIEW s) {return s.empty(); }),
|
||||
std::end(fields));
|
||||
if (fields.size() != 6)
|
||||
throw bad_cronexpr("cron expression must have six fields");
|
||||
|
||||
detail::set_cron_field(fields[0], cex.seconds, Traits::CRON_MIN_SECONDS, Traits::CRON_MAX_SECONDS);
|
||||
detail::set_cron_field(fields[1], cex.minutes, Traits::CRON_MIN_MINUTES, Traits::CRON_MAX_MINUTES);
|
||||
detail::set_cron_field(fields[2], cex.hours, Traits::CRON_MIN_HOURS, Traits::CRON_MAX_HOURS);
|
||||
|
||||
detail::set_cron_days_of_week<Traits>(fields[5], cex.days_of_week);
|
||||
|
||||
detail::set_cron_days_of_month<Traits>(fields[3], cex.days_of_month);
|
||||
|
||||
detail::set_cron_month<Traits>(fields[4], cex.months);
|
||||
|
||||
return cex;
|
||||
}
|
||||
|
||||
template <typename Traits = cron_standard_traits>
|
||||
static std::tm cron_next(cronexpr const & cex, std::tm date)
|
||||
{
|
||||
time_t original = utils::tm_to_time(date);
|
||||
if (INVALID_TIME == original) return {};
|
||||
|
||||
if (!detail::find_next<Traits>(cex, date, date.tm_year))
|
||||
return {};
|
||||
|
||||
time_t calculated = utils::tm_to_time(date);
|
||||
if (INVALID_TIME == calculated) return {};
|
||||
|
||||
if (calculated == original)
|
||||
{
|
||||
add_to_field(date, detail::cron_field::second, 1);
|
||||
if (!detail::find_next<Traits>(cex, date, date.tm_year))
|
||||
return {};
|
||||
}
|
||||
|
||||
return date;
|
||||
}
|
||||
|
||||
template <typename Traits = cron_standard_traits>
|
||||
static std::time_t cron_next(cronexpr const & cex, std::time_t const & date)
|
||||
{
|
||||
std::tm val;
|
||||
std::tm* dt = utils::time_to_tm(&date, &val);
|
||||
if (dt == nullptr) return INVALID_TIME;
|
||||
|
||||
time_t original = utils::tm_to_time(*dt);
|
||||
if (INVALID_TIME == original) return INVALID_TIME;
|
||||
|
||||
if(!detail::find_next<Traits>(cex, *dt, dt->tm_year))
|
||||
return INVALID_TIME;
|
||||
|
||||
time_t calculated = utils::tm_to_time(*dt);
|
||||
if (INVALID_TIME == calculated) return calculated;
|
||||
|
||||
if (calculated == original)
|
||||
{
|
||||
add_to_field(*dt, detail::cron_field::second, 1);
|
||||
if(!detail::find_next<Traits>(cex, *dt, dt->tm_year))
|
||||
return INVALID_TIME;
|
||||
}
|
||||
|
||||
return utils::tm_to_time(*dt);
|
||||
}
|
||||
}
|
||||
|
|
@ -703,11 +703,11 @@ bool Database::SaveCharacterCreate(uint32 character_id, uint32 account_id, Playe
|
|||
"(%u, %u, %u, %f, %f, %f, %f, %i), "
|
||||
"(%u, %u, %u, %f, %f, %f, %f, %i), "
|
||||
"(%u, %u, %u, %f, %f, %f, %f, %i)",
|
||||
character_id, pp->binds[0].zoneId, 0, pp->binds[0].x, pp->binds[0].y, pp->binds[0].z, pp->binds[0].heading, 0,
|
||||
character_id, pp->binds[1].zoneId, 0, pp->binds[1].x, pp->binds[1].y, pp->binds[1].z, pp->binds[1].heading, 1,
|
||||
character_id, pp->binds[2].zoneId, 0, pp->binds[2].x, pp->binds[2].y, pp->binds[2].z, pp->binds[2].heading, 2,
|
||||
character_id, pp->binds[3].zoneId, 0, pp->binds[3].x, pp->binds[3].y, pp->binds[3].z, pp->binds[3].heading, 3,
|
||||
character_id, pp->binds[4].zoneId, 0, pp->binds[4].x, pp->binds[4].y, pp->binds[4].z, pp->binds[4].heading, 4
|
||||
character_id, pp->binds[0].zone_id, 0, pp->binds[0].x, pp->binds[0].y, pp->binds[0].z, pp->binds[0].heading, 0,
|
||||
character_id, pp->binds[1].zone_id, 0, pp->binds[1].x, pp->binds[1].y, pp->binds[1].z, pp->binds[1].heading, 1,
|
||||
character_id, pp->binds[2].zone_id, 0, pp->binds[2].x, pp->binds[2].y, pp->binds[2].z, pp->binds[2].heading, 2,
|
||||
character_id, pp->binds[3].zone_id, 0, pp->binds[3].x, pp->binds[3].y, pp->binds[3].z, pp->binds[3].heading, 3,
|
||||
character_id, pp->binds[4].zone_id, 0, pp->binds[4].x, pp->binds[4].y, pp->binds[4].z, pp->binds[4].heading, 4
|
||||
); results = QueryDatabase(query);
|
||||
|
||||
/* HoTT Ability */
|
||||
|
|
@ -870,36 +870,40 @@ void Database::GetCharName(uint32 char_id, char* name) {
|
|||
}
|
||||
}
|
||||
|
||||
const char* Database::GetCharNameByID(uint32 char_id) {
|
||||
std::string Database::GetCharNameByID(uint32 char_id) {
|
||||
std::string query = fmt::format("SELECT `name` FROM `character_data` WHERE id = {}", char_id);
|
||||
auto results = QueryDatabase(query);
|
||||
std::string res;
|
||||
|
||||
if (!results.Success()) {
|
||||
return "";
|
||||
return res;
|
||||
}
|
||||
|
||||
if (results.RowCount() == 0) {
|
||||
return "";
|
||||
return res;
|
||||
}
|
||||
|
||||
auto row = results.begin();
|
||||
return row[0];
|
||||
res = row[0];
|
||||
return res;
|
||||
}
|
||||
|
||||
const char* Database::GetNPCNameByID(uint32 npc_id) {
|
||||
std::string Database::GetNPCNameByID(uint32 npc_id) {
|
||||
std::string query = fmt::format("SELECT `name` FROM `npc_types` WHERE id = {}", npc_id);
|
||||
auto results = QueryDatabase(query);
|
||||
std::string res;
|
||||
|
||||
if (!results.Success()) {
|
||||
return "";
|
||||
return res;
|
||||
}
|
||||
|
||||
if (results.RowCount() == 0) {
|
||||
return "";
|
||||
return res;
|
||||
}
|
||||
|
||||
auto row = results.begin();
|
||||
return row[0];
|
||||
res = row[0];
|
||||
return res;
|
||||
}
|
||||
|
||||
bool Database::LoadVariables() {
|
||||
|
|
@ -971,10 +975,24 @@ bool Database::SetVariable(const std::string varname, const std::string &varvalu
|
|||
}
|
||||
|
||||
// Get zone starting points from DB
|
||||
bool Database::GetSafePoints(const char* short_name, uint32 version, float* safe_x, float* safe_y, float* safe_z, int16* minstatus, uint8* minlevel, char *flag_needed) {
|
||||
bool Database::GetSafePoints(const char* zone_short_name, uint32 instance_version, float* safe_x, float* safe_y, float* safe_z, float* safe_heading, int16* min_status, uint8* min_level, char *flag_needed) {
|
||||
|
||||
std::string query = StringFormat("SELECT safe_x, safe_y, safe_z, min_status, min_level, flag_needed FROM zone "
|
||||
" WHERE short_name='%s' AND (version=%i OR version=0) ORDER BY version DESC", short_name, version);
|
||||
if (zone_short_name == nullptr)
|
||||
return false;
|
||||
|
||||
std::string query = fmt::format(
|
||||
SQL(
|
||||
SELECT
|
||||
`safe_x`, `safe_y`, `safe_z`, `safe_heading`, `min_status`, `min_level`, `flag_needed`
|
||||
FROM
|
||||
zone
|
||||
WHERE
|
||||
`short_name` = '{}'
|
||||
AND
|
||||
(`version` = {} OR `version` = 0)
|
||||
ORDER BY `version` DESC
|
||||
), zone_short_name, instance_version
|
||||
);
|
||||
auto results = QueryDatabase(query);
|
||||
|
||||
if (!results.Success())
|
||||
|
|
@ -987,16 +1005,24 @@ bool Database::GetSafePoints(const char* short_name, uint32 version, float* safe
|
|||
|
||||
if (safe_x != nullptr)
|
||||
*safe_x = atof(row[0]);
|
||||
|
||||
if (safe_y != nullptr)
|
||||
*safe_y = atof(row[1]);
|
||||
|
||||
if (safe_z != nullptr)
|
||||
*safe_z = atof(row[2]);
|
||||
if (minstatus != nullptr)
|
||||
*minstatus = atoi(row[3]);
|
||||
if (minlevel != nullptr)
|
||||
*minlevel = atoi(row[4]);
|
||||
|
||||
if (safe_heading != nullptr)
|
||||
*safe_heading = atof(row[3]);
|
||||
|
||||
if (min_status != nullptr)
|
||||
*min_status = atoi(row[4]);
|
||||
|
||||
if (min_level != nullptr)
|
||||
*min_level = atoi(row[5]);
|
||||
|
||||
if (flag_needed != nullptr)
|
||||
strcpy(flag_needed, row[5]);
|
||||
strcpy(flag_needed, row[6]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1356,6 +1382,20 @@ bool Database::SetMQDetectionFlag(const char* accountname, const char* character
|
|||
return results.RowsAffected() != 0;
|
||||
}
|
||||
|
||||
bool Database::SetMQDetectionFlag(const char* accountname, const char* charactername, const std::string &hacked, const char* zone) {
|
||||
//Utilize the "hacker" table, but also give zone information.
|
||||
auto query = fmt::format("INSERT INTO hackers(account, name, hacked, zone) values('{}', '{}', '{}', '{}')",
|
||||
accountname, charactername, hacked, zone);
|
||||
auto results = QueryDatabase(query);
|
||||
|
||||
if (!results.Success())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return results.RowsAffected() != 0;
|
||||
}
|
||||
|
||||
uint8 Database::GetRaceSkill(uint8 skillid, uint8 in_race)
|
||||
{
|
||||
uint16 race_cap = 0;
|
||||
|
|
|
|||
|
|
@ -45,24 +45,6 @@ namespace EQ
|
|||
class InventoryProfile;
|
||||
}
|
||||
|
||||
struct EventLogDetails_Struct {
|
||||
uint32 id;
|
||||
char accountname[64];
|
||||
uint32 account_id;
|
||||
int16 status;
|
||||
char charactername[64];
|
||||
char targetname[64];
|
||||
char timestamp[64];
|
||||
char descriptiontype[64];
|
||||
char details[128];
|
||||
};
|
||||
|
||||
struct CharacterEventLog_Struct {
|
||||
uint32 count;
|
||||
uint8 eventid;
|
||||
EventLogDetails_Struct eld[255];
|
||||
};
|
||||
|
||||
struct npcDecayTimes_Struct {
|
||||
uint16 minlvl;
|
||||
uint16 maxlvl;
|
||||
|
|
@ -128,6 +110,7 @@ public:
|
|||
bool SaveCharacterCreate(uint32 character_id, uint32 account_id, PlayerProfile_Struct *pp);
|
||||
bool SetHackerFlag(const char *accountname, const char *charactername, const char *hacked);
|
||||
bool SetMQDetectionFlag(const char *accountname, const char *charactername, const char *hacked, const char *zone);
|
||||
bool SetMQDetectionFlag(const char *accountname, const char *charactername, const std::string &hacked, const char *zone);
|
||||
bool UpdateName(const char *oldname, const char *newname);
|
||||
bool CopyCharacter(
|
||||
std::string source_character_name,
|
||||
|
|
@ -155,8 +138,8 @@ public:
|
|||
|
||||
void GetAccountName(uint32 accountid, char* name, uint32* oLSAccountID = 0);
|
||||
void GetCharName(uint32 char_id, char* name);
|
||||
const char *GetCharNameByID(uint32 char_id);
|
||||
const char *GetNPCNameByID(uint32 npc_id);
|
||||
std::string GetCharNameByID(uint32 char_id);
|
||||
std::string GetNPCNameByID(uint32 npc_id);
|
||||
void LoginIP(uint32 AccountID, const char* LoginIP);
|
||||
|
||||
/* Instancing */
|
||||
|
|
@ -259,7 +242,7 @@ public:
|
|||
|
||||
/* General Queries */
|
||||
|
||||
bool GetSafePoints(const char* short_name, uint32 version, float* safe_x = 0, float* safe_y = 0, float* safe_z = 0, int16* minstatus = 0, uint8* minlevel = 0, char *flag_needed = nullptr);
|
||||
bool GetSafePoints(const char* zone_short_name, uint32 instance_version, float* safe_x = 0, float* safe_y = 0, float* safe_z = 0, float* safe_heading = 0, int16* minstatus = 0, uint8* minlevel = 0, char *flag_needed = nullptr);
|
||||
bool GetZoneGraveyard(const uint32 graveyard_id, uint32* graveyard_zoneid = 0, float* graveyard_x = 0, float* graveyard_y = 0, float* graveyard_z = 0, float* graveyard_heading = 0);
|
||||
bool GetZoneLongName(const char* short_name, char** long_name, char* file_name = 0, float* safe_x = 0, float* safe_y = 0, float* safe_z = 0, uint32* graveyard_id = 0, uint32* maxclients = 0);
|
||||
bool LoadPTimers(uint32 charid, PTimerList &into);
|
||||
|
|
|
|||
|
|
@ -300,8 +300,7 @@ void DatabaseDumpService::Dump()
|
|||
config->DatabaseUsername
|
||||
);
|
||||
|
||||
std::string options = "--allow-keywords --extended-insert";
|
||||
|
||||
std::string options = "--allow-keywords --extended-insert --max-allowed-packet=1G --net-buffer-length=32704";
|
||||
if (IsDumpWithNoData()) {
|
||||
options += " --no-data";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|||
|
||||
namespace Convert {
|
||||
struct BindStruct {
|
||||
/*000*/ uint32 zoneId;
|
||||
/*000*/ uint32 zone_id;
|
||||
/*004*/ float x;
|
||||
/*008*/ float y;
|
||||
/*012*/ float z;
|
||||
|
|
@ -1320,18 +1320,18 @@ bool Database::CheckDatabaseConvertPPDeblob(){
|
|||
if (rquery != ""){ results = QueryDatabase(rquery); }
|
||||
|
||||
/* Run Bind Home Convert */
|
||||
if (pp->binds[4].zoneId < 999 && !_ISNAN_(pp->binds[4].x) && !_ISNAN_(pp->binds[4].y) && !_ISNAN_(pp->binds[4].z) && !_ISNAN_(pp->binds[4].heading)) {
|
||||
if (pp->binds[4].zone_id < 999 && !_ISNAN_(pp->binds[4].x) && !_ISNAN_(pp->binds[4].y) && !_ISNAN_(pp->binds[4].z) && !_ISNAN_(pp->binds[4].heading)) {
|
||||
rquery = StringFormat("REPLACE INTO `character_bind` (id, zone_id, instance_id, x, y, z, heading, is_home)"
|
||||
" VALUES (%u, %u, %u, %f, %f, %f, %f, 1)",
|
||||
character_id, pp->binds[4].zoneId, 0, pp->binds[4].x, pp->binds[4].y, pp->binds[4].z, pp->binds[4].heading);
|
||||
character_id, pp->binds[4].zone_id, 0, pp->binds[4].x, pp->binds[4].y, pp->binds[4].z, pp->binds[4].heading);
|
||||
if (rquery != ""){ results = QueryDatabase(rquery); }
|
||||
}
|
||||
|
||||
/* Run Bind Convert */
|
||||
if (pp->binds[0].zoneId < 999 && !_ISNAN_(pp->binds[0].x) && !_ISNAN_(pp->binds[0].y) && !_ISNAN_(pp->binds[0].z) && !_ISNAN_(pp->binds[0].heading)) {
|
||||
if (pp->binds[0].zone_id < 999 && !_ISNAN_(pp->binds[0].x) && !_ISNAN_(pp->binds[0].y) && !_ISNAN_(pp->binds[0].z) && !_ISNAN_(pp->binds[0].heading)) {
|
||||
rquery = StringFormat("REPLACE INTO `character_bind` (id, zone_id, instance_id, x, y, z, heading, is_home)"
|
||||
" VALUES (%u, %u, %u, %f, %f, %f, %f, 0)",
|
||||
character_id, pp->binds[0].zoneId, 0, pp->binds[0].x, pp->binds[0].y, pp->binds[0].z, pp->binds[0].heading);
|
||||
character_id, pp->binds[0].zone_id, 0, pp->binds[0].x, pp->binds[0].y, pp->binds[0].z, pp->binds[0].heading);
|
||||
if (rquery != ""){ results = QueryDatabase(rquery); }
|
||||
}
|
||||
/* Run Language Convert */
|
||||
|
|
|
|||
|
|
@ -493,6 +493,9 @@ void Database::DeleteInstance(uint16 instance_id)
|
|||
query = StringFormat("DELETE FROM spawn_condition_values WHERE instance_id=%u", instance_id);
|
||||
QueryDatabase(query);
|
||||
|
||||
query = fmt::format("DELETE FROM dynamic_zones WHERE instance_id={}", instance_id);
|
||||
QueryDatabase(query);
|
||||
|
||||
BuryCorpsesInInstance(instance_id);
|
||||
}
|
||||
|
||||
|
|
@ -504,7 +507,7 @@ void Database::FlagInstanceByGroupLeader(uint32 zone, int16 version, uint32 char
|
|||
|
||||
char ln[128];
|
||||
memset(ln, 0, 128);
|
||||
strcpy(ln, GetGroupLeadershipInfo(gid, ln));
|
||||
GetGroupLeadershipInfo(gid, ln);
|
||||
uint32 l_charid = GetCharacterID((const char*)ln);
|
||||
uint16 l_id = GetInstanceID(zone, l_charid, version);
|
||||
|
||||
|
|
@ -582,8 +585,7 @@ void Database::PurgeExpiredInstances()
|
|||
QueryDatabase(fmt::format("DELETE FROM respawn_times WHERE instance_id IN ({})", imploded_instance_ids));
|
||||
QueryDatabase(fmt::format("DELETE FROM spawn_condition_values WHERE instance_id IN ({})", imploded_instance_ids));
|
||||
QueryDatabase(fmt::format("UPDATE character_corpses SET is_buried = 1, instance_id = 0 WHERE instance_id IN ({})", imploded_instance_ids));
|
||||
|
||||
|
||||
QueryDatabase(fmt::format("DELETE FROM dynamic_zones WHERE instance_id IN ({})", imploded_instance_ids));
|
||||
}
|
||||
|
||||
void Database::SetInstanceDuration(uint16 instance_id, uint32 new_duration)
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ namespace DatabaseSchema {
|
|||
{"character_data", "id"},
|
||||
{"character_disciplines", "id"},
|
||||
{"character_enabledtasks", "charid"},
|
||||
{"character_expedition_lockouts", "character_id"},
|
||||
{"character_exp_modifiers", "character_id"},
|
||||
{"character_inspect_messages", "id"},
|
||||
{"character_item_recast", "id"},
|
||||
{"character_languages", "id"},
|
||||
|
|
@ -114,6 +116,8 @@ namespace DatabaseSchema {
|
|||
"character_data",
|
||||
"character_disciplines",
|
||||
"character_enabledtasks",
|
||||
"character_expedition_lockouts",
|
||||
"character_exp_modifiers",
|
||||
"character_inspect_messages",
|
||||
"character_item_recast",
|
||||
"character_languages",
|
||||
|
|
@ -305,7 +309,11 @@ namespace DatabaseSchema {
|
|||
"banned_ips",
|
||||
"bug_reports",
|
||||
"bugs",
|
||||
"dynamic_zones",
|
||||
"eventlog",
|
||||
"expedition_lockouts",
|
||||
"expedition_members",
|
||||
"expeditions",
|
||||
"gm_ips",
|
||||
"group_id",
|
||||
"group_leaders",
|
||||
|
|
@ -322,7 +330,7 @@ namespace DatabaseSchema {
|
|||
"reports",
|
||||
"respawn_times",
|
||||
"saylink",
|
||||
|
||||
"server_scheduled_events",
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -223,10 +223,10 @@ bool DBcore::Open(
|
|||
)
|
||||
{
|
||||
LockMutex lock(&MDatabase);
|
||||
safe_delete(pHost);
|
||||
safe_delete(pUser);
|
||||
safe_delete(pPassword);
|
||||
safe_delete(pDatabase);
|
||||
safe_delete_array(pHost);
|
||||
safe_delete_array(pUser);
|
||||
safe_delete_array(pPassword);
|
||||
safe_delete_array(pDatabase);
|
||||
pHost = strcpy(new char[strlen(iHost) + 1], iHost);
|
||||
pUser = strcpy(new char[strlen(iUser) + 1], iUser);
|
||||
pPassword = strcpy(new char[strlen(iPassword) + 1], iPassword);
|
||||
|
|
|
|||
289
common/dynamic_zone_base.cpp
Normal file
289
common/dynamic_zone_base.cpp
Normal file
|
|
@ -0,0 +1,289 @@
|
|||
#include "dynamic_zone_base.h"
|
||||
#include "database.h"
|
||||
#include "eqemu_logsys.h"
|
||||
#include "repositories/instance_list_repository.h"
|
||||
#include "repositories/instance_list_player_repository.h"
|
||||
#include "servertalk.h"
|
||||
|
||||
DynamicZoneBase::DynamicZoneBase(DynamicZonesRepository::DynamicZoneInstance&& entry)
|
||||
{
|
||||
LoadRepositoryResult(std::move(entry));
|
||||
}
|
||||
|
||||
uint32_t DynamicZoneBase::Create()
|
||||
{
|
||||
if (m_id != 0)
|
||||
{
|
||||
return m_id;
|
||||
}
|
||||
|
||||
if (GetInstanceID() == 0)
|
||||
{
|
||||
CreateInstance();
|
||||
}
|
||||
|
||||
m_id = SaveToDatabase();
|
||||
|
||||
return m_id;
|
||||
}
|
||||
|
||||
uint32_t DynamicZoneBase::CreateInstance()
|
||||
{
|
||||
if (m_instance_id)
|
||||
{
|
||||
LogDynamicZones("CreateInstance failed, instance id [{}] already created", m_instance_id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!m_zone_id)
|
||||
{
|
||||
LogDynamicZones("CreateInstance failed, invalid zone id [{}]", m_zone_id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t unused_instance_id = 0;
|
||||
if (!GetDatabase().GetUnusedInstanceID(unused_instance_id)) // todo: doesn't this race with insert?
|
||||
{
|
||||
LogDynamicZones("Failed to find unused instance id");
|
||||
return 0;
|
||||
}
|
||||
|
||||
m_start_time = std::chrono::system_clock::now();
|
||||
m_expire_time = m_start_time + m_duration;
|
||||
|
||||
auto insert_instance = InstanceListRepository::NewEntity();
|
||||
insert_instance.id = unused_instance_id;
|
||||
insert_instance.zone = m_zone_id;
|
||||
insert_instance.version = m_zone_version;
|
||||
insert_instance.start_time = static_cast<int>(std::chrono::system_clock::to_time_t(m_start_time));
|
||||
insert_instance.duration = static_cast<int>(m_duration.count());
|
||||
insert_instance.never_expires = m_never_expires;
|
||||
|
||||
auto instance = InstanceListRepository::InsertOne(GetDatabase(), insert_instance);
|
||||
if (instance.id == 0)
|
||||
{
|
||||
LogDynamicZones("Failed to create instance [{}] for zone [{}]", unused_instance_id, m_zone_id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
m_instance_id = instance.id;
|
||||
|
||||
return m_instance_id;
|
||||
}
|
||||
|
||||
void DynamicZoneBase::LoadRepositoryResult(DynamicZonesRepository::DynamicZoneInstance&& dz_entry)
|
||||
{
|
||||
m_id = dz_entry.id;
|
||||
m_instance_id = dz_entry.instance_id;
|
||||
m_type = static_cast<DynamicZoneType>(dz_entry.type);
|
||||
m_compass.zone_id = dz_entry.compass_zone_id;
|
||||
m_compass.x = dz_entry.compass_x;
|
||||
m_compass.y = dz_entry.compass_y;
|
||||
m_compass.z = dz_entry.compass_z;
|
||||
m_safereturn.zone_id = dz_entry.safe_return_zone_id;
|
||||
m_safereturn.x = dz_entry.safe_return_x;
|
||||
m_safereturn.y = dz_entry.safe_return_y;
|
||||
m_safereturn.z = dz_entry.safe_return_z;
|
||||
m_safereturn.heading = dz_entry.safe_return_heading;
|
||||
m_zonein.x = dz_entry.zone_in_x;
|
||||
m_zonein.y = dz_entry.zone_in_y;
|
||||
m_zonein.z = dz_entry.zone_in_z;
|
||||
m_zonein.heading = dz_entry.zone_in_heading;
|
||||
m_has_zonein = (dz_entry.has_zone_in != 0);
|
||||
// instance_list portion
|
||||
m_zone_id = dz_entry.zone;
|
||||
m_zone_version = dz_entry.version;
|
||||
m_start_time = std::chrono::system_clock::from_time_t(dz_entry.start_time);
|
||||
m_duration = std::chrono::seconds(dz_entry.duration);
|
||||
m_never_expires = (dz_entry.never_expires != 0);
|
||||
m_expire_time = m_start_time + m_duration;
|
||||
}
|
||||
|
||||
uint32_t DynamicZoneBase::SaveToDatabase()
|
||||
{
|
||||
LogDynamicZonesDetail("Saving dz instance [{}] to database", m_instance_id);
|
||||
|
||||
if (m_instance_id != 0)
|
||||
{
|
||||
auto insert_dz = DynamicZonesRepository::NewEntity();
|
||||
insert_dz.instance_id = m_instance_id,
|
||||
insert_dz.type = static_cast<int>(m_type);
|
||||
insert_dz.compass_zone_id = m_compass.zone_id;
|
||||
insert_dz.compass_x = m_compass.x;
|
||||
insert_dz.compass_y = m_compass.y;
|
||||
insert_dz.compass_z = m_compass.z;
|
||||
insert_dz.safe_return_zone_id = m_safereturn.zone_id;
|
||||
insert_dz.safe_return_x = m_safereturn.x;
|
||||
insert_dz.safe_return_y = m_safereturn.y;
|
||||
insert_dz.safe_return_z = m_safereturn.z;
|
||||
insert_dz.safe_return_heading = m_safereturn.heading;
|
||||
insert_dz.zone_in_x = m_zonein.x;
|
||||
insert_dz.zone_in_y = m_zonein.y;
|
||||
insert_dz.zone_in_z = m_zonein.z;
|
||||
insert_dz.zone_in_heading = m_zonein.heading;
|
||||
insert_dz.has_zone_in = m_has_zonein;
|
||||
|
||||
auto inserted_dz = DynamicZonesRepository::InsertOne(GetDatabase(), insert_dz);
|
||||
return inserted_dz.id;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void DynamicZoneBase::AddCharacter(uint32_t character_id)
|
||||
{
|
||||
GetDatabase().AddClientToInstance(m_instance_id, character_id);
|
||||
SendInstanceAddRemoveCharacter(character_id, false); // stops client kick timer
|
||||
}
|
||||
|
||||
void DynamicZoneBase::RemoveCharacter(uint32_t character_id)
|
||||
{
|
||||
GetDatabase().RemoveClientFromInstance(m_instance_id, character_id);
|
||||
SendInstanceAddRemoveCharacter(character_id, true); // start client kick timer
|
||||
}
|
||||
|
||||
void DynamicZoneBase::RemoveAllCharacters(bool enable_removal_timers)
|
||||
{
|
||||
if (GetInstanceID() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (enable_removal_timers)
|
||||
{
|
||||
SendInstanceRemoveAllCharacters();
|
||||
}
|
||||
|
||||
GetDatabase().RemoveClientsFromInstance(GetInstanceID());
|
||||
}
|
||||
|
||||
void DynamicZoneBase::SaveInstanceMembersToDatabase(const std::vector<uint32_t>& character_ids)
|
||||
{
|
||||
LogDynamicZonesDetail("Saving [{}] members for instance [{}]", character_ids.size(), m_instance_id);
|
||||
|
||||
std::vector<InstanceListPlayerRepository::InstanceListPlayer> insert_players;
|
||||
|
||||
for (const auto& character_id : character_ids)
|
||||
{
|
||||
InstanceListPlayerRepository::InstanceListPlayer entry{};
|
||||
entry.id = static_cast<int>(m_instance_id);
|
||||
entry.charid = static_cast<int>(character_id);
|
||||
insert_players.emplace_back(entry);
|
||||
}
|
||||
|
||||
InstanceListPlayerRepository::InsertMany(GetDatabase(), insert_players);
|
||||
}
|
||||
|
||||
void DynamicZoneBase::SetCompass(const DynamicZoneLocation& location, bool update_db)
|
||||
{
|
||||
ProcessCompassChange(location);
|
||||
|
||||
if (update_db)
|
||||
{
|
||||
LogDynamicZonesDetail("Saving [{}] compass zone: [{}] xyz: ([{}], [{}], [{}])",
|
||||
m_id, m_compass.zone_id, m_compass.x, m_compass.y, m_compass.z);
|
||||
|
||||
DynamicZonesRepository::UpdateCompass(GetDatabase(),
|
||||
m_id, m_compass.zone_id, m_compass.x, m_compass.y, m_compass.z);
|
||||
|
||||
SendGlobalLocationChange(ServerOP_DzSetCompass, location);
|
||||
}
|
||||
}
|
||||
|
||||
void DynamicZoneBase::SetCompass(uint32_t zone_id, float x, float y, float z, bool update_db)
|
||||
{
|
||||
SetCompass({ zone_id, x, y, z, 0.0f }, update_db);
|
||||
}
|
||||
|
||||
void DynamicZoneBase::SetSafeReturn(const DynamicZoneLocation& location, bool update_db)
|
||||
{
|
||||
m_safereturn = location;
|
||||
|
||||
if (update_db)
|
||||
{
|
||||
LogDynamicZonesDetail("Saving [{}] safereturn zone: [{}] xyzh: ([{}], [{}], [{}], [{}])",
|
||||
m_id, m_safereturn.zone_id, m_safereturn.x, m_safereturn.y, m_safereturn.z, m_safereturn.heading);
|
||||
|
||||
DynamicZonesRepository::UpdateSafeReturn(GetDatabase(), m_id, m_safereturn.zone_id,
|
||||
m_safereturn.x, m_safereturn.y, m_safereturn.z, m_safereturn.heading);
|
||||
|
||||
SendGlobalLocationChange(ServerOP_DzSetSafeReturn, location);
|
||||
}
|
||||
}
|
||||
|
||||
void DynamicZoneBase::SetSafeReturn(uint32_t zone_id, float x, float y, float z, float heading, bool update_db)
|
||||
{
|
||||
SetSafeReturn({ zone_id, x, y, z, heading }, update_db);
|
||||
}
|
||||
|
||||
void DynamicZoneBase::SetZoneInLocation(const DynamicZoneLocation& location, bool update_db)
|
||||
{
|
||||
m_zonein = location;
|
||||
m_has_zonein = true;
|
||||
|
||||
if (update_db)
|
||||
{
|
||||
LogDynamicZonesDetail("Saving [{}] zonein zone: [{}] xyzh: ([{}], [{}], [{}], [{}])",
|
||||
m_id, m_zone_id, m_zonein.x, m_zonein.y, m_zonein.z, m_zonein.heading);
|
||||
|
||||
DynamicZonesRepository::UpdateZoneIn(GetDatabase(), m_id, m_zone_id,
|
||||
m_zonein.x, m_zonein.y, m_zonein.z, m_zonein.heading, m_has_zonein);
|
||||
|
||||
SendGlobalLocationChange(ServerOP_DzSetZoneIn, location);
|
||||
}
|
||||
}
|
||||
|
||||
void DynamicZoneBase::SetZoneInLocation(float x, float y, float z, float heading, bool update_db)
|
||||
{
|
||||
SetZoneInLocation({ 0, x, y, z, heading }, update_db);
|
||||
}
|
||||
|
||||
uint32_t DynamicZoneBase::GetSecondsRemaining() const
|
||||
{
|
||||
auto remaining = std::chrono::duration_cast<std::chrono::seconds>(GetDurationRemaining()).count();
|
||||
return std::max(0, static_cast<int>(remaining));
|
||||
}
|
||||
|
||||
std::unique_ptr<ServerPacket> DynamicZoneBase::CreateServerAddRemoveCharacterPacket(
|
||||
uint32_t character_id, bool removed)
|
||||
{
|
||||
constexpr uint32_t pack_size = sizeof(ServerDzCharacter_Struct);
|
||||
auto pack = std::make_unique<ServerPacket>(ServerOP_DzAddRemoveCharacter, pack_size);
|
||||
auto buf = reinterpret_cast<ServerDzCharacter_Struct*>(pack->pBuffer);
|
||||
buf->zone_id = GetZoneID();
|
||||
buf->instance_id = GetInstanceID();
|
||||
buf->remove = removed;
|
||||
buf->character_id = character_id;
|
||||
|
||||
return pack;
|
||||
}
|
||||
|
||||
std::unique_ptr<ServerPacket> DynamicZoneBase::CreateServerRemoveAllCharactersPacket()
|
||||
{
|
||||
constexpr uint32_t pack_size = sizeof(ServerDzCharacter_Struct);
|
||||
auto pack = std::make_unique<ServerPacket>(ServerOP_DzRemoveAllCharacters, pack_size);
|
||||
auto buf = reinterpret_cast<ServerDzCharacter_Struct*>(pack->pBuffer);
|
||||
buf->zone_id = GetZoneID();
|
||||
buf->instance_id = GetInstanceID();
|
||||
buf->remove = true;
|
||||
buf->character_id = 0;
|
||||
|
||||
return pack;
|
||||
}
|
||||
|
||||
std::unique_ptr<ServerPacket> DynamicZoneBase::CreateServerDzLocationPacket(
|
||||
uint16_t server_opcode, const DynamicZoneLocation& location)
|
||||
{
|
||||
constexpr uint32_t pack_size = sizeof(ServerDzLocation_Struct);
|
||||
auto pack = std::make_unique<ServerPacket>(server_opcode, pack_size);
|
||||
auto buf = reinterpret_cast<ServerDzLocation_Struct*>(pack->pBuffer);
|
||||
buf->dz_id = GetID();
|
||||
buf->sender_zone_id = GetCurrentZoneID();
|
||||
buf->sender_instance_id = GetCurrentInstanceID();
|
||||
buf->zone_id = location.zone_id;
|
||||
buf->x = location.x;
|
||||
buf->y = location.y;
|
||||
buf->z = location.z;
|
||||
buf->heading = location.heading;
|
||||
|
||||
return pack;
|
||||
}
|
||||
135
common/dynamic_zone_base.h
Normal file
135
common/dynamic_zone_base.h
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
#ifndef COMMON_DYNAMIC_ZONE_BASE_H
|
||||
#define COMMON_DYNAMIC_ZONE_BASE_H
|
||||
|
||||
#include "eq_constants.h"
|
||||
#include "repositories/dynamic_zones_repository.h"
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Database;
|
||||
class ServerPacket;
|
||||
|
||||
struct DynamicZoneMember
|
||||
{
|
||||
uint32_t id = 0;
|
||||
std::string name;
|
||||
DynamicZoneMemberStatus status = DynamicZoneMemberStatus::Online;
|
||||
|
||||
DynamicZoneMember() = default;
|
||||
DynamicZoneMember(uint32_t id, std::string name_)
|
||||
: id(id), name{std::move(name_)} {}
|
||||
DynamicZoneMember(uint32_t id, std::string name_, DynamicZoneMemberStatus status_)
|
||||
: id(id), name{std::move(name_)}, status(status_) {}
|
||||
|
||||
bool IsOnline() const { return status == DynamicZoneMemberStatus::Online ||
|
||||
status == DynamicZoneMemberStatus::InDynamicZone; }
|
||||
bool IsValid() const { return id != 0 && !name.empty(); }
|
||||
};
|
||||
|
||||
struct DynamicZoneLocation
|
||||
{
|
||||
uint32_t zone_id = 0;
|
||||
float x = 0.0f;
|
||||
float y = 0.0f;
|
||||
float z = 0.0f;
|
||||
float heading = 0.0f;
|
||||
|
||||
DynamicZoneLocation() = default;
|
||||
DynamicZoneLocation(uint32_t zone_id_, float x_, float y_, float z_, float heading_)
|
||||
: zone_id(zone_id_), x(x_), y(y_), z(z_), heading(heading_) {}
|
||||
};
|
||||
|
||||
class DynamicZoneBase
|
||||
{
|
||||
public:
|
||||
virtual ~DynamicZoneBase() = default;
|
||||
DynamicZoneBase(const DynamicZoneBase&) = default;
|
||||
DynamicZoneBase(DynamicZoneBase&&) = default;
|
||||
DynamicZoneBase& operator=(const DynamicZoneBase&) = default;
|
||||
DynamicZoneBase& operator=(DynamicZoneBase&&) = default;
|
||||
DynamicZoneBase() = default;
|
||||
DynamicZoneBase(uint32_t dz_id) : m_id(dz_id) {}
|
||||
DynamicZoneBase(DynamicZoneType type) : m_type(type) {}
|
||||
DynamicZoneBase(DynamicZonesRepository::DynamicZoneInstance&& entry);
|
||||
|
||||
virtual void SetSecondsRemaining(uint32_t seconds_remaining) = 0;
|
||||
|
||||
uint64_t GetExpireTime() const { return std::chrono::system_clock::to_time_t(m_expire_time); }
|
||||
uint32_t GetID() const { return m_id; }
|
||||
uint16_t GetInstanceID() const { return static_cast<uint16_t>(m_instance_id); }
|
||||
uint32_t GetMaxPlayers() const { return m_max_players; }
|
||||
uint32_t GetMinPlayers() const { return m_min_players; }
|
||||
uint32_t GetSecondsRemaining() const;
|
||||
uint16_t GetZoneID() const { return static_cast<uint16_t>(m_zone_id); }
|
||||
uint32_t GetZoneIndex() const { return (m_instance_id << 16) | (m_zone_id & 0xffff); }
|
||||
uint32_t GetZoneVersion() const { return m_zone_version; }
|
||||
DynamicZoneType GetType() const { return m_type; }
|
||||
const std::string& GetLeaderName() const { return m_leader_name; }
|
||||
const std::string& GetName() const { return m_name; }
|
||||
const DynamicZoneLocation& GetCompassLocation() const { return m_compass; }
|
||||
const DynamicZoneLocation& GetSafeReturnLocation() const { return m_safereturn; }
|
||||
const DynamicZoneLocation& GetZoneInLocation() const { return m_zonein; }
|
||||
std::chrono::system_clock::duration GetDurationRemaining() const { return m_expire_time - std::chrono::system_clock::now(); }
|
||||
|
||||
void AddCharacter(uint32_t character_id);
|
||||
uint32_t Create();
|
||||
bool HasZoneInLocation() const { return m_has_zonein; }
|
||||
bool IsExpired() const { return m_expire_time < std::chrono::system_clock::now(); }
|
||||
bool IsInstanceID(uint32_t instance_id) const { return (m_instance_id != 0 && m_instance_id == instance_id); }
|
||||
bool IsValid() const { return m_instance_id != 0; }
|
||||
bool IsSameDz(uint32_t zone_id, uint32_t instance_id) const { return zone_id == m_zone_id && instance_id == m_instance_id; }
|
||||
void RemoveAllCharacters(bool enable_removal_timers = true);
|
||||
void RemoveCharacter(uint32_t character_id);
|
||||
void SaveInstanceMembersToDatabase(const std::vector<uint32_t>& character_ids);
|
||||
void SetCompass(const DynamicZoneLocation& location, bool update_db = false);
|
||||
void SetCompass(uint32_t zone_id, float x, float y, float z, bool update_db = false);
|
||||
void SetLeaderName(const std::string& leader_name) { m_leader_name = leader_name; }
|
||||
void SetMaxPlayers(uint32_t max_players) { m_max_players = max_players; }
|
||||
void SetMinPlayers(uint32_t min_players) { m_min_players = min_players; }
|
||||
void SetName(const std::string& name) { m_name = name; }
|
||||
void SetSafeReturn(const DynamicZoneLocation& location, bool update_db = false);
|
||||
void SetSafeReturn(uint32_t zone_id, float x, float y, float z, float heading, bool update_db = false);
|
||||
void SetZoneInLocation(const DynamicZoneLocation& location, bool update_db = false);
|
||||
void SetZoneInLocation(float x, float y, float z, float heading, bool update_db = false);
|
||||
|
||||
protected:
|
||||
virtual uint16_t GetCurrentInstanceID() { return 0; }
|
||||
virtual uint16_t GetCurrentZoneID() { return 0; }
|
||||
virtual Database& GetDatabase() = 0;
|
||||
virtual void ProcessCompassChange(const DynamicZoneLocation& location) { m_compass = location; }
|
||||
virtual void SendInstanceAddRemoveCharacter(uint32_t character_id, bool remove) = 0;
|
||||
virtual void SendInstanceRemoveAllCharacters() = 0;
|
||||
virtual void SendGlobalLocationChange(uint16_t server_opcode, const DynamicZoneLocation& location) = 0;
|
||||
|
||||
uint32_t CreateInstance();
|
||||
void LoadRepositoryResult(DynamicZonesRepository::DynamicZoneInstance&& dz_entry);
|
||||
uint32_t SaveToDatabase();
|
||||
|
||||
std::unique_ptr<ServerPacket> CreateServerAddRemoveCharacterPacket(uint32_t character_id, bool removed);
|
||||
std::unique_ptr<ServerPacket> CreateServerRemoveAllCharactersPacket();
|
||||
std::unique_ptr<ServerPacket> CreateServerDzLocationPacket(uint16_t server_opcode, const DynamicZoneLocation& location);
|
||||
|
||||
uint32_t m_id = 0;
|
||||
uint32_t m_zone_id = 0;
|
||||
uint32_t m_instance_id = 0;
|
||||
uint32_t m_zone_version = 0;
|
||||
uint32_t m_min_players = 0;
|
||||
uint32_t m_max_players = 0;
|
||||
bool m_never_expires = false;
|
||||
bool m_has_zonein = false;
|
||||
std::string m_name;
|
||||
std::string m_leader_name;
|
||||
DynamicZoneType m_type{ DynamicZoneType::None };
|
||||
DynamicZoneLocation m_compass;
|
||||
DynamicZoneLocation m_safereturn;
|
||||
DynamicZoneLocation m_zonein;
|
||||
std::chrono::seconds m_duration;
|
||||
std::chrono::time_point<std::chrono::system_clock> m_start_time;
|
||||
std::chrono::time_point<std::chrono::system_clock> m_expire_time;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -136,20 +136,22 @@ N(OP_Dye),
|
|||
N(OP_DynamicWall),
|
||||
N(OP_DzAddPlayer),
|
||||
N(OP_DzChooseZone),
|
||||
N(OP_DzChooseZoneReply),
|
||||
N(OP_DzCompass),
|
||||
N(OP_DzExpeditionEndsWarning),
|
||||
N(OP_DzExpeditionInfo),
|
||||
N(OP_DzExpeditionList),
|
||||
N(OP_DzJoinExpeditionConfirm),
|
||||
N(OP_DzJoinExpeditionReply),
|
||||
N(OP_DzLeaderStatus),
|
||||
N(OP_DzExpeditionInvite),
|
||||
N(OP_DzExpeditionInviteResponse),
|
||||
N(OP_DzExpeditionLockoutTimers),
|
||||
N(OP_DzListTimers),
|
||||
N(OP_DzMakeLeader),
|
||||
N(OP_DzMemberList),
|
||||
N(OP_DzMemberStatus),
|
||||
N(OP_DzMemberListName),
|
||||
N(OP_DzMemberListStatus),
|
||||
N(OP_DzPlayerList),
|
||||
N(OP_DzQuit),
|
||||
N(OP_DzRemovePlayer),
|
||||
N(OP_DzSetLeaderName),
|
||||
N(OP_DzSwapPlayer),
|
||||
N(OP_Emote),
|
||||
N(OP_EndLootRequest),
|
||||
|
|
@ -271,6 +273,7 @@ N(OP_ItemVerifyRequest),
|
|||
N(OP_ItemViewUnknown),
|
||||
N(OP_Jump),
|
||||
N(OP_KeyRing),
|
||||
N(OP_KickPlayers),
|
||||
N(OP_KnowledgeBase),
|
||||
N(OP_LDoNButton),
|
||||
N(OP_LDoNDisarmTraps),
|
||||
|
|
|
|||
|
|
@ -464,4 +464,23 @@ namespace ZoneBlockedSpellTypes {
|
|||
const uint8 Region = 2;
|
||||
};
|
||||
|
||||
enum class DynamicZoneType
|
||||
{
|
||||
None = 0,
|
||||
Expedition,
|
||||
Tutorial,
|
||||
Task,
|
||||
Mission, // Shared Task
|
||||
Quest
|
||||
};
|
||||
|
||||
enum class DynamicZoneMemberStatus : uint8_t
|
||||
{
|
||||
Unknown = 0,
|
||||
Online,
|
||||
Offline,
|
||||
InDynamicZone,
|
||||
LinkDead
|
||||
};
|
||||
|
||||
#endif /*COMMON_EQ_CONSTANTS_H*/
|
||||
|
|
|
|||
|
|
@ -794,7 +794,7 @@ void EQ::inventory::InitializeDynamicLookups() {
|
|||
continue;
|
||||
|
||||
// direct manipulation of lookup indices is safe so long as (int)ClientVersion::<mob> == (int)MobVersion::<mob>
|
||||
inventory_dynamic_nongm_lookup_entries[iter] = std::unique_ptr<LookupEntry>(new LookupEntry(inventory_static_lookup_entries[iter]));
|
||||
inventory_dynamic_nongm_lookup_entries[iter] = std::make_unique<LookupEntry>(inventory_static_lookup_entries[iter]);
|
||||
|
||||
// clamp affected fields to the lowest standard
|
||||
inventory_dynamic_nongm_lookup_entries[iter]->InventoryTypeSize.Bank = Titanium::invtype::BANK_SIZE; // bank size
|
||||
|
|
@ -864,7 +864,7 @@ void EQ::inventory::InitializeDynamicLookups() {
|
|||
}
|
||||
|
||||
// direct manipulation of lookup indices is safe so long as (int)ClientVersion::<client> == (int)MobVersion::<client>
|
||||
inventory_dynamic_gm_lookup_entries[iter] = std::unique_ptr<LookupEntry>(new LookupEntry(inventory_static_lookup_entries[iter]));
|
||||
inventory_dynamic_gm_lookup_entries[iter] = std::make_unique<LookupEntry>(inventory_static_lookup_entries[iter]);
|
||||
|
||||
inventory_dynamic_gm_lookup_entries[iter]->PossessionsBitmask = 0; // we'll fix later
|
||||
inventory_dynamic_gm_lookup_entries[iter]->CorpseBitmask = 0; // we'll fix later
|
||||
|
|
|
|||
|
|
@ -375,13 +375,16 @@ struct NewZone_Struct {
|
|||
/*0686*/ uint16 zone_instance;
|
||||
/*0688*/ uint32 unknown688;
|
||||
/*0692*/ uint8 unknown692[8];
|
||||
// Titanium doesn't have a translator, but we can still safely add stuff under here without issues since client memcpy's only what it knows
|
||||
// Just wastes some bandwidth sending to tit clients /shrug
|
||||
/*0700*/ float fog_density;
|
||||
/*0704*/ uint32 SuspendBuffs;
|
||||
/*0708*/ uint32 FastRegenHP;
|
||||
/*0712*/ uint32 FastRegenMana;
|
||||
/*0716*/ uint32 FastRegenEndurance;
|
||||
/*0720*/ uint32 NPCAggroMaxDist;
|
||||
/*0724*/
|
||||
/*0724*/ uint32 underworld_teleport_index; // > 0 teleports w/ zone point index, invalid succors, if this value is 0, it prevents you from running off edges that would end up underworld
|
||||
/*0728*/
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -826,7 +829,7 @@ struct LeadershipAA_Struct {
|
|||
* Size: 20 Octets
|
||||
*/
|
||||
struct BindStruct {
|
||||
/*000*/ uint32 zoneId;
|
||||
/*000*/ uint32 zone_id;
|
||||
/*004*/ float x;
|
||||
/*008*/ float y;
|
||||
/*012*/ float z;
|
||||
|
|
@ -1769,7 +1772,7 @@ struct GMZoneRequest_Struct {
|
|||
/*0068*/ float x;
|
||||
/*0072*/ float y;
|
||||
/*0076*/ float z;
|
||||
/*0080*/ char unknown0080[4];
|
||||
/*0080*/ float heading;
|
||||
/*0084*/ uint32 success; // 0 if command failed, 1 if succeeded?
|
||||
/*0088*/
|
||||
// /*072*/ int8 success; // =0 client->server, =1 server->client, -X=specific error
|
||||
|
|
@ -3244,7 +3247,7 @@ struct TraderClick_Struct{
|
|||
};
|
||||
|
||||
struct FormattedMessage_Struct{
|
||||
uint32 unknown0;
|
||||
uint32 unknown0; // 1 means from world server
|
||||
uint32 string_id;
|
||||
uint32 type;
|
||||
char message[0];
|
||||
|
|
@ -3252,7 +3255,7 @@ struct FormattedMessage_Struct{
|
|||
struct SimpleMessage_Struct{
|
||||
uint32 string_id;
|
||||
uint32 color;
|
||||
uint32 unknown8;
|
||||
uint32 unknown8; // 1 means from world server
|
||||
};
|
||||
|
||||
struct GuildMemberUpdate_Struct {
|
||||
|
|
@ -4832,17 +4835,99 @@ struct BuffIcon_Struct
|
|||
BuffIconEntry_Struct entries[0];
|
||||
};
|
||||
|
||||
struct ExpeditionInfo_Struct
|
||||
struct ExpeditionInvite_Struct
|
||||
{
|
||||
/*000*/ uint32 max_players;
|
||||
/*004*/ char expedition_name[128];
|
||||
/*132*/ char leader_name[64];
|
||||
/*000*/ uint32 client_id; // unique character id
|
||||
/*004*/ uint32 unknown004; // added after titanium
|
||||
/*008*/ char inviter_name[64];
|
||||
/*072*/ char expedition_name[128];
|
||||
/*200*/ uint8 swapping; // 0: adding 1: swapping
|
||||
/*201*/ char swap_name[64]; // if swapping, swap name being removed
|
||||
/*265*/ uint8 padding[3];
|
||||
/*268*/ uint16 dz_zone_id; // dz_id zone/instance pair, sent back in reply
|
||||
/*270*/ uint16 dz_instance_id;
|
||||
};
|
||||
|
||||
struct ExpeditionJoinPrompt_Struct
|
||||
struct ExpeditionInviteResponse_Struct
|
||||
{
|
||||
/*000*/ char player_name[64];
|
||||
/*064*/ char expedition_name[64];
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004; // added after titanium
|
||||
/*008*/ uint16 dz_zone_id; // dz_id pair sent in invite
|
||||
/*010*/ uint16 dz_instance_id;
|
||||
/*012*/ uint8 accepted; // 0: declined 1: accepted
|
||||
/*013*/ uint8 swapping; // 0: adding 1: swapping (sent in invite)
|
||||
/*014*/ char swap_name[64]; // swap name sent in invite
|
||||
/*078*/ uint8 unknown078; // padding garbage?
|
||||
/*079*/ uint8 unknown079; // padding garbage?
|
||||
};
|
||||
|
||||
struct DynamicZoneInfo_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004; // added after titanium
|
||||
/*008*/ uint32 assigned; // padded bool, 0: clear info, 1: fill window info
|
||||
/*012*/ uint32 max_players;
|
||||
/*016*/ char dz_name[128];
|
||||
/*144*/ char leader_name[64];
|
||||
//*208*/ uint32 dz_type; // only in newer clients, if not 1 (expedition type) window does not auto show when dz info assigned
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberEntry_Struct
|
||||
{
|
||||
/*000*/ char name[64]; // variable length, null terminated, max 0x40 (64)
|
||||
/*064*/ uint8 online_status; // 0: unknown, 1: Online, 2: Offline, 3: In Dynamic Zone, 4: Link Dead
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberList_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 member_count;
|
||||
/*008*/ DynamicZoneMemberEntry_Struct members[0]; // variable length
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberListName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 add_name; // padded bool, 0: remove name, 1: add name with unknown status
|
||||
/*012*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimerEntry_Struct
|
||||
{
|
||||
/*000*/ char expedition_name[128]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ uint32 seconds_remaining;
|
||||
/*000*/ int32 event_type; // seen -1 (0xffffffff) for replay timers and 1 for event timers
|
||||
/*000*/ char event_name[256]; // variable length, null terminated, max 0x100 (256)
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimers_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionLockoutTimerEntry_Struct timers[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneLeaderName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommand_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommandSwap_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char add_player_name[64]; // swap to (player must confirm)
|
||||
/*072*/ char rem_player_name[64]; // swap from
|
||||
};
|
||||
|
||||
struct ExpeditionExpireWarning
|
||||
|
|
@ -4850,48 +4935,67 @@ struct ExpeditionExpireWarning
|
|||
/*008*/ uint32 minutes_remaining;
|
||||
};
|
||||
|
||||
struct ExpeditionCompassEntry_Struct
|
||||
struct DynamicZoneCompassEntry_Struct
|
||||
{
|
||||
/*000*/ uint32 enabled; //guess
|
||||
/*004*/ float y;
|
||||
/*008*/ float x;
|
||||
/*012*/ float z;
|
||||
/*000*/ uint16 dz_zone_id; // target dz id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 dz_type; // 1: Expedition, 2: Tutorial (purple), 3: Task, 4: Mission, 5: Quest (green)
|
||||
/*008*/ uint32 unknown008;
|
||||
/*012*/ float y;
|
||||
/*016*/ float x;
|
||||
/*020*/ float z;
|
||||
};
|
||||
|
||||
struct ExpeditionCompass_Struct
|
||||
struct DynamicZoneCompass_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*000*/ uint32 count;
|
||||
/*004*/ ExpeditionCompassEntry_Struct entries[0];
|
||||
/*004*/ DynamicZoneCompassEntry_Struct entries[0];
|
||||
};
|
||||
|
||||
struct ExpeditionMemberEntry_Struct
|
||||
struct DynamicZoneChooseZoneEntry_Struct
|
||||
{
|
||||
char name[64];
|
||||
char status;
|
||||
/*000*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 unknown_id1; // seen 28 00 00 00 (40), sent back in reply
|
||||
/*008*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest -- sent back in reply
|
||||
/*012*/ uint32 unknown_id2; // possibly an id based on dz type, for expeditions this was same as dz_id (zone|instance) but task dz was different
|
||||
/*016*/ char description[128]; // variable length, null terminated
|
||||
/*144*/ char leader_name[64]; // variable length, null terminated
|
||||
};
|
||||
|
||||
struct ExpeditionMemberList_Struct
|
||||
struct DynamicZoneChooseZone_Struct
|
||||
{
|
||||
/*000*/ uint32 count;
|
||||
/*004*/ ExpeditionMemberEntry_Struct entries[0];
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ DynamicZoneChooseZoneEntry_Struct choices[0];
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutEntry_Struct
|
||||
struct DynamicZoneChooseZoneReply_Struct
|
||||
{
|
||||
/*000*/ uint32 time_left;
|
||||
/*004*/ char expedition[128];
|
||||
/*132*/ char expedition_event[128];
|
||||
/*000*/ uint32 unknown000; // ff ff ff ff
|
||||
/*004*/ uint32 unknown004; // seen 69 00 00 00
|
||||
/*008*/ uint32 unknown008; // ff ff ff ff
|
||||
/*012*/ uint32 unknown_id1; // from choose zone entry message
|
||||
/*016*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*018*/ uint16 dz_instance_id;
|
||||
/*020*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest
|
||||
/*024*/ uint32 unknown_id2; // from choose zone entry message
|
||||
/*028*/ uint32 unknown028; // 00 00 00 00
|
||||
/*032*/ uint32 unknown032; // always same as unknown044
|
||||
/*036*/ uint32 unknown036;
|
||||
/*040*/ uint32 unknown040;
|
||||
/*044*/ uint32 unknown044; // always same as unknown032
|
||||
/*048*/ uint32 unknown048; // seen 01 00 00 00 and 02 00 00 00
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutList_Struct
|
||||
struct KickPlayers_Struct
|
||||
{
|
||||
/*000*/ uint32 count;
|
||||
/*004*/ ExpeditionLockoutEntry_Struct entries[0];
|
||||
};
|
||||
|
||||
struct ExpeditionLeaderSet_Struct
|
||||
{
|
||||
/*000*/ char leader_name[64];
|
||||
/*000*/ char char_name[64];
|
||||
/*064*/ uint32 unknown064; // always 0
|
||||
/*068*/ uint8 kick_expedition; // true if /kickplayers exp
|
||||
/*069*/ uint8 kick_task; // true if /kickplayers task
|
||||
/*070*/ uint8 padding[2];
|
||||
};
|
||||
|
||||
struct CorpseDrag_Struct
|
||||
|
|
|
|||
|
|
@ -127,6 +127,7 @@ void EQEmuLogSys::LoadLogSettingsDefaults()
|
|||
log_settings[Logs::HotReload].log_to_gmsay = static_cast<uint8>(Logs::General);
|
||||
log_settings[Logs::HotReload].log_to_console = static_cast<uint8>(Logs::General);
|
||||
log_settings[Logs::Loot].log_to_gmsay = static_cast<uint8>(Logs::General);
|
||||
log_settings[Logs::Scheduler].log_to_console = static_cast<uint8>(Logs::General);
|
||||
|
||||
/**
|
||||
* RFC 5424
|
||||
|
|
@ -206,11 +207,7 @@ std::string EQEmuLogSys::FormatOutMessageString(
|
|||
const std::string &in_message
|
||||
)
|
||||
{
|
||||
std::string return_string;
|
||||
|
||||
if (IsRfc5424LogCategory(log_category)) {
|
||||
return_string = "[" + GetPlatformName() + "] ";
|
||||
}
|
||||
std::string return_string = "[" + GetPlatformName() + "] ";
|
||||
|
||||
return return_string + "[" + Logs::LogCategoryName[log_category] + "] " + in_message;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -118,6 +118,9 @@ namespace Logs {
|
|||
Merchants,
|
||||
ZonePoints,
|
||||
Loot,
|
||||
Expeditions,
|
||||
DynamicZones,
|
||||
Scheduler,
|
||||
MaxCategoryID /* Don't Remove this */
|
||||
};
|
||||
|
||||
|
|
@ -194,7 +197,10 @@ namespace Logs {
|
|||
"HotReload",
|
||||
"Merchants",
|
||||
"ZonePoints",
|
||||
"Loot"
|
||||
"Loot",
|
||||
"Expeditions",
|
||||
"DynamicZones",
|
||||
"Scheduler",
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -161,6 +161,16 @@
|
|||
OutF(LogSys, Logs::Detail, Logs::Doors, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogGroup(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::Group].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::General, Logs::Group, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogGroupDetail(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::Group].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::Detail, Logs::Group, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogGuilds(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::Guilds].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::General, Logs::Guilds, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
|
|
@ -601,6 +611,41 @@
|
|||
OutF(LogSys, Logs::Detail, Logs::Loot, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogExpeditions(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::Expeditions].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::General, Logs::Expeditions, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogExpeditionsModerate(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::Expeditions].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::Moderate, Logs::Expeditions, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogExpeditionsDetail(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::Expeditions].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::Detail, Logs::Expeditions, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogDynamicZones(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::DynamicZones].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::General, Logs::DynamicZones, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogDynamicZonesDetail(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::DynamicZones].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::Detail, Logs::DynamicZones, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogScheduler(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::Scheduler].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::General, Logs::Scheduler, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define LogSchedulerDetail(message, ...) do {\
|
||||
if (LogSys.log_settings[Logs::Scheduler].is_category_enabled == 1)\
|
||||
OutF(LogSys, Logs::Detail, Logs::Scheduler, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
} while (0)
|
||||
|
||||
#define Log(debug_level, log_category, message, ...) do {\
|
||||
if (LogSys.log_settings[log_category].is_category_enabled == 1)\
|
||||
LogSys.Out(debug_level, log_category, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
|
||||
|
|
@ -694,6 +739,12 @@
|
|||
#define LogDoorsDetail(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
#define LogGroup(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
#define LogGroupDetail(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
#define LogGuilds(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
|
|
@ -952,6 +1003,21 @@
|
|||
#define LogZonePointsDetail(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
#define LogExpeditions(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
#define LogExpeditionsModerate(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
#define LogExpeditionsDetail(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
#define LogDynamicZones(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
#define LogDynamicZonesDetail(message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
#define Log(debug_level, log_category, message, ...) do {\
|
||||
} while (0)
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ namespace EQ {
|
|||
void Stop() {
|
||||
if (m_timer) {
|
||||
uv_close((uv_handle_t*)m_timer, [](uv_handle_t* handle) {
|
||||
delete handle;
|
||||
delete (uv_timer_t *)handle;
|
||||
});
|
||||
m_timer = nullptr;
|
||||
}
|
||||
|
|
|
|||
113
common/expedition_base.cpp
Normal file
113
common/expedition_base.cpp
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
#include "expedition_base.h"
|
||||
#include "repositories/expeditions_repository.h"
|
||||
#include "rulesys.h"
|
||||
|
||||
ExpeditionBase::ExpeditionBase(uint32_t id, const std::string& uuid,
|
||||
const std::string& expedition_name, const DynamicZoneMember& leader
|
||||
) :
|
||||
m_id(id),
|
||||
m_uuid(uuid),
|
||||
m_expedition_name(expedition_name),
|
||||
m_leader(leader)
|
||||
{
|
||||
}
|
||||
|
||||
void ExpeditionBase::LoadRepositoryResult(ExpeditionsRepository::ExpeditionWithLeader&& entry)
|
||||
{
|
||||
m_id = entry.id;
|
||||
m_uuid = std::move(entry.uuid);
|
||||
m_expedition_name = std::move(entry.expedition_name);
|
||||
m_add_replay_on_join = entry.add_replay_on_join;
|
||||
m_is_locked = entry.is_locked;
|
||||
m_leader.id = entry.leader_id;
|
||||
m_leader.name = std::move(entry.leader_name);
|
||||
}
|
||||
|
||||
void ExpeditionBase::AddMemberFromRepositoryResult(
|
||||
ExpeditionMembersRepository::MemberWithName&& entry)
|
||||
{
|
||||
auto status = DynamicZoneMemberStatus::Unknown;
|
||||
AddInternalMember({ entry.character_id, std::move(entry.character_name), status });
|
||||
}
|
||||
|
||||
void ExpeditionBase::AddInternalMember(const DynamicZoneMember& member)
|
||||
{
|
||||
if (!HasMember(member.id))
|
||||
{
|
||||
m_members.emplace_back(member);
|
||||
}
|
||||
}
|
||||
|
||||
void ExpeditionBase::RemoveInternalMember(uint32_t character_id)
|
||||
{
|
||||
m_members.erase(std::remove_if(m_members.begin(), m_members.end(),
|
||||
[&](const DynamicZoneMember& member) { return member.id == character_id; }
|
||||
), m_members.end());
|
||||
}
|
||||
|
||||
|
||||
bool ExpeditionBase::HasMember(uint32_t character_id)
|
||||
{
|
||||
return std::any_of(m_members.begin(), m_members.end(), [&](const DynamicZoneMember& member) {
|
||||
return member.id == character_id;
|
||||
});
|
||||
}
|
||||
|
||||
bool ExpeditionBase::HasMember(const std::string& character_name)
|
||||
{
|
||||
return std::any_of(m_members.begin(), m_members.end(), [&](const DynamicZoneMember& member) {
|
||||
return (strcasecmp(member.name.c_str(), character_name.c_str()) == 0);
|
||||
});
|
||||
}
|
||||
|
||||
DynamicZoneMember ExpeditionBase::GetMemberData(uint32_t character_id)
|
||||
{
|
||||
auto it = std::find_if(m_members.begin(), m_members.end(), [&](const DynamicZoneMember& member) {
|
||||
return member.id == character_id;
|
||||
});
|
||||
|
||||
DynamicZoneMember member_data;
|
||||
if (it != m_members.end())
|
||||
{
|
||||
member_data = *it;
|
||||
}
|
||||
return member_data;
|
||||
}
|
||||
|
||||
DynamicZoneMember ExpeditionBase::GetMemberData(const std::string& character_name)
|
||||
{
|
||||
auto it = std::find_if(m_members.begin(), m_members.end(), [&](const DynamicZoneMember& member) {
|
||||
return (strcasecmp(member.name.c_str(), character_name.c_str()) == 0);
|
||||
});
|
||||
|
||||
DynamicZoneMember member_data;
|
||||
if (it != m_members.end())
|
||||
{
|
||||
member_data = *it;
|
||||
}
|
||||
return member_data;
|
||||
}
|
||||
|
||||
bool ExpeditionBase::SetInternalMemberStatus(uint32_t character_id, DynamicZoneMemberStatus status)
|
||||
{
|
||||
if (status == DynamicZoneMemberStatus::InDynamicZone && !RuleB(Expedition, EnableInDynamicZoneStatus))
|
||||
{
|
||||
status = DynamicZoneMemberStatus::Online;
|
||||
}
|
||||
|
||||
if (character_id == m_leader.id)
|
||||
{
|
||||
m_leader.status = status;
|
||||
}
|
||||
|
||||
auto it = std::find_if(m_members.begin(), m_members.end(),
|
||||
[&](const DynamicZoneMember& member) { return member.id == character_id; });
|
||||
|
||||
if (it != m_members.end() && it->status != status)
|
||||
{
|
||||
it->status = status;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
56
common/expedition_base.h
Normal file
56
common/expedition_base.h
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
#ifndef COMMON_EXPEDITION_BASE_H
|
||||
#define COMMON_EXPEDITION_BASE_H
|
||||
|
||||
#include "dynamic_zone_base.h"
|
||||
#include "repositories/expeditions_repository.h"
|
||||
#include "repositories/expedition_members_repository.h"
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class ExpeditionBase
|
||||
{
|
||||
public:
|
||||
virtual ~ExpeditionBase() = default;
|
||||
ExpeditionBase(const ExpeditionBase&) = default;
|
||||
ExpeditionBase(ExpeditionBase&&) = default;
|
||||
ExpeditionBase& operator=(const ExpeditionBase&) = default;
|
||||
ExpeditionBase& operator=(ExpeditionBase&&) = default;
|
||||
|
||||
uint32_t GetID() const { return m_id; }
|
||||
uint32_t GetLeaderID() const { return m_leader.id; }
|
||||
uint32_t GetMemberCount() const { return static_cast<uint32_t>(m_members.size()); }
|
||||
const std::string& GetName() const { return m_expedition_name; }
|
||||
const std::string& GetLeaderName() const { return m_leader.name; }
|
||||
const std::string& GetUUID() const { return m_uuid; }
|
||||
const std::vector<DynamicZoneMember>& GetMembers() const { return m_members; }
|
||||
|
||||
void AddInternalMember(const DynamicZoneMember& member);
|
||||
void ClearInternalMembers() { m_members.clear(); }
|
||||
bool HasMember(const std::string& character_name);
|
||||
bool HasMember(uint32_t character_id);
|
||||
bool IsEmpty() const { return m_members.empty(); }
|
||||
void RemoveInternalMember(uint32_t character_id);
|
||||
bool SetInternalMemberStatus(uint32_t character_id, DynamicZoneMemberStatus status);
|
||||
|
||||
void LoadRepositoryResult(ExpeditionsRepository::ExpeditionWithLeader&& entry);
|
||||
void AddMemberFromRepositoryResult(ExpeditionMembersRepository::MemberWithName&& entry);
|
||||
|
||||
protected:
|
||||
ExpeditionBase() = default;
|
||||
ExpeditionBase(uint32_t id, const std::string& uuid, const std::string& expedition_name,
|
||||
const DynamicZoneMember& leader);
|
||||
|
||||
DynamicZoneMember GetMemberData(uint32_t character_id);
|
||||
DynamicZoneMember GetMemberData(const std::string& character_name);
|
||||
|
||||
uint32_t m_id = 0;
|
||||
bool m_is_locked = false;
|
||||
bool m_add_replay_on_join = true;
|
||||
std::string m_uuid;
|
||||
std::string m_expedition_name;
|
||||
DynamicZoneMember m_leader;
|
||||
std::vector<DynamicZoneMember> m_members;
|
||||
};
|
||||
|
||||
#endif
|
||||
101
common/expedition_lockout_timer.cpp
Normal file
101
common/expedition_lockout_timer.cpp
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include "expedition_lockout_timer.h"
|
||||
#include "../common/string_util.h"
|
||||
#include "../common/rulesys.h"
|
||||
#include "../common/util/uuid.h"
|
||||
#include <fmt/format.h>
|
||||
|
||||
const char* const DZ_REPLAY_TIMER_NAME = "Replay Timer"; // see December 14, 2016 patch notes
|
||||
|
||||
ExpeditionLockoutTimer::ExpeditionLockoutTimer(
|
||||
std::string expedition_uuid, std::string expedition_name,
|
||||
std::string event_name, uint64_t expire_time, uint32_t duration
|
||||
) :
|
||||
m_expedition_uuid{std::move(expedition_uuid)},
|
||||
m_expedition_name{std::move(expedition_name)},
|
||||
m_event_name{std::move(event_name)},
|
||||
m_expire_time(std::chrono::system_clock::from_time_t(expire_time)),
|
||||
m_duration(duration)
|
||||
{
|
||||
if (m_event_name == DZ_REPLAY_TIMER_NAME)
|
||||
{
|
||||
m_is_replay_timer = true;
|
||||
}
|
||||
}
|
||||
|
||||
ExpeditionLockoutTimer ExpeditionLockoutTimer::CreateLockout(
|
||||
const std::string& expedition_name, const std::string& event_name, uint32_t seconds, std::string uuid)
|
||||
{
|
||||
seconds = static_cast<uint32_t>(seconds * RuleR(Expedition, LockoutDurationMultiplier));
|
||||
|
||||
if (uuid.empty())
|
||||
{
|
||||
uuid = EQ::Util::UUID::Generate().ToString();
|
||||
}
|
||||
|
||||
ExpeditionLockoutTimer lockout{uuid, expedition_name, event_name, 0, seconds};
|
||||
lockout.Reset(); // sets expire time
|
||||
return lockout;
|
||||
}
|
||||
|
||||
uint32_t ExpeditionLockoutTimer::GetSecondsRemaining() const
|
||||
{
|
||||
auto now = std::chrono::system_clock::now();
|
||||
if (m_expire_time > now)
|
||||
{
|
||||
auto remaining = m_expire_time - now;
|
||||
return static_cast<uint32_t>(std::chrono::duration_cast<std::chrono::seconds>(remaining).count());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
ExpeditionLockoutTimer::DaysHoursMinutes ExpeditionLockoutTimer::GetDaysHoursMinutesRemaining() const
|
||||
{
|
||||
auto seconds = GetSecondsRemaining();
|
||||
return ExpeditionLockoutTimer::DaysHoursMinutes{
|
||||
fmt::format_int(seconds / 86400).str(), // days
|
||||
fmt::format_int((seconds / 3600) % 24).str(), // hours
|
||||
fmt::format_int((seconds / 60) % 60).str() // minutes
|
||||
};
|
||||
}
|
||||
|
||||
bool ExpeditionLockoutTimer::IsSameLockout(const ExpeditionLockoutTimer& compare_lockout) const
|
||||
{
|
||||
return compare_lockout.IsSameLockout(GetExpeditionName(), GetEventName());
|
||||
}
|
||||
|
||||
bool ExpeditionLockoutTimer::IsSameLockout(
|
||||
const std::string& expedition_name, const std::string& event_name) const
|
||||
{
|
||||
return GetExpeditionName() == expedition_name && GetEventName() == event_name;
|
||||
}
|
||||
|
||||
void ExpeditionLockoutTimer::AddLockoutTime(int seconds)
|
||||
{
|
||||
seconds = static_cast<uint32_t>(seconds * RuleR(Expedition, LockoutDurationMultiplier));
|
||||
|
||||
auto new_duration = std::max(0, static_cast<int>(m_duration.count()) + seconds);
|
||||
|
||||
auto start_time = m_expire_time - m_duration;
|
||||
m_duration = std::chrono::seconds(new_duration);
|
||||
m_expire_time = start_time + m_duration;
|
||||
}
|
||||
76
common/expedition_lockout_timer.h
Normal file
76
common/expedition_lockout_timer.h
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef EXPEDITION_LOCKOUT_TIMER_H
|
||||
#define EXPEDITION_LOCKOUT_TIMER_H
|
||||
|
||||
#include <chrono>
|
||||
#include <string>
|
||||
|
||||
extern const char* const DZ_REPLAY_TIMER_NAME;
|
||||
|
||||
class ExpeditionLockoutTimer
|
||||
{
|
||||
public:
|
||||
ExpeditionLockoutTimer() = default;
|
||||
ExpeditionLockoutTimer(
|
||||
std::string expedition_uuid, std::string expedition_name,
|
||||
std::string event_name, uint64_t expire_time, uint32_t duration);
|
||||
|
||||
static ExpeditionLockoutTimer CreateLockout(
|
||||
const std::string& expedition_name, const std::string& event_name,
|
||||
uint32_t seconds, std::string uuid = {});
|
||||
|
||||
struct DaysHoursMinutes
|
||||
{
|
||||
std::string days;
|
||||
std::string hours;
|
||||
std::string mins;
|
||||
};
|
||||
|
||||
void AddLockoutTime(int seconds);
|
||||
uint32_t GetDuration() const { return static_cast<uint32_t>(m_duration.count()); }
|
||||
uint64_t GetExpireTime() const { return std::chrono::system_clock::to_time_t(m_expire_time); }
|
||||
uint64_t GetStartTime() const { return std::chrono::system_clock::to_time_t(m_expire_time - m_duration); }
|
||||
uint32_t GetSecondsRemaining() const;
|
||||
DaysHoursMinutes GetDaysHoursMinutesRemaining() const;
|
||||
const std::string& GetExpeditionName() const { return m_expedition_name; }
|
||||
const std::string& GetExpeditionUUID() const { return m_expedition_uuid; }
|
||||
const std::string& GetEventName() const { return m_event_name; }
|
||||
bool IsExpired() const { return GetSecondsRemaining() == 0; }
|
||||
bool IsFromExpedition(const std::string& uuid) const { return uuid == m_expedition_uuid; }
|
||||
bool IsReplayTimer() const { return m_is_replay_timer; }
|
||||
bool IsSameLockout(const ExpeditionLockoutTimer& compare_lockout) const;
|
||||
bool IsSameLockout(const std::string& expedition_name, const std::string& event_name) const;
|
||||
void Reset() { m_expire_time = std::chrono::system_clock::now() + m_duration; }
|
||||
void SetDuration(uint32_t seconds) { m_duration = std::chrono::seconds(seconds); }
|
||||
void SetExpireTime(uint64_t expire_time) { m_expire_time = std::chrono::system_clock::from_time_t(expire_time); }
|
||||
void SetUUID(const std::string& uuid) { m_expedition_uuid = uuid; }
|
||||
|
||||
private:
|
||||
bool m_is_replay_timer = false;
|
||||
std::string m_expedition_uuid; // expedition received in
|
||||
std::string m_expedition_name;
|
||||
std::string m_event_name;
|
||||
std::chrono::seconds m_duration;
|
||||
std::chrono::time_point<std::chrono::system_clock> m_expire_time;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
EQ::Net::ConsoleServer::ConsoleServer(const std::string &addr, int port)
|
||||
{
|
||||
m_server.reset(new EQ::Net::TCPServer());
|
||||
m_server = std::make_unique<EQ::Net::TCPServer>();
|
||||
m_server->Listen(addr, port, false, [this](std::shared_ptr<EQ::Net::TCPConnection> connection) {
|
||||
ConsoleServerConnection *c = new ConsoleServerConnection(this, connection);
|
||||
m_connections.insert(std::make_pair(c->GetUUID(), std::unique_ptr<ConsoleServerConnection>(c)));
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#include "../eqemu_logsys.h"
|
||||
|
||||
EQ::Net::ServertalkClient::ServertalkClient(const std::string &addr, int port, bool ipv6, const std::string &identifier, const std::string &credentials)
|
||||
: m_timer(std::unique_ptr<EQ::Timer>(new EQ::Timer(100, true, std::bind(&EQ::Net::ServertalkClient::Connect, this))))
|
||||
: m_timer(std::make_unique<EQ::Timer>(100, true, std::bind(&EQ::Net::ServertalkClient::Connect, this)))
|
||||
{
|
||||
m_port = port;
|
||||
m_ipv6 = ipv6;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#include "../eqemu_logsys.h"
|
||||
|
||||
EQ::Net::ServertalkLegacyClient::ServertalkLegacyClient(const std::string &addr, int port, bool ipv6)
|
||||
: m_timer(std::unique_ptr<EQ::Timer>(new EQ::Timer(100, true, std::bind(&EQ::Net::ServertalkLegacyClient::Connect, this))))
|
||||
: m_timer(std::make_unique<EQ::Timer>(100, true, std::bind(&EQ::Net::ServertalkLegacyClient::Connect, this)))
|
||||
{
|
||||
m_port = port;
|
||||
m_ipv6 = ipv6;
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ void EQ::Net::ServertalkServer::Listen(const ServertalkServerOptions& opts)
|
|||
m_encrypted = opts.encrypted;
|
||||
m_credentials = opts.credentials;
|
||||
m_allow_downgrade = opts.allow_downgrade;
|
||||
m_server.reset(new EQ::Net::TCPServer());
|
||||
m_server = std::make_unique<EQ::Net::TCPServer>();
|
||||
m_server->Listen(opts.port, opts.ipv6, [this](std::shared_ptr<EQ::Net::TCPConnection> connection) {
|
||||
m_unident_connections.push_back(std::make_shared<ServertalkServerConnection>(connection, this, m_encrypted, m_allow_downgrade));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#include "../event/event_loop.h"
|
||||
|
||||
void on_close_handle(uv_handle_t* handle) {
|
||||
delete handle;
|
||||
delete (uv_tcp_t *)handle;
|
||||
}
|
||||
|
||||
EQ::Net::TCPConnection::TCPConnection(uv_tcp_t *socket)
|
||||
|
|
@ -115,7 +115,7 @@ void EQ::Net::TCPConnection::Disconnect()
|
|||
connection->m_on_disconnect_cb(connection);
|
||||
}
|
||||
|
||||
delete handle;
|
||||
delete (uv_tcp_t *)handle;
|
||||
});
|
||||
m_socket = nullptr;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#include "../event/event_loop.h"
|
||||
|
||||
void on_close_tcp_server_handle(uv_handle_t* handle) {
|
||||
delete handle;
|
||||
delete (uv_tcp_t *)handle;
|
||||
}
|
||||
|
||||
EQ::Net::TCPServer::TCPServer()
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ struct EQ::Net::WebsocketServer::Impl
|
|||
|
||||
EQ::Net::WebsocketServer::WebsocketServer(const std::string &addr, int port)
|
||||
{
|
||||
_impl.reset(new Impl());
|
||||
_impl->server.reset(new EQ::Net::TCPServer());
|
||||
_impl = std::make_unique<Impl>();
|
||||
_impl->server = std::make_unique<EQ::Net::TCPServer>();
|
||||
_impl->server->Listen(addr, port, false, [this](std::shared_ptr<EQ::Net::TCPConnection> connection) {
|
||||
auto wsc = _impl->ws_server.get_connection();
|
||||
WebsocketServerConnection *c = new WebsocketServerConnection(this, connection, wsc);
|
||||
|
|
@ -53,7 +53,7 @@ EQ::Net::WebsocketServer::WebsocketServer(const std::string &addr, int port)
|
|||
return websocketpp::lib::error_code();
|
||||
});
|
||||
|
||||
_impl->ping_timer.reset(new EQ::Timer(5000, true, [this](EQ::Timer *t) {
|
||||
_impl->ping_timer = std::make_unique<EQ::Timer>(5000, true, [this](EQ::Timer *t) {
|
||||
auto iter = _impl->connections.begin();
|
||||
|
||||
while (iter != _impl->connections.end()) {
|
||||
|
|
@ -67,7 +67,7 @@ EQ::Net::WebsocketServer::WebsocketServer(const std::string &addr, int port)
|
|||
|
||||
iter++;
|
||||
}
|
||||
}));
|
||||
});
|
||||
|
||||
_impl->methods.insert(std::make_pair("login", MethodHandlerEntry(std::bind(&WebsocketServer::Login, this, std::placeholders::_1, std::placeholders::_2), 0)));
|
||||
_impl->methods.insert(std::make_pair("subscribe", MethodHandlerEntry(std::bind(&WebsocketServer::Subscribe, this, std::placeholders::_1, std::placeholders::_2), 0)));
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ EQ::Net::WebsocketServerConnection::WebsocketServerConnection(WebsocketServer *p
|
|||
std::shared_ptr<TCPConnection> connection,
|
||||
std::shared_ptr<websocket_connection> ws_connection)
|
||||
{
|
||||
_impl.reset(new Impl());
|
||||
_impl = std::make_unique<Impl>();
|
||||
_impl->parent = parent;
|
||||
_impl->connection = connection;
|
||||
_impl->id = EQ::Util::UUID::Generate().ToString();
|
||||
|
|
|
|||
|
|
@ -710,15 +710,48 @@ namespace RoF
|
|||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzChooseZone)
|
||||
{
|
||||
SETUP_VAR_ENCODE(DynamicZoneChooseZone_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
buf.WriteUInt16(emu->choices[i].dz_zone_id);
|
||||
buf.WriteUInt16(emu->choices[i].dz_instance_id);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id1);
|
||||
buf.WriteUInt32(emu->choices[i].dz_type);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id2);
|
||||
buf.WriteString(emu->choices[i].description);
|
||||
buf.WriteString(emu->choices[i].leader_name);
|
||||
}
|
||||
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzCompass)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::ExpeditionCompass_Struct, sizeof(structs::ExpeditionInfo_Struct) + sizeof(structs::ExpeditionCompassEntry_Struct) * emu->count);
|
||||
SETUP_VAR_ENCODE(DynamicZoneCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::DynamicZoneCompass_Struct,
|
||||
sizeof(structs::DynamicZoneCompass_Struct) +
|
||||
sizeof(structs::DynamicZoneCompassEntry_Struct) * emu->count
|
||||
);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
OUT(entries[i].dz_zone_id);
|
||||
OUT(entries[i].dz_instance_id);
|
||||
OUT(entries[i].dz_type);
|
||||
OUT(entries[i].x);
|
||||
OUT(entries[i].y);
|
||||
OUT(entries[i].z);
|
||||
|
|
@ -739,112 +772,108 @@ namespace RoF
|
|||
|
||||
ENCODE(OP_DzExpeditionInfo)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInfo_Struct, structs::ExpeditionInfo_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneInfo_Struct, structs::DynamicZoneInfo_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(assigned);
|
||||
OUT(max_players);
|
||||
eq->unknown004 = 785316192;
|
||||
eq->unknown008 = 435601;
|
||||
strncpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
strncpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
strn0cpy(eq->dz_name, emu->dz_name, sizeof(eq->dz_name));
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionList)
|
||||
ENCODE(OP_DzExpeditionInvite)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutList_Struct);
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInvite_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInvite_Struct, structs::ExpeditionInvite_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->inviter_name, emu->inviter_name, sizeof(eq->inviter_name));
|
||||
strn0cpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
OUT(swapping);
|
||||
strn0cpy(eq->swap_name, emu->swap_name, sizeof(eq->swap_name));
|
||||
OUT(dz_zone_id);
|
||||
OUT(dz_instance_id);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionLockoutTimers)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutTimers_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].expedition, strlen(emu->entries[i].expedition));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].time_left, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->entries[i].expedition_event, strlen(emu->entries[i].expedition_event));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
buf.WriteString(emu->timers[i].expedition_name);
|
||||
buf.WriteUInt32(emu->timers[i].seconds_remaining);
|
||||
buf.WriteInt32(emu->timers[i].event_type);
|
||||
buf.WriteString(emu->timers[i].event_name);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzJoinExpeditionConfirm)
|
||||
ENCODE(OP_DzSetLeaderName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionJoinPrompt_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionJoinPrompt_Struct, structs::ExpeditionJoinPrompt_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneLeaderName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneLeaderName_Struct, structs::DynamicZoneLeaderName_Struct);
|
||||
|
||||
strncpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
strncpy(eq->player_name, emu->player_name, sizeof(eq->player_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzLeaderStatus)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLeaderSet_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->leader_name, strlen(emu->leader_name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//0xffffffff
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//1
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberList)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionMemberList_Struct);
|
||||
SETUP_VAR_ENCODE(DynamicZoneMemberList_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->member_count);
|
||||
for (uint32 i = 0; i < emu->member_count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].name, strlen(emu->entries[i].name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].status, sizeof(char));
|
||||
buf.WriteString(emu->members[i].name);
|
||||
buf.WriteUInt8(emu->members[i].online_status);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneMemberListName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneMemberListName_Struct, structs::DynamicZoneMemberListName_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(add_name);
|
||||
strn0cpy(eq->name, emu->name, sizeof(eq->name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListStatus)
|
||||
{
|
||||
auto emu = reinterpret_cast<DynamicZoneMemberList_Struct*>((*p)->pBuffer);
|
||||
if (emu->member_count == 1)
|
||||
{
|
||||
ENCODE_FORWARD(OP_DzMemberList);
|
||||
}
|
||||
}
|
||||
|
||||
ENCODE(OP_Emote)
|
||||
{
|
||||
EQApplicationPacket *in = *p;
|
||||
|
|
@ -1827,6 +1856,7 @@ namespace RoF
|
|||
OUT(FastRegenHP);
|
||||
OUT(FastRegenMana);
|
||||
OUT(FastRegenEndurance);
|
||||
OUT(underworld_teleport_index);
|
||||
|
||||
eq->FogDensity = emu->fog_density;
|
||||
|
||||
|
|
@ -1938,7 +1968,7 @@ namespace RoF
|
|||
|
||||
for (int r = 0; r < 5; r++)
|
||||
{
|
||||
outapp->WriteUInt32(emu->binds[r].zoneId);
|
||||
outapp->WriteUInt32(emu->binds[r].zone_id);
|
||||
outapp->WriteFloat(emu->binds[r].x);
|
||||
outapp->WriteFloat(emu->binds[r].y);
|
||||
outapp->WriteFloat(emu->binds[r].z);
|
||||
|
|
@ -4387,6 +4417,84 @@ namespace RoF
|
|||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzAddPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzChooseZoneReply)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::DynamicZoneChooseZoneReply_Struct);
|
||||
SETUP_DIRECT_DECODE(DynamicZoneChooseZoneReply_Struct, structs::DynamicZoneChooseZoneReply_Struct);
|
||||
|
||||
IN(unknown000);
|
||||
IN(unknown004);
|
||||
IN(unknown008);
|
||||
IN(unknown_id1);
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(dz_type);
|
||||
IN(unknown_id2);
|
||||
IN(unknown028);
|
||||
IN(unknown032);
|
||||
IN(unknown036);
|
||||
IN(unknown040);
|
||||
IN(unknown044);
|
||||
IN(unknown048);
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzExpeditionInviteResponse)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionInviteResponse_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionInviteResponse_Struct, structs::ExpeditionInviteResponse_Struct);
|
||||
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(accepted);
|
||||
IN(swapping);
|
||||
strn0cpy(emu->swap_name, eq->swap_name, sizeof(emu->swap_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzMakeLeader)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzRemovePlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzSwapPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommandSwap_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommandSwap_Struct, structs::ExpeditionCommandSwap_Struct);
|
||||
|
||||
strn0cpy(emu->add_player_name, eq->add_player_name, sizeof(emu->add_player_name));
|
||||
strn0cpy(emu->rem_player_name, eq->rem_player_name, sizeof(emu->rem_player_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_Emote)
|
||||
{
|
||||
unsigned char *__eq_buffer = __packet->pBuffer;
|
||||
|
|
|
|||
|
|
@ -759,15 +759,48 @@ namespace RoF2
|
|||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzChooseZone)
|
||||
{
|
||||
SETUP_VAR_ENCODE(DynamicZoneChooseZone_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
buf.WriteUInt16(emu->choices[i].dz_zone_id);
|
||||
buf.WriteUInt16(emu->choices[i].dz_instance_id);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id1);
|
||||
buf.WriteUInt32(emu->choices[i].dz_type);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id2);
|
||||
buf.WriteString(emu->choices[i].description);
|
||||
buf.WriteString(emu->choices[i].leader_name);
|
||||
}
|
||||
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzCompass)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::ExpeditionCompass_Struct, sizeof(structs::ExpeditionInfo_Struct) + sizeof(structs::ExpeditionCompassEntry_Struct) * emu->count);
|
||||
SETUP_VAR_ENCODE(DynamicZoneCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::DynamicZoneCompass_Struct,
|
||||
sizeof(structs::DynamicZoneCompass_Struct) +
|
||||
sizeof(structs::DynamicZoneCompassEntry_Struct) * emu->count
|
||||
);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
OUT(entries[i].dz_zone_id);
|
||||
OUT(entries[i].dz_instance_id);
|
||||
OUT(entries[i].dz_type);
|
||||
OUT(entries[i].x);
|
||||
OUT(entries[i].y);
|
||||
OUT(entries[i].z);
|
||||
|
|
@ -788,112 +821,108 @@ namespace RoF2
|
|||
|
||||
ENCODE(OP_DzExpeditionInfo)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInfo_Struct, structs::ExpeditionInfo_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneInfo_Struct, structs::DynamicZoneInfo_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(assigned);
|
||||
OUT(max_players);
|
||||
eq->unknown004 = 785316192;
|
||||
eq->unknown008 = 435601;
|
||||
strncpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
strncpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
strn0cpy(eq->dz_name, emu->dz_name, sizeof(eq->dz_name));
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionList)
|
||||
ENCODE(OP_DzExpeditionInvite)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutList_Struct);
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInvite_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInvite_Struct, structs::ExpeditionInvite_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->inviter_name, emu->inviter_name, sizeof(eq->inviter_name));
|
||||
strn0cpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
OUT(swapping);
|
||||
strn0cpy(eq->swap_name, emu->swap_name, sizeof(eq->swap_name));
|
||||
OUT(dz_zone_id);
|
||||
OUT(dz_instance_id);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionLockoutTimers)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutTimers_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].expedition, strlen(emu->entries[i].expedition));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].time_left, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->entries[i].expedition_event, strlen(emu->entries[i].expedition_event));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
buf.WriteString(emu->timers[i].expedition_name);
|
||||
buf.WriteUInt32(emu->timers[i].seconds_remaining);
|
||||
buf.WriteInt32(emu->timers[i].event_type);
|
||||
buf.WriteString(emu->timers[i].event_name);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzJoinExpeditionConfirm)
|
||||
ENCODE(OP_DzSetLeaderName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionJoinPrompt_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionJoinPrompt_Struct, structs::ExpeditionJoinPrompt_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneLeaderName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneLeaderName_Struct, structs::DynamicZoneLeaderName_Struct);
|
||||
|
||||
strncpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
strncpy(eq->player_name, emu->player_name, sizeof(eq->player_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzLeaderStatus)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLeaderSet_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->leader_name, strlen(emu->leader_name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//0xffffffff
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//1
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberList)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionMemberList_Struct);
|
||||
SETUP_VAR_ENCODE(DynamicZoneMemberList_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->member_count);
|
||||
for (uint32 i = 0; i < emu->member_count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].name, strlen(emu->entries[i].name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].status, sizeof(char));
|
||||
buf.WriteString(emu->members[i].name);
|
||||
buf.WriteUInt8(emu->members[i].online_status);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneMemberListName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneMemberListName_Struct, structs::DynamicZoneMemberListName_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(add_name);
|
||||
strn0cpy(eq->name, emu->name, sizeof(eq->name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListStatus)
|
||||
{
|
||||
auto emu = reinterpret_cast<DynamicZoneMemberList_Struct*>((*p)->pBuffer);
|
||||
if (emu->member_count == 1)
|
||||
{
|
||||
ENCODE_FORWARD(OP_DzMemberList);
|
||||
}
|
||||
}
|
||||
|
||||
ENCODE(OP_Emote)
|
||||
{
|
||||
EQApplicationPacket *in = *p;
|
||||
|
|
@ -1876,6 +1905,7 @@ namespace RoF2
|
|||
OUT(FastRegenHP);
|
||||
OUT(FastRegenMana);
|
||||
OUT(FastRegenEndurance);
|
||||
OUT(underworld_teleport_index);
|
||||
|
||||
eq->FogDensity = emu->fog_density;
|
||||
|
||||
|
|
@ -1995,7 +2025,7 @@ namespace RoF2
|
|||
|
||||
for (int r = 0; r < 5; r++)
|
||||
{
|
||||
outapp->WriteUInt32(emu->binds[r].zoneId);
|
||||
outapp->WriteUInt32(emu->binds[r].zone_id);
|
||||
outapp->WriteFloat(emu->binds[r].x);
|
||||
outapp->WriteFloat(emu->binds[r].y);
|
||||
outapp->WriteFloat(emu->binds[r].z);
|
||||
|
|
@ -4584,6 +4614,84 @@ namespace RoF2
|
|||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzAddPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzChooseZoneReply)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::DynamicZoneChooseZoneReply_Struct);
|
||||
SETUP_DIRECT_DECODE(DynamicZoneChooseZoneReply_Struct, structs::DynamicZoneChooseZoneReply_Struct);
|
||||
|
||||
IN(unknown000);
|
||||
IN(unknown004);
|
||||
IN(unknown008);
|
||||
IN(unknown_id1);
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(dz_type);
|
||||
IN(unknown_id2);
|
||||
IN(unknown028);
|
||||
IN(unknown032);
|
||||
IN(unknown036);
|
||||
IN(unknown040);
|
||||
IN(unknown044);
|
||||
IN(unknown048);
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzExpeditionInviteResponse)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionInviteResponse_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionInviteResponse_Struct, structs::ExpeditionInviteResponse_Struct);
|
||||
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(accepted);
|
||||
IN(swapping);
|
||||
strn0cpy(emu->swap_name, eq->swap_name, sizeof(emu->swap_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzMakeLeader)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzRemovePlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzSwapPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommandSwap_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommandSwap_Struct, structs::ExpeditionCommandSwap_Struct);
|
||||
|
||||
strn0cpy(emu->add_player_name, eq->add_player_name, sizeof(emu->add_player_name));
|
||||
strn0cpy(emu->rem_player_name, eq->rem_player_name, sizeof(emu->rem_player_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_Emote)
|
||||
{
|
||||
unsigned char *__eq_buffer = __packet->pBuffer;
|
||||
|
|
|
|||
|
|
@ -58,13 +58,16 @@ E(OP_DeleteCharge)
|
|||
E(OP_DeleteItem)
|
||||
E(OP_DeleteSpawn)
|
||||
E(OP_DisciplineUpdate)
|
||||
E(OP_DzChooseZone)
|
||||
E(OP_DzCompass)
|
||||
E(OP_DzExpeditionEndsWarning)
|
||||
E(OP_DzExpeditionInfo)
|
||||
E(OP_DzExpeditionList)
|
||||
E(OP_DzJoinExpeditionConfirm)
|
||||
E(OP_DzLeaderStatus)
|
||||
E(OP_DzExpeditionInvite)
|
||||
E(OP_DzExpeditionLockoutTimers)
|
||||
E(OP_DzMemberList)
|
||||
E(OP_DzMemberListName)
|
||||
E(OP_DzMemberListStatus)
|
||||
E(OP_DzSetLeaderName)
|
||||
E(OP_Emote)
|
||||
E(OP_ExpansionInfo)
|
||||
E(OP_FormattedMessage)
|
||||
|
|
@ -159,6 +162,12 @@ D(OP_ConsiderCorpse)
|
|||
D(OP_Consume)
|
||||
D(OP_Damage)
|
||||
D(OP_DeleteItem)
|
||||
D(OP_DzAddPlayer)
|
||||
D(OP_DzChooseZoneReply)
|
||||
D(OP_DzExpeditionInviteResponse)
|
||||
D(OP_DzMakeLeader)
|
||||
D(OP_DzRemovePlayer)
|
||||
D(OP_DzSwapPlayer)
|
||||
D(OP_Emote)
|
||||
D(OP_EnvDamage)
|
||||
D(OP_FaceChange)
|
||||
|
|
|
|||
|
|
@ -628,7 +628,7 @@ struct NewZone_Struct {
|
|||
/*0856*/ uint32 scriptNPCReceivedanItem;
|
||||
/*0860*/ uint32 bCheck; // padded bool
|
||||
/*0864*/ uint32 scriptIDSomething;
|
||||
/*0868*/ uint32 scriptIDSomething2;
|
||||
/*0868*/ uint32 underworld_teleport_index; // > 0 teleports w/ zone point index, invalid succors, -1 affects some collisions
|
||||
/*0872*/ uint32 scriptIDSomething3;
|
||||
/*0876*/ uint32 SuspendBuffs; // padded bool
|
||||
/*0880*/ uint32 LavaDamage; // LavaDamage value
|
||||
|
|
@ -1053,7 +1053,7 @@ struct LeadershipAA_Struct {
|
|||
* Size: 20 Octets
|
||||
*/
|
||||
struct BindStruct {
|
||||
/*000*/ uint32 zoneId;
|
||||
/*000*/ uint32 zone_id;
|
||||
/*004*/ float x;
|
||||
/*008*/ float y;
|
||||
/*012*/ float z;
|
||||
|
|
@ -2084,7 +2084,7 @@ struct GMZoneRequest_Struct {
|
|||
/*0068*/ float x;
|
||||
/*0072*/ float y;
|
||||
/*0076*/ float z;
|
||||
/*0080*/ char unknown0080[4];
|
||||
/*0080*/ float heading;
|
||||
/*0084*/ uint32 success; // 0 if command failed, 1 if succeeded?
|
||||
/*0088*/
|
||||
// /*072*/ int8 success; // =0 client->server, =1 server->client, -X=specific error
|
||||
|
|
@ -4882,52 +4882,169 @@ struct VeteranClaim
|
|||
/*076*/ uint32 action;
|
||||
};
|
||||
|
||||
struct ExpeditionEntryHeader_Struct
|
||||
struct ExpeditionInvite_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*000*/ uint32 number_of_entries;
|
||||
/*000*/ uint32 client_id; // unique character id
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char inviter_name[64];
|
||||
/*072*/ char expedition_name[128];
|
||||
/*200*/ uint8 swapping; // 0: adding 1: swapping
|
||||
/*201*/ char swap_name[64]; // if swapping, swap name being removed
|
||||
/*265*/ uint8 padding[3];
|
||||
/*268*/ uint16 dz_zone_id; // dz_id zone/instance pair, sent back in reply
|
||||
/*270*/ uint16 dz_instance_id;
|
||||
};
|
||||
|
||||
struct ExpeditionJoinPrompt_Struct
|
||||
struct ExpeditionInviteResponse_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char player_name[64];
|
||||
/*072*/ char expedition_name[64];
|
||||
/*008*/ uint16 dz_zone_id; // dz_id pair sent in invite
|
||||
/*010*/ uint16 dz_instance_id;
|
||||
/*012*/ uint8 accepted; // 0: declined 1: accepted
|
||||
/*013*/ uint8 swapping; // 0: adding 1: swapping (sent in invite)
|
||||
/*014*/ char swap_name[64]; // swap name sent in invite
|
||||
/*078*/ uint8 unknown078; // padding garbage?
|
||||
/*079*/ uint8 unknown079; // padding garbage?
|
||||
};
|
||||
|
||||
struct DynamicZoneInfo_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 assigned; // padded bool, 0: clear info, 1: fill window info
|
||||
/*012*/ uint32 max_players;
|
||||
/*016*/ char dz_name[128];
|
||||
/*144*/ char leader_name[64];
|
||||
//*208*/ uint32 dz_type; // only in newer clients, if not 1 (expedition type) window does not auto show when dz info assigned
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberEntry_Struct
|
||||
{
|
||||
/*000*/ char name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
/*000*/ uint8 online_status; // 0: unknown 1: Online, 2: Offline, 3: In Dynamic Zone, 4: Link Dead
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberList_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 member_count; // number of players in window
|
||||
/*008*/ DynamicZoneMemberEntry_Struct members[0]; // variable length
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberListName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 add_name; // padded bool, 0: remove name, 1: add name with unknown status
|
||||
/*012*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimerEntry_Struct
|
||||
{
|
||||
/*000*/ char expedition_name[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ uint32 seconds_remaining;
|
||||
/*000*/ int32 event_type; // seen -1 (0xffffffff) for replay timers and 1 for event timers
|
||||
/*000*/ char event_name[1]; // variable length, null terminated, max 0x100 (256)
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimers_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionLockoutTimerEntry_Struct timers[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneLeaderName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommand_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommandSwap_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char add_player_name[64]; // swap to (player must confirm)
|
||||
/*072*/ char rem_player_name[64]; // swap from
|
||||
};
|
||||
|
||||
struct ExpeditionExpireWarning
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 minutes_remaining;
|
||||
};
|
||||
|
||||
struct ExpeditionInfo_Struct
|
||||
struct DynamicZoneCompassEntry_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*000*/ uint16 dz_zone_id; // target dz id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 dz_type; // 1: Expedition, 2: Tutorial (purple), 3: Task, 4: Mission, 5: Quest (green)
|
||||
/*008*/ uint32 unknown008;
|
||||
/*012*/ uint32 max_players;
|
||||
/*016*/ char expedition_name[128];
|
||||
/*142*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCompassEntry_Struct
|
||||
{
|
||||
/*000*/ float unknown000; //seen *((uint32*)) = 1584791871
|
||||
/*004*/ uint32 enabled; //guess
|
||||
/*008*/ uint32 unknown008; //seen 1019
|
||||
/*012*/ float y;
|
||||
/*016*/ float x;
|
||||
/*020*/ float z;
|
||||
};
|
||||
|
||||
struct ExpeditionCompass_Struct
|
||||
struct DynamicZoneCompass_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionCompassEntry_Struct entries[0];
|
||||
/*008*/ DynamicZoneCompassEntry_Struct entries[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneEntry_Struct
|
||||
{
|
||||
/*000*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 unknown_id1; // seen 28 00 00 00 (40), sent back in reply
|
||||
/*008*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest -- sent back in reply
|
||||
/*012*/ uint32 unknown_id2; // possibly an id based on dz type, for expeditions this was same as dz_id (zone|instance) but task dz was different
|
||||
/*016*/ char description[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ char leader_name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZone_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ DynamicZoneChooseZoneEntry_Struct choices[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneReply_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000; // ff ff ff ff
|
||||
/*004*/ uint32 unknown004; // seen 69 00 00 00
|
||||
/*008*/ uint32 unknown008; // ff ff ff ff
|
||||
/*012*/ uint32 unknown_id1; // from choose zone entry message
|
||||
/*016*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*018*/ uint16 dz_instance_id;
|
||||
/*020*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest
|
||||
/*024*/ uint32 unknown_id2; // from choose zone entry message
|
||||
/*028*/ uint32 unknown028; // 00 00 00 00
|
||||
/*032*/ uint32 unknown032; // always same as unknown044
|
||||
/*036*/ uint32 unknown036;
|
||||
/*040*/ uint32 unknown040;
|
||||
/*044*/ uint32 unknown044; // always same as unknown032
|
||||
/*048*/ uint32 unknown048; // seen 01 00 00 00 and 02 00 00 00
|
||||
};
|
||||
|
||||
struct KickPlayers_Struct
|
||||
{
|
||||
/*000*/ char char_name[64];
|
||||
/*064*/ uint32 unknown064; // always 0
|
||||
/*068*/ uint8 kick_expedition; // true if /kickplayers exp
|
||||
/*069*/ uint8 kick_task; // true if /kickplayers task
|
||||
/*070*/ uint8 padding[2];
|
||||
};
|
||||
|
||||
struct MaxCharacters_Struct
|
||||
|
|
|
|||
|
|
@ -44,13 +44,16 @@ E(OP_DeleteCharge)
|
|||
E(OP_DeleteItem)
|
||||
E(OP_DeleteSpawn)
|
||||
E(OP_DisciplineUpdate)
|
||||
E(OP_DzChooseZone)
|
||||
E(OP_DzCompass)
|
||||
E(OP_DzExpeditionEndsWarning)
|
||||
E(OP_DzExpeditionInfo)
|
||||
E(OP_DzExpeditionList)
|
||||
E(OP_DzJoinExpeditionConfirm)
|
||||
E(OP_DzLeaderStatus)
|
||||
E(OP_DzExpeditionInvite)
|
||||
E(OP_DzExpeditionLockoutTimers)
|
||||
E(OP_DzMemberList)
|
||||
E(OP_DzMemberListName)
|
||||
E(OP_DzMemberListStatus)
|
||||
E(OP_DzSetLeaderName)
|
||||
E(OP_Emote)
|
||||
E(OP_ExpansionInfo)
|
||||
E(OP_FormattedMessage)
|
||||
|
|
@ -145,6 +148,12 @@ D(OP_ConsiderCorpse)
|
|||
D(OP_Consume)
|
||||
D(OP_Damage)
|
||||
D(OP_DeleteItem)
|
||||
D(OP_DzAddPlayer)
|
||||
D(OP_DzChooseZoneReply)
|
||||
D(OP_DzExpeditionInviteResponse)
|
||||
D(OP_DzMakeLeader)
|
||||
D(OP_DzRemovePlayer)
|
||||
D(OP_DzSwapPlayer)
|
||||
D(OP_Emote)
|
||||
D(OP_EnvDamage)
|
||||
D(OP_FaceChange)
|
||||
|
|
|
|||
|
|
@ -575,7 +575,11 @@ struct NewZone_Struct {
|
|||
/*0848*/ int32 unknown848;
|
||||
/*0852*/ uint16 zone_id;
|
||||
/*0854*/ uint16 zone_instance;
|
||||
/*0856*/ char unknown856[20];
|
||||
/*0856*/ uint32 scriptNPCReceivedanItem;
|
||||
/*0860*/ uint32 bCheck; // padded bool
|
||||
/*0864*/ uint32 scriptIDSomething;
|
||||
/*0868*/ uint32 underworld_teleport_index; // > 0 teleports w/ zone point index, invalid succors, -1 affects some collisions
|
||||
/*0872*/ uint32 scriptIDSomething3;
|
||||
/*0876*/ uint32 SuspendBuffs;
|
||||
/*0880*/ uint32 unknown880; // Seen 50
|
||||
/*0884*/ uint32 unknown884; // Seen 10
|
||||
|
|
@ -994,7 +998,7 @@ struct LeadershipAA_Struct {
|
|||
* Size: 20 Octets
|
||||
*/
|
||||
struct BindStruct {
|
||||
/*000*/ uint32 zoneId;
|
||||
/*000*/ uint32 zone_id;
|
||||
/*004*/ float x;
|
||||
/*008*/ float y;
|
||||
/*012*/ float z;
|
||||
|
|
@ -2058,7 +2062,7 @@ struct GMZoneRequest_Struct {
|
|||
/*0068*/ float x;
|
||||
/*0072*/ float y;
|
||||
/*0076*/ float z;
|
||||
/*0080*/ char unknown0080[4];
|
||||
/*0080*/ float heading;
|
||||
/*0084*/ uint32 success; // 0 if command failed, 1 if succeeded?
|
||||
/*0088*/
|
||||
// /*072*/ int8 success; // =0 client->server, =1 server->client, -X=specific error
|
||||
|
|
@ -4811,52 +4815,159 @@ struct VeteranClaim
|
|||
/*076*/ uint32 action;
|
||||
};
|
||||
|
||||
struct ExpeditionEntryHeader_Struct
|
||||
struct ExpeditionInvite_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*000*/ uint32 number_of_entries;
|
||||
/*000*/ uint32 client_id; // unique character id
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char inviter_name[64];
|
||||
/*072*/ char expedition_name[128];
|
||||
/*200*/ uint8 swapping; // 0: adding 1: swapping
|
||||
/*201*/ char swap_name[64]; // if swapping, swap name being removed
|
||||
/*265*/ uint8 padding[3];
|
||||
/*268*/ uint16 dz_zone_id; // dz_id zone/instance pair, sent back in reply
|
||||
/*270*/ uint16 dz_instance_id;
|
||||
};
|
||||
|
||||
struct ExpeditionJoinPrompt_Struct
|
||||
struct ExpeditionInviteResponse_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char player_name[64];
|
||||
/*072*/ char expedition_name[64];
|
||||
/*008*/ uint16 dz_zone_id; // dz_id pair sent in invite
|
||||
/*010*/ uint16 dz_instance_id;
|
||||
/*012*/ uint8 accepted; // 0: declined 1: accepted
|
||||
/*013*/ uint8 swapping; // 0: adding 1: swapping (sent in invite)
|
||||
/*014*/ char swap_name[64]; // swap name sent in invite
|
||||
/*078*/ uint8 unknown078; // padding garbage?
|
||||
/*079*/ uint8 unknown079; // padding garbage?
|
||||
};
|
||||
|
||||
struct DynamicZoneInfo_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 assigned; // padded bool
|
||||
/*012*/ uint32 max_players;
|
||||
/*016*/ char dz_name[128];
|
||||
/*144*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberEntry_Struct
|
||||
{
|
||||
/*000*/ char name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
/*000*/ uint8 online_status; // 0: unknown 1: Online, 2: Offline, 3: In Dynamic Zone, 4: Link Dead
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberList_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 member_count; // number of players in window
|
||||
/*008*/ DynamicZoneMemberEntry_Struct members[0]; // variable length
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberListName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 add_name; // padded bool, 0: remove name, 1: add name with unknown status
|
||||
/*012*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimerEntry_Struct
|
||||
{
|
||||
/*000*/ char expedition_name[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ uint32 seconds_remaining;
|
||||
/*000*/ int32 event_type; // seen -1 (0xffffffff) for replay timers and 1 for event timers
|
||||
/*000*/ char event_name[1]; // variable length, null terminated, max 0x100 (256)
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimers_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionLockoutTimerEntry_Struct timers[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneLeaderName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommand_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommandSwap_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char add_player_name[64]; // swap to (player must confirm)
|
||||
/*072*/ char rem_player_name[64]; // swap from
|
||||
};
|
||||
|
||||
struct ExpeditionExpireWarning
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 minutes_remaining;
|
||||
};
|
||||
|
||||
struct ExpeditionInfo_Struct
|
||||
struct DynamicZoneCompassEntry_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*000*/ uint16 dz_zone_id; // target dz id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 dz_type; // 1: Expedition, 2: Tutorial (purple), 3: Task, 4: Mission, 5: Quest (green)
|
||||
/*008*/ uint32 unknown008;
|
||||
/*012*/ uint32 max_players;
|
||||
/*016*/ char expedition_name[128];
|
||||
/*142*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCompassEntry_Struct
|
||||
{
|
||||
/*000*/ float unknown000; //seen *((uint32*)) = 1584791871
|
||||
/*004*/ uint32 enabled; //guess
|
||||
/*008*/ uint32 unknown008; //seen 1019
|
||||
/*012*/ float y;
|
||||
/*016*/ float x;
|
||||
/*020*/ float z;
|
||||
};
|
||||
|
||||
struct ExpeditionCompass_Struct
|
||||
struct DynamicZoneCompass_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionCompassEntry_Struct entries[0];
|
||||
/*008*/ DynamicZoneCompassEntry_Struct entries[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneEntry_Struct
|
||||
{
|
||||
/*000*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 unknown_id1; // sent back in reply
|
||||
/*008*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest -- sent back in reply
|
||||
/*012*/ uint32 unknown_id2; // possibly an id based on dz type, for expeditions this was same as dz_id (zone|instance) but task dz was different
|
||||
/*016*/ char description[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ char leader_name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZone_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ DynamicZoneChooseZoneEntry_Struct choices[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneReply_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000; // ff ff ff ff
|
||||
/*004*/ uint32 unknown004; // seen 69 00 00 00
|
||||
/*008*/ uint32 unknown008; // ff ff ff ff
|
||||
/*012*/ uint32 unknown_id1; // from choose zone entry message
|
||||
/*016*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*018*/ uint16 dz_instance_id;
|
||||
/*020*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest
|
||||
/*024*/ uint32 unknown_id2; // from choose zone entry message
|
||||
/*028*/ uint32 unknown028; // 00 00 00 00
|
||||
/*032*/ uint32 unknown032; // always same as unknown044
|
||||
/*036*/ uint32 unknown036;
|
||||
/*040*/ uint32 unknown040;
|
||||
/*044*/ uint32 unknown044; // always same as unknown032
|
||||
/*048*/ uint32 unknown048; // seen 01 00 00 00 and 02 00 00 00
|
||||
};
|
||||
|
||||
struct MaxCharacters_Struct
|
||||
|
|
|
|||
|
|
@ -483,15 +483,48 @@ namespace SoD
|
|||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzChooseZone)
|
||||
{
|
||||
SETUP_VAR_ENCODE(DynamicZoneChooseZone_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
buf.WriteUInt16(emu->choices[i].dz_zone_id);
|
||||
buf.WriteUInt16(emu->choices[i].dz_instance_id);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id1);
|
||||
buf.WriteUInt32(emu->choices[i].dz_type);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id2);
|
||||
buf.WriteString(emu->choices[i].description);
|
||||
buf.WriteString(emu->choices[i].leader_name);
|
||||
}
|
||||
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzCompass)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::ExpeditionCompass_Struct, sizeof(structs::ExpeditionInfo_Struct) + sizeof(structs::ExpeditionCompassEntry_Struct) * emu->count);
|
||||
SETUP_VAR_ENCODE(DynamicZoneCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::DynamicZoneCompass_Struct,
|
||||
sizeof(structs::DynamicZoneCompass_Struct) +
|
||||
sizeof(structs::DynamicZoneCompassEntry_Struct) * emu->count
|
||||
);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
OUT(entries[i].dz_zone_id);
|
||||
OUT(entries[i].dz_instance_id);
|
||||
OUT(entries[i].dz_type);
|
||||
OUT(entries[i].x);
|
||||
OUT(entries[i].y);
|
||||
OUT(entries[i].z);
|
||||
|
|
@ -512,112 +545,109 @@ namespace SoD
|
|||
|
||||
ENCODE(OP_DzExpeditionInfo)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInfo_Struct, structs::ExpeditionInfo_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneInfo_Struct, structs::DynamicZoneInfo_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(assigned);
|
||||
OUT(max_players);
|
||||
eq->unknown004 = 785316192;
|
||||
eq->unknown008 = 435601;
|
||||
strcpy(eq->expedition_name, emu->expedition_name);
|
||||
strcpy(eq->leader_name, emu->leader_name);
|
||||
strn0cpy(eq->dz_name, emu->dz_name, sizeof(eq->dz_name));
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionList)
|
||||
ENCODE(OP_DzExpeditionInvite)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutList_Struct);
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInvite_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInvite_Struct, structs::ExpeditionInvite_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->inviter_name, emu->inviter_name, sizeof(eq->inviter_name));
|
||||
strn0cpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
OUT(swapping);
|
||||
strn0cpy(eq->swap_name, emu->swap_name, sizeof(eq->swap_name));
|
||||
OUT(dz_zone_id);
|
||||
OUT(dz_instance_id);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionLockoutTimers)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutTimers_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].expedition, strlen(emu->entries[i].expedition));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].time_left, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->entries[i].expedition_event, strlen(emu->entries[i].expedition_event));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
buf.WriteString(emu->timers[i].expedition_name);
|
||||
buf.WriteUInt32(emu->timers[i].seconds_remaining);
|
||||
buf.WriteInt32(emu->timers[i].event_type);
|
||||
buf.WriteString(emu->timers[i].event_name);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzJoinExpeditionConfirm)
|
||||
ENCODE(OP_DzSetLeaderName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionJoinPrompt_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionJoinPrompt_Struct, structs::ExpeditionJoinPrompt_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneLeaderName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneLeaderName_Struct, structs::DynamicZoneLeaderName_Struct);
|
||||
|
||||
strcpy(eq->expedition_name, emu->expedition_name);
|
||||
strcpy(eq->player_name, emu->player_name);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzLeaderStatus)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLeaderSet_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->leader_name, strlen(emu->leader_name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//0xffffffff
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//1
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberList)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionMemberList_Struct);
|
||||
SETUP_VAR_ENCODE(DynamicZoneMemberList_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->member_count);
|
||||
for (uint32 i = 0; i < emu->member_count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].name, strlen(emu->entries[i].name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].status, sizeof(char));
|
||||
buf.WriteString(emu->members[i].name);
|
||||
buf.WriteUInt8(emu->members[i].online_status);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneMemberListName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneMemberListName_Struct, structs::DynamicZoneMemberListName_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(add_name);
|
||||
strn0cpy(eq->name, emu->name, sizeof(eq->name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListStatus)
|
||||
{
|
||||
auto emu = reinterpret_cast<DynamicZoneMemberList_Struct*>((*p)->pBuffer);
|
||||
if (emu->member_count == 1)
|
||||
{
|
||||
ENCODE_FORWARD(OP_DzMemberList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ENCODE(OP_Emote)
|
||||
{
|
||||
EQApplicationPacket *in = *p;
|
||||
|
|
@ -1353,6 +1383,7 @@ namespace SoD
|
|||
OUT(FastRegenHP);
|
||||
OUT(FastRegenMana);
|
||||
OUT(FastRegenEndurance);
|
||||
OUT(underworld_teleport_index);
|
||||
|
||||
/*fill in some unknowns with observed values, hopefully it will help */
|
||||
eq->unknown800 = -1;
|
||||
|
|
@ -1444,7 +1475,7 @@ namespace SoD
|
|||
eq->level1 = emu->level;
|
||||
// OUT(unknown00022[2]);
|
||||
for (r = 0; r < 5; r++) {
|
||||
OUT(binds[r].zoneId);
|
||||
OUT(binds[r].zone_id);
|
||||
OUT(binds[r].x);
|
||||
OUT(binds[r].y);
|
||||
OUT(binds[r].z);
|
||||
|
|
@ -2973,6 +3004,84 @@ namespace SoD
|
|||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzAddPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzChooseZoneReply)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::DynamicZoneChooseZoneReply_Struct);
|
||||
SETUP_DIRECT_DECODE(DynamicZoneChooseZoneReply_Struct, structs::DynamicZoneChooseZoneReply_Struct);
|
||||
|
||||
IN(unknown000);
|
||||
IN(unknown004);
|
||||
IN(unknown008);
|
||||
IN(unknown_id1);
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(dz_type);
|
||||
IN(unknown_id2);
|
||||
IN(unknown028);
|
||||
IN(unknown032);
|
||||
IN(unknown036);
|
||||
IN(unknown040);
|
||||
IN(unknown044);
|
||||
IN(unknown048);
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzExpeditionInviteResponse)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionInviteResponse_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionInviteResponse_Struct, structs::ExpeditionInviteResponse_Struct);
|
||||
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(accepted);
|
||||
IN(swapping);
|
||||
strn0cpy(emu->swap_name, eq->swap_name, sizeof(emu->swap_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzMakeLeader)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzRemovePlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzSwapPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommandSwap_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommandSwap_Struct, structs::ExpeditionCommandSwap_Struct);
|
||||
|
||||
strn0cpy(emu->add_player_name, eq->add_player_name, sizeof(emu->add_player_name));
|
||||
strn0cpy(emu->rem_player_name, eq->rem_player_name, sizeof(emu->rem_player_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_Emote)
|
||||
{
|
||||
unsigned char *__eq_buffer = __packet->pBuffer;
|
||||
|
|
|
|||
|
|
@ -35,13 +35,16 @@ E(OP_Consider)
|
|||
E(OP_Damage)
|
||||
E(OP_DeleteCharge)
|
||||
E(OP_DeleteItem)
|
||||
E(OP_DzChooseZone)
|
||||
E(OP_DzCompass)
|
||||
E(OP_DzExpeditionEndsWarning)
|
||||
E(OP_DzExpeditionInfo)
|
||||
E(OP_DzExpeditionList)
|
||||
E(OP_DzJoinExpeditionConfirm)
|
||||
E(OP_DzLeaderStatus)
|
||||
E(OP_DzExpeditionInvite)
|
||||
E(OP_DzExpeditionLockoutTimers)
|
||||
E(OP_DzMemberList)
|
||||
E(OP_DzMemberListName)
|
||||
E(OP_DzMemberListStatus)
|
||||
E(OP_DzSetLeaderName)
|
||||
E(OP_Emote)
|
||||
E(OP_ExpansionInfo)
|
||||
E(OP_FormattedMessage)
|
||||
|
|
@ -111,6 +114,12 @@ D(OP_Consider)
|
|||
D(OP_ConsiderCorpse)
|
||||
D(OP_Consume)
|
||||
D(OP_DeleteItem)
|
||||
D(OP_DzAddPlayer)
|
||||
D(OP_DzChooseZoneReply)
|
||||
D(OP_DzExpeditionInviteResponse)
|
||||
D(OP_DzMakeLeader)
|
||||
D(OP_DzRemovePlayer)
|
||||
D(OP_DzSwapPlayer)
|
||||
D(OP_Emote)
|
||||
D(OP_FaceChange)
|
||||
D(OP_FindPersonRequest)
|
||||
|
|
|
|||
|
|
@ -444,7 +444,11 @@ struct NewZone_Struct {
|
|||
/*0848*/ int32 unknown848;
|
||||
/*0852*/ uint16 zone_id;
|
||||
/*0854*/ uint16 zone_instance;
|
||||
/*0856*/ char unknown856[20];
|
||||
/*0856*/ uint32 scriptNPCReceivedanItem;
|
||||
/*0860*/ uint32 bCheck; // padded bool
|
||||
/*0864*/ uint32 scriptIDSomething;
|
||||
/*0868*/ uint32 underworld_teleport_index; // > 0 teleports w/ zone point index, invalid succors, -1 affects some collisions
|
||||
/*0872*/ uint32 scriptIDSomething3;
|
||||
/*0876*/ uint32 SuspendBuffs;
|
||||
/*0880*/ uint32 unknown880; //seen 50
|
||||
/*0884*/ uint32 unknown884; //seen 10
|
||||
|
|
@ -799,7 +803,7 @@ struct LeadershipAA_Struct {
|
|||
* Size: 20 Octets
|
||||
*/
|
||||
struct BindStruct {
|
||||
/*000*/ uint32 zoneId;
|
||||
/*000*/ uint32 zone_id;
|
||||
/*004*/ float x;
|
||||
/*008*/ float y;
|
||||
/*012*/ float z;
|
||||
|
|
@ -1710,7 +1714,7 @@ struct GMZoneRequest_Struct {
|
|||
/*0068*/ float x;
|
||||
/*0072*/ float y;
|
||||
/*0076*/ float z;
|
||||
/*0080*/ char unknown0080[4];
|
||||
/*0080*/ float heading;
|
||||
/*0084*/ uint32 success; // 0 if command failed, 1 if succeeded?
|
||||
/*0088*/
|
||||
// /*072*/ int8 success; // =0 client->server, =1 server->client, -X=specific error
|
||||
|
|
@ -4165,52 +4169,160 @@ struct VeteranReward
|
|||
/*012*/ VeteranRewardItem items[8];
|
||||
};
|
||||
|
||||
struct ExpeditionEntryHeader_Struct
|
||||
|
||||
struct ExpeditionInvite_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*000*/ uint32 number_of_entries;
|
||||
/*000*/ uint32 client_id; // unique character id
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char inviter_name[64];
|
||||
/*072*/ char expedition_name[128];
|
||||
/*200*/ uint8 swapping; // 0: adding 1: swapping
|
||||
/*201*/ char swap_name[64]; // if swapping, swap name being removed
|
||||
/*265*/ uint8 padding[3];
|
||||
/*268*/ uint16 dz_zone_id; // dz_id zone/instance pair, sent back in reply
|
||||
/*270*/ uint16 dz_instance_id;
|
||||
};
|
||||
|
||||
struct ExpeditionJoinPrompt_Struct
|
||||
struct ExpeditionInviteResponse_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char player_name[64];
|
||||
/*072*/ char expedition_name[64];
|
||||
/*008*/ uint16 dz_zone_id; // dz_id pair sent in invite
|
||||
/*010*/ uint16 dz_instance_id;
|
||||
/*012*/ uint8 accepted; // 0: declined 1: accepted
|
||||
/*013*/ uint8 swapping; // 0: adding 1: swapping (sent in invite)
|
||||
/*014*/ char swap_name[64]; // swap name sent in invite
|
||||
/*078*/ uint8 unknown078; // padding garbage?
|
||||
/*079*/ uint8 unknown079; // padding garbage?
|
||||
};
|
||||
|
||||
struct DynamicZoneInfo_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 assigned; // padded bool
|
||||
/*012*/ uint32 max_players;
|
||||
/*016*/ char dz_name[128];
|
||||
/*144*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberEntry_Struct
|
||||
{
|
||||
/*000*/ char name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
/*000*/ uint8 online_status; // 0: unknown 1: Online, 2: Offline, 3: In Dynamic Zone, 4: Link Dead
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberList_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 member_count; // number of players in window
|
||||
/*008*/ DynamicZoneMemberEntry_Struct members[0]; // variable length
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberListName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 add_name; // padded bool, 0: remove name, 1: add name with unknown status
|
||||
/*012*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimerEntry_Struct
|
||||
{
|
||||
/*000*/ char expedition_name[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ uint32 seconds_remaining;
|
||||
/*000*/ int32 event_type; // seen -1 (0xffffffff) for replay timers and 1 for event timers
|
||||
/*000*/ char event_name[1]; // variable length, null terminated, max 0x100 (256)
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimers_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionLockoutTimerEntry_Struct timers[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneLeaderName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommand_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommandSwap_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char add_player_name[64]; // swap to (player must confirm)
|
||||
/*072*/ char rem_player_name[64]; // swap from
|
||||
};
|
||||
|
||||
struct ExpeditionExpireWarning
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 minutes_remaining;
|
||||
};
|
||||
|
||||
struct ExpeditionInfo_Struct
|
||||
struct DynamicZoneCompassEntry_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*000*/ uint16 dz_zone_id; // target dz id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 dz_type; // 1: Expedition, 2: Tutorial (purple), 3: Task, 4: Mission, 5: Quest (green)
|
||||
/*008*/ uint32 unknown008;
|
||||
/*012*/ uint32 max_players;
|
||||
/*016*/ char expedition_name[128];
|
||||
/*142*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCompassEntry_Struct
|
||||
{
|
||||
/*000*/ float unknown000; //seen *((uint32*)) = 1584791871
|
||||
/*004*/ uint32 enabled; //guess
|
||||
/*008*/ uint32 unknown008; //seen 1019
|
||||
/*012*/ float y;
|
||||
/*016*/ float x;
|
||||
/*020*/ float z;
|
||||
};
|
||||
|
||||
struct ExpeditionCompass_Struct
|
||||
struct DynamicZoneCompass_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionCompassEntry_Struct entries[0];
|
||||
/*008*/ DynamicZoneCompassEntry_Struct entries[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneEntry_Struct
|
||||
{
|
||||
/*000*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 unknown_id1; // sent back in reply
|
||||
/*008*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest -- sent back in reply
|
||||
/*012*/ uint32 unknown_id2; // possibly an id based on dz type, for expeditions this was same as dz_id (zone|instance) but task dz was different
|
||||
/*016*/ char description[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ char leader_name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZone_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ DynamicZoneChooseZoneEntry_Struct choices[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneReply_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000; // ff ff ff ff
|
||||
/*004*/ uint32 unknown004; // seen 69 00 00 00
|
||||
/*008*/ uint32 unknown008; // ff ff ff ff
|
||||
/*012*/ uint32 unknown_id1; // from choose zone entry message
|
||||
/*016*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*018*/ uint16 dz_instance_id;
|
||||
/*020*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest
|
||||
/*024*/ uint32 unknown_id2; // from choose zone entry message
|
||||
/*028*/ uint32 unknown028; // 00 00 00 00
|
||||
/*032*/ uint32 unknown032; // always same as unknown044
|
||||
/*036*/ uint32 unknown036;
|
||||
/*040*/ uint32 unknown040;
|
||||
/*044*/ uint32 unknown044; // always same as unknown032
|
||||
/*048*/ uint32 unknown048; // seen 01 00 00 00 and 02 00 00 00
|
||||
};
|
||||
|
||||
struct AltCurrencySelectItem_Struct {
|
||||
|
|
|
|||
|
|
@ -471,14 +471,48 @@ namespace SoF
|
|||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzChooseZone)
|
||||
{
|
||||
SETUP_VAR_ENCODE(DynamicZoneChooseZone_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
buf.WriteUInt16(emu->choices[i].dz_zone_id);
|
||||
buf.WriteUInt16(emu->choices[i].dz_instance_id);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id1);
|
||||
buf.WriteUInt32(emu->choices[i].dz_type);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id2);
|
||||
buf.WriteString(emu->choices[i].description);
|
||||
buf.WriteString(emu->choices[i].leader_name);
|
||||
}
|
||||
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzCompass)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::ExpeditionCompass_Struct, sizeof(structs::ExpeditionInfo_Struct) + sizeof(structs::ExpeditionCompassEntry_Struct) * emu->count);
|
||||
SETUP_VAR_ENCODE(DynamicZoneCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::DynamicZoneCompass_Struct,
|
||||
sizeof(structs::DynamicZoneCompass_Struct) +
|
||||
sizeof(structs::DynamicZoneCompassEntry_Struct) * emu->count
|
||||
);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
OUT(entries[i].dz_zone_id);
|
||||
OUT(entries[i].dz_instance_id);
|
||||
OUT(entries[i].dz_type);
|
||||
OUT(entries[i].x);
|
||||
OUT(entries[i].y);
|
||||
OUT(entries[i].z);
|
||||
|
|
@ -499,111 +533,108 @@ namespace SoF
|
|||
|
||||
ENCODE(OP_DzExpeditionInfo)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInfo_Struct, structs::ExpeditionInfo_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneInfo_Struct, structs::DynamicZoneInfo_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(assigned);
|
||||
OUT(max_players);
|
||||
eq->enabled_max = 1;
|
||||
strcpy(eq->expedition_name, emu->expedition_name);
|
||||
strcpy(eq->leader_name, emu->leader_name);
|
||||
strn0cpy(eq->dz_name, emu->dz_name, sizeof(eq->dz_name));
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionList)
|
||||
ENCODE(OP_DzExpeditionInvite)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutList_Struct);
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInvite_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInvite_Struct, structs::ExpeditionInvite_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
for (int i = 0; i < emu->count; ++i)
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->inviter_name, emu->inviter_name, sizeof(eq->inviter_name));
|
||||
strn0cpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
OUT(swapping);
|
||||
strn0cpy(eq->swap_name, emu->swap_name, sizeof(eq->swap_name));
|
||||
OUT(dz_zone_id);
|
||||
OUT(dz_instance_id);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionLockoutTimers)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutTimers_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].expedition, strlen(emu->entries[i].expedition));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].time_left, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->entries[i].expedition_event, strlen(emu->entries[i].expedition_event));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
buf.WriteString(emu->timers[i].expedition_name);
|
||||
buf.WriteUInt32(emu->timers[i].seconds_remaining);
|
||||
buf.WriteInt32(emu->timers[i].event_type);
|
||||
buf.WriteString(emu->timers[i].event_name);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzJoinExpeditionConfirm)
|
||||
ENCODE(OP_DzSetLeaderName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionJoinPrompt_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionJoinPrompt_Struct, structs::ExpeditionJoinPrompt_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneLeaderName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneLeaderName_Struct, structs::DynamicZoneLeaderName_Struct);
|
||||
|
||||
strcpy(eq->expedition_name, emu->expedition_name);
|
||||
strcpy(eq->player_name, emu->player_name);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzLeaderStatus)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLeaderSet_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
//ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->leader_name, strlen(emu->leader_name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//0xffffffff
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//1
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberList)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionMemberList_Struct);
|
||||
SETUP_VAR_ENCODE(DynamicZoneMemberList_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->member_count);
|
||||
for (uint32 i = 0; i < emu->member_count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].name, strlen(emu->entries[i].name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].status, sizeof(char));
|
||||
buf.WriteString(emu->members[i].name);
|
||||
buf.WriteUInt8(emu->members[i].online_status);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneMemberListName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneMemberListName_Struct, structs::DynamicZoneMemberListName_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(add_name);
|
||||
strn0cpy(eq->name, emu->name, sizeof(eq->name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListStatus)
|
||||
{
|
||||
auto emu = reinterpret_cast<DynamicZoneMemberList_Struct*>((*p)->pBuffer);
|
||||
if (emu->member_count == 1)
|
||||
{
|
||||
ENCODE_FORWARD(OP_DzMemberList);
|
||||
}
|
||||
}
|
||||
|
||||
ENCODE(OP_Emote)
|
||||
{
|
||||
EQApplicationPacket *in = *p;
|
||||
|
|
@ -1030,6 +1061,7 @@ namespace SoF
|
|||
OUT(FastRegenHP);
|
||||
OUT(FastRegenMana);
|
||||
OUT(FastRegenEndurance);
|
||||
OUT(underworld_teleport_index);
|
||||
|
||||
/*fill in some unknowns with observed values, hopefully it will help */
|
||||
eq->unknown796 = -1;
|
||||
|
|
@ -1108,7 +1140,7 @@ namespace SoF
|
|||
eq->level1 = emu->level;
|
||||
// OUT(unknown00022[2]);
|
||||
for (r = 0; r < 5; r++) {
|
||||
OUT(binds[r].zoneId);
|
||||
OUT(binds[r].zone_id);
|
||||
OUT(binds[r].x);
|
||||
OUT(binds[r].y);
|
||||
OUT(binds[r].z);
|
||||
|
|
@ -2434,6 +2466,83 @@ namespace SoF
|
|||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzAddPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzChooseZoneReply)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::DynamicZoneChooseZoneReply_Struct);
|
||||
SETUP_DIRECT_DECODE(DynamicZoneChooseZoneReply_Struct, structs::DynamicZoneChooseZoneReply_Struct);
|
||||
|
||||
emu->unknown000 = eq->unknown000;
|
||||
emu->unknown008 = eq->unknown004;
|
||||
IN(unknown_id1);
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(dz_type);
|
||||
IN(unknown_id2);
|
||||
emu->unknown028 = eq->unknown024;
|
||||
emu->unknown032 = eq->unknown028;
|
||||
emu->unknown036 = eq->unknown032;
|
||||
emu->unknown040 = eq->unknown036;
|
||||
emu->unknown044 = eq->unknown040;
|
||||
emu->unknown048 = eq->unknown044;
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzExpeditionInviteResponse)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionInviteResponse_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionInviteResponse_Struct, structs::ExpeditionInviteResponse_Struct);
|
||||
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(accepted);
|
||||
IN(swapping);
|
||||
strn0cpy(emu->swap_name, eq->swap_name, sizeof(emu->swap_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzMakeLeader)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzRemovePlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzSwapPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommandSwap_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommandSwap_Struct, structs::ExpeditionCommandSwap_Struct);
|
||||
|
||||
strn0cpy(emu->add_player_name, eq->add_player_name, sizeof(emu->add_player_name));
|
||||
strn0cpy(emu->rem_player_name, eq->rem_player_name, sizeof(emu->rem_player_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_Emote)
|
||||
{
|
||||
unsigned char *__eq_buffer = __packet->pBuffer;
|
||||
|
|
|
|||
|
|
@ -36,13 +36,16 @@ E(OP_Damage)
|
|||
E(OP_DeleteCharge)
|
||||
E(OP_DeleteItem)
|
||||
E(OP_DeleteSpawn)
|
||||
E(OP_DzChooseZone)
|
||||
E(OP_DzCompass)
|
||||
E(OP_DzExpeditionEndsWarning)
|
||||
E(OP_DzExpeditionInfo)
|
||||
E(OP_DzExpeditionList)
|
||||
E(OP_DzJoinExpeditionConfirm)
|
||||
E(OP_DzLeaderStatus)
|
||||
E(OP_DzExpeditionInvite)
|
||||
E(OP_DzExpeditionLockoutTimers)
|
||||
E(OP_DzMemberList)
|
||||
E(OP_DzMemberListName)
|
||||
E(OP_DzMemberListStatus)
|
||||
E(OP_DzSetLeaderName)
|
||||
E(OP_Emote)
|
||||
E(OP_ExpansionInfo)
|
||||
E(OP_FormattedMessage)
|
||||
|
|
@ -103,6 +106,12 @@ D(OP_Consider)
|
|||
D(OP_ConsiderCorpse)
|
||||
D(OP_Consume)
|
||||
D(OP_DeleteItem)
|
||||
D(OP_DzAddPlayer)
|
||||
D(OP_DzChooseZoneReply)
|
||||
D(OP_DzExpeditionInviteResponse)
|
||||
D(OP_DzMakeLeader)
|
||||
D(OP_DzRemovePlayer)
|
||||
D(OP_DzSwapPlayer)
|
||||
D(OP_Emote)
|
||||
D(OP_FaceChange)
|
||||
D(OP_FindPersonRequest)
|
||||
|
|
|
|||
|
|
@ -448,7 +448,11 @@ struct NewZone_Struct {
|
|||
/*0844*/ int32 unknown844;
|
||||
/*0848*/ uint16 zone_id;
|
||||
/*0850*/ uint16 zone_instance;
|
||||
/*0852*/ char unknown852[20];
|
||||
/*0852*/ uint32 scriptNPCReceivedanItem;
|
||||
/*0856*/ uint32 bCheck; // padded bool
|
||||
/*0860*/ uint32 scriptIDSomething;
|
||||
/*0864*/ uint32 underworld_teleport_index; // > 0 teleports w/ zone point index, invalid succors, -1 affects some collisions
|
||||
/*0868*/ uint32 scriptIDSomething3;
|
||||
/*0872*/ uint32 SuspendBuffs;
|
||||
/*0876*/ uint32 unknown876; //seen 50
|
||||
/*0880*/ uint32 unknown880; //seen 10
|
||||
|
|
@ -800,7 +804,7 @@ struct LeadershipAA_Struct {
|
|||
* Size: 20 Octets
|
||||
*/
|
||||
struct BindStruct {
|
||||
/*000*/ uint32 zoneId;
|
||||
/*000*/ uint32 zone_id;
|
||||
/*004*/ float x;
|
||||
/*008*/ float y;
|
||||
/*012*/ float z;
|
||||
|
|
@ -1738,7 +1742,7 @@ struct GMZoneRequest_Struct {
|
|||
/*0068*/ float x;
|
||||
/*0072*/ float y;
|
||||
/*0076*/ float z;
|
||||
/*0080*/ char unknown0080[4];
|
||||
/*0080*/ float heading;
|
||||
/*0084*/ uint32 success; // 0 if command failed, 1 if succeeded?
|
||||
/*0088*/
|
||||
// /*072*/ int8 success; // =0 client->server, =1 server->client, -X=specific error
|
||||
|
|
@ -4084,43 +4088,150 @@ struct VeteranReward
|
|||
/*012*/ VeteranRewardItem items[8];
|
||||
};
|
||||
|
||||
struct ExpeditionExpireWarning
|
||||
struct ExpeditionInvite_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ char inviter_name[64];
|
||||
/*068*/ char expedition_name[128];
|
||||
/*196*/ uint8 swapping; // 0: adding 1: swapping
|
||||
/*197*/ char swap_name[64]; // if swapping, swap name being removed
|
||||
/*261*/ uint8 padding[3];
|
||||
/*264*/ uint16 dz_zone_id; // dz_id zone/instance pair, sent back in reply
|
||||
/*268*/ uint16 dz_instance_id;
|
||||
};
|
||||
|
||||
struct ExpeditionInviteResponse_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint16 dz_zone_id; // dz_id pair sent in invite
|
||||
/*006*/ uint16 dz_instance_id;
|
||||
/*008*/ uint8 accepted; // 0: declined 1: accepted
|
||||
/*009*/ uint8 swapping; // 0: adding 1: swapping (sent in invite)
|
||||
/*010*/ char swap_name[64]; // swap name sent in invite
|
||||
/*074*/ uint8 unknown078; // padding/garbage?
|
||||
/*075*/ uint8 unknown079; // padding/garbage?
|
||||
};
|
||||
|
||||
struct DynamicZoneInfo_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 assigned; // padded bool
|
||||
/*008*/ uint32 max_players;
|
||||
/*012*/ char dz_name[128];
|
||||
/*140*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberEntry_Struct
|
||||
{
|
||||
/*000*/ char name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
/*000*/ uint8 online_status; // 0: unknown 1: Online, 2: Offline, 3: In Dynamic Zone, 4: Link Dead
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberList_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 member_count;
|
||||
/*008*/ DynamicZoneMemberEntry_Struct members[0]; // variable length
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberListName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 add_name; // padded bool, 0: remove name, 1: add name with unknown status
|
||||
/*008*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimerEntry_Struct
|
||||
{
|
||||
/*000*/ char expedition_name[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ uint32 seconds_remaining;
|
||||
/*000*/ int32 event_type; // seen -1 (0xffffffff) for replay timers and 1 for event timers
|
||||
/*000*/ char event_name[1]; // variable length, null terminated, max 0x100 (256)
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimers_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionLockoutTimerEntry_Struct timers[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneLeaderName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommand_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommandSwap_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ char add_player_name[64]; // swap to (player must confirm)
|
||||
/*068*/ char rem_player_name[64]; // swap from
|
||||
};
|
||||
|
||||
struct ExpeditionExpireWarning
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 minutes_remaining;
|
||||
};
|
||||
|
||||
struct ExpeditionInfo_Struct
|
||||
struct DynamicZoneCompassEntry_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*004*/ uint32 enabled_max;
|
||||
/*008*/ uint32 max_players;
|
||||
/*012*/ char expedition_name[128];
|
||||
/*142*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCompassEntry_Struct
|
||||
{
|
||||
/*000*/ float unknown000; //seen *((uint32*)) = 1584791871
|
||||
/*004*/ uint32 enabled; //guess
|
||||
/*008*/ uint32 unknown008; //seen 1019
|
||||
/*000*/ uint16 dz_zone_id; // target dz id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 dz_type; // 1: Expedition, 2: Tutorial (purple), 3: Task, 4: Mission, 5: Quest (green)
|
||||
/*008*/ uint32 unknown008;
|
||||
/*012*/ float y;
|
||||
/*016*/ float x;
|
||||
/*020*/ float z;
|
||||
};
|
||||
|
||||
struct ExpeditionCompass_Struct
|
||||
struct DynamicZoneCompass_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionCompassEntry_Struct entries[0];
|
||||
/*008*/ DynamicZoneCompassEntry_Struct entries[0];
|
||||
};
|
||||
|
||||
struct ExpeditionJoinPrompt_Struct
|
||||
struct DynamicZoneChooseZoneEntry_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*004*/ char player_name[64];
|
||||
/*068*/ char expedition_name[64];
|
||||
/*000*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 unknown_id1; // sent back in reply
|
||||
/*008*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest -- sent back in reply
|
||||
/*012*/ uint32 unknown_id2; // possibly an id based on dz type, for expeditions this was same as dz_id (zone|instance) but task dz was different
|
||||
/*016*/ char description[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ char leader_name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZone_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ DynamicZoneChooseZoneEntry_Struct choices[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneReply_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 unknown_id1;
|
||||
/*012*/ uint16 dz_zone_id;
|
||||
/*014*/ uint16 dz_instance_id;
|
||||
/*016*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest
|
||||
/*020*/ uint32 unknown_id2;
|
||||
/*024*/ uint32 unknown024;
|
||||
/*028*/ uint32 unknown028; // always same as unknown040
|
||||
/*032*/ uint32 unknown032;
|
||||
/*036*/ uint32 unknown036;
|
||||
/*040*/ uint32 unknown040; // always same as unknown028
|
||||
/*044*/ uint32 unknown044;
|
||||
};
|
||||
|
||||
struct AltCurrencySelectItem_Struct {
|
||||
|
|
|
|||
|
|
@ -414,15 +414,48 @@ namespace Titanium
|
|||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzChooseZone)
|
||||
{
|
||||
SETUP_VAR_ENCODE(DynamicZoneChooseZone_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
buf.WriteUInt16(emu->choices[i].dz_zone_id);
|
||||
buf.WriteUInt16(emu->choices[i].dz_instance_id);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id1);
|
||||
buf.WriteUInt32(emu->choices[i].dz_type);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id2);
|
||||
buf.WriteString(emu->choices[i].description);
|
||||
buf.WriteString(emu->choices[i].leader_name);
|
||||
}
|
||||
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzCompass)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::ExpeditionCompass_Struct, sizeof(structs::ExpeditionInfo_Struct) + sizeof(structs::ExpeditionCompassEntry_Struct) * emu->count);
|
||||
SETUP_VAR_ENCODE(DynamicZoneCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::DynamicZoneCompass_Struct,
|
||||
sizeof(structs::DynamicZoneCompass_Struct) +
|
||||
sizeof(structs::DynamicZoneCompassEntry_Struct) * emu->count
|
||||
);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
OUT(entries[i].dz_zone_id);
|
||||
OUT(entries[i].dz_instance_id);
|
||||
OUT(entries[i].dz_type);
|
||||
OUT(entries[i].x);
|
||||
OUT(entries[i].y);
|
||||
OUT(entries[i].z);
|
||||
|
|
@ -443,111 +476,108 @@ namespace Titanium
|
|||
|
||||
ENCODE(OP_DzExpeditionInfo)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInfo_Struct, structs::ExpeditionInfo_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneInfo_Struct, structs::DynamicZoneInfo_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(assigned);
|
||||
OUT(max_players);
|
||||
eq->enabled_max = 1;
|
||||
strcpy(eq->expedition_name, emu->expedition_name);
|
||||
strcpy(eq->leader_name, emu->leader_name);
|
||||
strn0cpy(eq->dz_name, emu->dz_name, sizeof(eq->dz_name));
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionList)
|
||||
ENCODE(OP_DzExpeditionInvite)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutList_Struct);
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInvite_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInvite_Struct, structs::ExpeditionInvite_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->inviter_name, emu->inviter_name, sizeof(eq->inviter_name));
|
||||
strn0cpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
OUT(swapping);
|
||||
strn0cpy(eq->swap_name, emu->swap_name, sizeof(eq->swap_name));
|
||||
OUT(dz_zone_id);
|
||||
OUT(dz_instance_id);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionLockoutTimers)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutTimers_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].expedition, strlen(emu->entries[i].expedition));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].time_left, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->entries[i].expedition_event, strlen(emu->entries[i].expedition_event));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
buf.WriteString(emu->timers[i].expedition_name);
|
||||
buf.WriteUInt32(emu->timers[i].seconds_remaining);
|
||||
buf.WriteInt32(emu->timers[i].event_type);
|
||||
buf.WriteString(emu->timers[i].event_name);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzJoinExpeditionConfirm)
|
||||
ENCODE(OP_DzSetLeaderName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionJoinPrompt_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionJoinPrompt_Struct, structs::ExpeditionJoinPrompt_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneLeaderName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneLeaderName_Struct, structs::DynamicZoneLeaderName_Struct);
|
||||
|
||||
strcpy(eq->expedition_name, emu->expedition_name);
|
||||
strcpy(eq->player_name, emu->player_name);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzLeaderStatus)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLeaderSet_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
//ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->leader_name, strlen(emu->leader_name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//0xffffffff
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//1
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberList)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionMemberList_Struct);
|
||||
SETUP_VAR_ENCODE(DynamicZoneMemberList_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->member_count);
|
||||
for (uint32 i = 0; i < emu->member_count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].name, strlen(emu->entries[i].name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].status, sizeof(char));
|
||||
buf.WriteString(emu->members[i].name);
|
||||
buf.WriteUInt8(emu->members[i].online_status);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneMemberListName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneMemberListName_Struct, structs::DynamicZoneMemberListName_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(add_name);
|
||||
strn0cpy(eq->name, emu->name, sizeof(eq->name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListStatus)
|
||||
{
|
||||
auto emu = reinterpret_cast<DynamicZoneMemberList_Struct*>((*p)->pBuffer);
|
||||
if (emu->member_count == 1)
|
||||
{
|
||||
ENCODE_FORWARD(OP_DzMemberList);
|
||||
}
|
||||
}
|
||||
|
||||
ENCODE(OP_Emote)
|
||||
{
|
||||
EQApplicationPacket *in = *p;
|
||||
|
|
@ -992,7 +1022,7 @@ namespace Titanium
|
|||
eq->level1 = emu->level;
|
||||
// OUT(unknown00022[2]);
|
||||
for (r = 0; r < 5; r++) {
|
||||
OUT(binds[r].zoneId);
|
||||
OUT(binds[r].zone_id);
|
||||
OUT(binds[r].x);
|
||||
OUT(binds[r].y);
|
||||
OUT(binds[r].z);
|
||||
|
|
@ -1943,6 +1973,83 @@ namespace Titanium
|
|||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzAddPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzChooseZoneReply)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::DynamicZoneChooseZoneReply_Struct);
|
||||
SETUP_DIRECT_DECODE(DynamicZoneChooseZoneReply_Struct, structs::DynamicZoneChooseZoneReply_Struct);
|
||||
|
||||
emu->unknown000 = eq->unknown000;
|
||||
emu->unknown008 = eq->unknown004;
|
||||
IN(unknown_id1);
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(dz_type);
|
||||
IN(unknown_id2);
|
||||
emu->unknown028 = eq->unknown024;
|
||||
emu->unknown032 = eq->unknown028;
|
||||
emu->unknown036 = eq->unknown032;
|
||||
emu->unknown040 = eq->unknown036;
|
||||
emu->unknown044 = eq->unknown040;
|
||||
emu->unknown048 = eq->unknown044;
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzExpeditionInviteResponse)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionInviteResponse_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionInviteResponse_Struct, structs::ExpeditionInviteResponse_Struct);
|
||||
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(accepted);
|
||||
IN(swapping);
|
||||
strn0cpy(emu->swap_name, eq->swap_name, sizeof(emu->swap_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzMakeLeader)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzRemovePlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzSwapPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommandSwap_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommandSwap_Struct, structs::ExpeditionCommandSwap_Struct);
|
||||
|
||||
strn0cpy(emu->add_player_name, eq->add_player_name, sizeof(emu->add_player_name));
|
||||
strn0cpy(emu->rem_player_name, eq->rem_player_name, sizeof(emu->rem_player_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_Emote)
|
||||
{
|
||||
unsigned char *__eq_buffer = __packet->pBuffer;
|
||||
|
|
|
|||
|
|
@ -32,13 +32,16 @@ E(OP_Damage)
|
|||
E(OP_DeleteCharge)
|
||||
E(OP_DeleteItem)
|
||||
E(OP_DeleteSpawn)
|
||||
E(OP_DzChooseZone)
|
||||
E(OP_DzCompass)
|
||||
E(OP_DzExpeditionEndsWarning)
|
||||
E(OP_DzExpeditionInfo)
|
||||
E(OP_DzExpeditionList)
|
||||
E(OP_DzJoinExpeditionConfirm)
|
||||
E(OP_DzLeaderStatus)
|
||||
E(OP_DzExpeditionInvite)
|
||||
E(OP_DzExpeditionLockoutTimers)
|
||||
E(OP_DzMemberList)
|
||||
E(OP_DzMemberListName)
|
||||
E(OP_DzMemberListStatus)
|
||||
E(OP_DzSetLeaderName)
|
||||
E(OP_Emote)
|
||||
E(OP_FormattedMessage)
|
||||
E(OP_GroundSpawn)
|
||||
|
|
@ -86,6 +89,12 @@ D(OP_CharacterCreate)
|
|||
D(OP_ClientUpdate)
|
||||
D(OP_Consume)
|
||||
D(OP_DeleteItem)
|
||||
D(OP_DzAddPlayer)
|
||||
D(OP_DzChooseZoneReply)
|
||||
D(OP_DzExpeditionInviteResponse)
|
||||
D(OP_DzMakeLeader)
|
||||
D(OP_DzRemovePlayer)
|
||||
D(OP_DzSwapPlayer)
|
||||
D(OP_Emote)
|
||||
D(OP_FaceChange)
|
||||
D(OP_InspectAnswer)
|
||||
|
|
|
|||
|
|
@ -738,7 +738,7 @@ struct LeadershipAA_Struct {
|
|||
* Size: 20 Octets
|
||||
*/
|
||||
struct BindStruct {
|
||||
/*000*/ uint32 zoneId;
|
||||
/*000*/ uint32 zone_id;
|
||||
/*004*/ float x;
|
||||
/*008*/ float y;
|
||||
/*012*/ float z;
|
||||
|
|
@ -1509,7 +1509,7 @@ struct GMZoneRequest_Struct {
|
|||
/*0068*/ float x;
|
||||
/*0072*/ float y;
|
||||
/*0076*/ float z;
|
||||
/*0080*/ char unknown0080[4];
|
||||
/*0080*/ float heading;
|
||||
/*0084*/ uint32 success; // 0 if command failed, 1 if succeeded?
|
||||
/*0088*/
|
||||
// /*072*/ int8 success; // =0 client->server, =1 server->client, -X=specific error
|
||||
|
|
@ -3299,43 +3299,150 @@ struct VeteranReward
|
|||
/*004*/ VeteranRewardItem item;
|
||||
};
|
||||
|
||||
struct ExpeditionExpireWarning
|
||||
struct ExpeditionInvite_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ char inviter_name[64];
|
||||
/*068*/ char expedition_name[128];
|
||||
/*196*/ uint8 swapping; // 0: adding 1: swapping
|
||||
/*197*/ char swap_name[64]; // if swapping, swap name being removed
|
||||
/*261*/ uint8 padding[3];
|
||||
/*264*/ uint16 dz_zone_id; // dz_id zone/instance pair, sent back in reply
|
||||
/*268*/ uint16 dz_instance_id;
|
||||
};
|
||||
|
||||
struct ExpeditionInviteResponse_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint16 dz_zone_id; // dz_id pair sent in invite
|
||||
/*006*/ uint16 dz_instance_id;
|
||||
/*008*/ uint8 accepted; // 0: declined 1: accepted
|
||||
/*009*/ uint8 swapping; // 0: adding 1: swapping (sent in invite)
|
||||
/*010*/ char swap_name[64]; // swap name sent in invite
|
||||
/*074*/ uint8 unknown078; // padding/garbage?
|
||||
/*075*/ uint8 unknown079; // padding/garbage?
|
||||
};
|
||||
|
||||
struct DynamicZoneInfo_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 assigned; // padded bool
|
||||
/*008*/ uint32 max_players;
|
||||
/*012*/ char dz_name[128];
|
||||
/*140*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberEntry_Struct
|
||||
{
|
||||
/*000*/ char name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
/*000*/ uint8 online_status; // 0: unknown 1: Online, 2: Offline, 3: In Dynamic Zone, 4: Link Dead
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberList_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 member_count;
|
||||
/*008*/ DynamicZoneMemberEntry_Struct members[0]; // variable length
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberListName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 add_name; // padded bool, 0: remove name, 1: add name with unknown status
|
||||
/*008*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimerEntry_Struct
|
||||
{
|
||||
/*000*/ char expedition_name[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ uint32 seconds_remaining;
|
||||
/*000*/ int32 event_type; // seen -1 (0xffffffff) for replay timers and 1 for event timers
|
||||
/*000*/ char event_name[1]; // variable length, null terminated, max 0x100 (256)
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimers_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionLockoutTimerEntry_Struct timers[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneLeaderName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommand_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommandSwap_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ char add_player_name[64]; // swap to (player must confirm)
|
||||
/*068*/ char rem_player_name[64]; // swap from
|
||||
};
|
||||
|
||||
struct ExpeditionExpireWarning
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 minutes_remaining;
|
||||
};
|
||||
|
||||
struct ExpeditionInfo_Struct
|
||||
struct DynamicZoneCompassEntry_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*004*/ uint32 enabled_max;
|
||||
/*008*/ uint32 max_players;
|
||||
/*012*/ char expedition_name[128];
|
||||
/*142*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCompassEntry_Struct
|
||||
{
|
||||
/*000*/ float unknown000; //seen *((uint32*)) = 1584791871
|
||||
/*004*/ uint32 enabled; //guess
|
||||
/*008*/ uint32 unknown008; //seen 1019
|
||||
/*000*/ uint16 dz_zone_id; // target dz id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 dz_type; // 1: Expedition, 2: Tutorial (purple), 3: Task, 4: Mission, 5: Quest (green)
|
||||
/*008*/ uint32 unknown008;
|
||||
/*012*/ float y;
|
||||
/*016*/ float x;
|
||||
/*020*/ float z;
|
||||
};
|
||||
|
||||
struct ExpeditionCompass_Struct
|
||||
struct DynamicZoneCompass_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionCompassEntry_Struct entries[0];
|
||||
/*008*/ DynamicZoneCompassEntry_Struct entries[0];
|
||||
};
|
||||
|
||||
struct ExpeditionJoinPrompt_Struct
|
||||
struct DynamicZoneChooseZoneEntry_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*004*/ char player_name[64];
|
||||
/*068*/ char expedition_name[64];
|
||||
/*000*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 unknown_id1; // sent back in reply
|
||||
/*008*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest -- sent back in reply
|
||||
/*012*/ uint32 unknown_id2; // possibly an id based on dz type, for expeditions this was same as dz_id (zone|instance) but task dz was different
|
||||
/*016*/ char description[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ char leader_name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZone_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ DynamicZoneChooseZoneEntry_Struct choices[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneReply_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 unknown_id1;
|
||||
/*012*/ uint16 dz_zone_id;
|
||||
/*014*/ uint16 dz_instance_id;
|
||||
/*016*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest
|
||||
/*020*/ uint32 unknown_id2;
|
||||
/*024*/ uint32 unknown024;
|
||||
/*028*/ uint32 unknown028; // always same as unknown040
|
||||
/*032*/ uint32 unknown032;
|
||||
/*036*/ uint32 unknown036;
|
||||
/*040*/ uint32 unknown040; // always same as unknown028
|
||||
/*044*/ uint32 unknown044;
|
||||
};
|
||||
|
||||
struct LFGuild_SearchPlayer_Struct
|
||||
|
|
|
|||
|
|
@ -613,14 +613,48 @@ namespace UF
|
|||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzChooseZone)
|
||||
{
|
||||
SETUP_VAR_ENCODE(DynamicZoneChooseZone_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
buf.WriteUInt16(emu->choices[i].dz_zone_id);
|
||||
buf.WriteUInt16(emu->choices[i].dz_instance_id);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id1);
|
||||
buf.WriteUInt32(emu->choices[i].dz_type);
|
||||
buf.WriteUInt32(emu->choices[i].unknown_id2);
|
||||
buf.WriteString(emu->choices[i].description);
|
||||
buf.WriteString(emu->choices[i].leader_name);
|
||||
}
|
||||
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzCompass)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::ExpeditionCompass_Struct, sizeof(structs::ExpeditionInfo_Struct) + sizeof(structs::ExpeditionCompassEntry_Struct) * emu->count);
|
||||
SETUP_VAR_ENCODE(DynamicZoneCompass_Struct);
|
||||
ALLOC_VAR_ENCODE(structs::DynamicZoneCompass_Struct,
|
||||
sizeof(structs::DynamicZoneCompass_Struct) +
|
||||
sizeof(structs::DynamicZoneCompassEntry_Struct) * emu->count
|
||||
);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(count);
|
||||
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
OUT(entries[i].dz_zone_id);
|
||||
OUT(entries[i].dz_instance_id);
|
||||
OUT(entries[i].dz_type);
|
||||
OUT(entries[i].x);
|
||||
OUT(entries[i].y);
|
||||
OUT(entries[i].z);
|
||||
|
|
@ -641,112 +675,108 @@ namespace UF
|
|||
|
||||
ENCODE(OP_DzExpeditionInfo)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInfo_Struct, structs::ExpeditionInfo_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneInfo_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneInfo_Struct, structs::DynamicZoneInfo_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(assigned);
|
||||
OUT(max_players);
|
||||
eq->unknown004 = 785316192;
|
||||
eq->unknown008 = 435601;
|
||||
strcpy(eq->expedition_name, emu->expedition_name);
|
||||
strcpy(eq->leader_name, emu->leader_name);
|
||||
strn0cpy(eq->dz_name, emu->dz_name, sizeof(eq->dz_name));
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionList)
|
||||
ENCODE(OP_DzExpeditionInvite)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutList_Struct);
|
||||
ENCODE_LENGTH_EXACT(ExpeditionInvite_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionInvite_Struct, structs::ExpeditionInvite_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->inviter_name, emu->inviter_name, sizeof(eq->inviter_name));
|
||||
strn0cpy(eq->expedition_name, emu->expedition_name, sizeof(eq->expedition_name));
|
||||
OUT(swapping);
|
||||
strn0cpy(eq->swap_name, emu->swap_name, sizeof(eq->swap_name));
|
||||
OUT(dz_zone_id);
|
||||
OUT(dz_instance_id);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzExpeditionLockoutTimers)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLockoutTimers_Struct);
|
||||
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->count);
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].expedition, strlen(emu->entries[i].expedition));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].time_left, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->entries[i].expedition_event, strlen(emu->entries[i].expedition_event));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
buf.WriteString(emu->timers[i].expedition_name);
|
||||
buf.WriteUInt32(emu->timers[i].seconds_remaining);
|
||||
buf.WriteInt32(emu->timers[i].event_type);
|
||||
buf.WriteString(emu->timers[i].event_name);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzJoinExpeditionConfirm)
|
||||
ENCODE(OP_DzSetLeaderName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(ExpeditionJoinPrompt_Struct);
|
||||
SETUP_DIRECT_ENCODE(ExpeditionJoinPrompt_Struct, structs::ExpeditionJoinPrompt_Struct);
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneLeaderName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneLeaderName_Struct, structs::DynamicZoneLeaderName_Struct);
|
||||
|
||||
strcpy(eq->expedition_name, emu->expedition_name);
|
||||
strcpy(eq->player_name, emu->player_name);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzLeaderStatus)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionLeaderSet_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write(emu->leader_name, strlen(emu->leader_name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//0xffffffff
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&client_id, sizeof(uint32));//1
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
OUT(client_id);
|
||||
strn0cpy(eq->leader_name, emu->leader_name, sizeof(eq->leader_name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberList)
|
||||
{
|
||||
SETUP_VAR_ENCODE(ExpeditionMemberList_Struct);
|
||||
SETUP_VAR_ENCODE(DynamicZoneMemberList_Struct);
|
||||
|
||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||
|
||||
uint32 client_id = 0;
|
||||
uint8 null_term = 0;
|
||||
ss.write((const char*)&client_id, sizeof(uint32));
|
||||
ss.write((const char*)&emu->count, sizeof(uint32));
|
||||
for (uint32 i = 0; i < emu->count; ++i)
|
||||
SerializeBuffer buf;
|
||||
buf.WriteUInt32(emu->client_id);
|
||||
buf.WriteUInt32(emu->member_count);
|
||||
for (uint32 i = 0; i < emu->member_count; ++i)
|
||||
{
|
||||
ss.write(emu->entries[i].name, strlen(emu->entries[i].name));
|
||||
ss.write((const char*)&null_term, sizeof(char));
|
||||
ss.write((const char*)&emu->entries[i].status, sizeof(char));
|
||||
buf.WriteString(emu->members[i].name);
|
||||
buf.WriteUInt8(emu->members[i].online_status);
|
||||
}
|
||||
|
||||
__packet->size = ss.str().length();
|
||||
__packet->size = buf.size();
|
||||
__packet->pBuffer = new unsigned char[__packet->size];
|
||||
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
|
||||
memcpy(__packet->pBuffer, buf.buffer(), __packet->size);
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListName)
|
||||
{
|
||||
ENCODE_LENGTH_EXACT(DynamicZoneMemberListName_Struct);
|
||||
SETUP_DIRECT_ENCODE(DynamicZoneMemberListName_Struct, structs::DynamicZoneMemberListName_Struct);
|
||||
|
||||
OUT(client_id);
|
||||
OUT(add_name);
|
||||
strn0cpy(eq->name, emu->name, sizeof(eq->name));
|
||||
|
||||
FINISH_ENCODE();
|
||||
}
|
||||
|
||||
ENCODE(OP_DzMemberListStatus)
|
||||
{
|
||||
auto emu = reinterpret_cast<DynamicZoneMemberList_Struct*>((*p)->pBuffer);
|
||||
if (emu->member_count == 1)
|
||||
{
|
||||
ENCODE_FORWARD(OP_DzMemberList);
|
||||
}
|
||||
}
|
||||
|
||||
ENCODE(OP_Emote)
|
||||
{
|
||||
EQApplicationPacket *in = *p;
|
||||
|
|
@ -1577,6 +1607,7 @@ namespace UF
|
|||
OUT(FastRegenHP);
|
||||
OUT(FastRegenMana);
|
||||
OUT(FastRegenEndurance);
|
||||
OUT(underworld_teleport_index);
|
||||
|
||||
eq->FogDensity = emu->fog_density;
|
||||
|
||||
|
|
@ -1674,7 +1705,7 @@ namespace UF
|
|||
eq->level1 = emu->level;
|
||||
// OUT(unknown00022[2]);
|
||||
for (r = 0; r < 5; r++) {
|
||||
OUT(binds[r].zoneId);
|
||||
OUT(binds[r].zone_id);
|
||||
OUT(binds[r].x);
|
||||
OUT(binds[r].y);
|
||||
OUT(binds[r].z);
|
||||
|
|
@ -3314,6 +3345,84 @@ namespace UF
|
|||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzAddPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzChooseZoneReply)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::DynamicZoneChooseZoneReply_Struct);
|
||||
SETUP_DIRECT_DECODE(DynamicZoneChooseZoneReply_Struct, structs::DynamicZoneChooseZoneReply_Struct);
|
||||
|
||||
IN(unknown000);
|
||||
IN(unknown004);
|
||||
IN(unknown008);
|
||||
IN(unknown_id1);
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(dz_type);
|
||||
IN(unknown_id2);
|
||||
IN(unknown028);
|
||||
IN(unknown032);
|
||||
IN(unknown036);
|
||||
IN(unknown040);
|
||||
IN(unknown044);
|
||||
IN(unknown048);
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzExpeditionInviteResponse)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionInviteResponse_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionInviteResponse_Struct, structs::ExpeditionInviteResponse_Struct);
|
||||
|
||||
IN(dz_zone_id);
|
||||
IN(dz_instance_id);
|
||||
IN(accepted);
|
||||
IN(swapping);
|
||||
strn0cpy(emu->swap_name, eq->swap_name, sizeof(emu->swap_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzMakeLeader)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzRemovePlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommand_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommand_Struct, structs::ExpeditionCommand_Struct);
|
||||
|
||||
strn0cpy(emu->name, eq->name, sizeof(emu->name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_DzSwapPlayer)
|
||||
{
|
||||
DECODE_LENGTH_EXACT(structs::ExpeditionCommandSwap_Struct);
|
||||
SETUP_DIRECT_DECODE(ExpeditionCommandSwap_Struct, structs::ExpeditionCommandSwap_Struct);
|
||||
|
||||
strn0cpy(emu->add_player_name, eq->add_player_name, sizeof(emu->add_player_name));
|
||||
strn0cpy(emu->rem_player_name, eq->rem_player_name, sizeof(emu->rem_player_name));
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
}
|
||||
|
||||
DECODE(OP_Emote)
|
||||
{
|
||||
unsigned char *__eq_buffer = __packet->pBuffer;
|
||||
|
|
|
|||
|
|
@ -38,13 +38,16 @@ E(OP_Damage)
|
|||
E(OP_DeleteCharge)
|
||||
E(OP_DeleteItem)
|
||||
E(OP_DisciplineUpdate)
|
||||
E(OP_DzChooseZone)
|
||||
E(OP_DzCompass)
|
||||
E(OP_DzExpeditionEndsWarning)
|
||||
E(OP_DzExpeditionInfo)
|
||||
E(OP_DzExpeditionList)
|
||||
E(OP_DzJoinExpeditionConfirm)
|
||||
E(OP_DzLeaderStatus)
|
||||
E(OP_DzExpeditionInvite)
|
||||
E(OP_DzExpeditionLockoutTimers)
|
||||
E(OP_DzMemberList)
|
||||
E(OP_DzMemberListName)
|
||||
E(OP_DzMemberListStatus)
|
||||
E(OP_DzSetLeaderName)
|
||||
E(OP_Emote)
|
||||
E(OP_ExpansionInfo)
|
||||
E(OP_FormattedMessage)
|
||||
|
|
@ -120,6 +123,12 @@ D(OP_ConsiderCorpse)
|
|||
D(OP_Consume)
|
||||
D(OP_Damage)
|
||||
D(OP_DeleteItem)
|
||||
D(OP_DzAddPlayer)
|
||||
D(OP_DzChooseZoneReply)
|
||||
D(OP_DzExpeditionInviteResponse)
|
||||
D(OP_DzMakeLeader)
|
||||
D(OP_DzRemovePlayer)
|
||||
D(OP_DzSwapPlayer)
|
||||
D(OP_Emote)
|
||||
D(OP_EnvDamage)
|
||||
D(OP_FaceChange)
|
||||
|
|
|
|||
|
|
@ -444,7 +444,11 @@ struct NewZone_Struct {
|
|||
/*0848*/ int32 unknown848;
|
||||
/*0852*/ uint16 zone_id;
|
||||
/*0854*/ uint16 zone_instance;
|
||||
/*0856*/ char unknown856[20];
|
||||
/*0856*/ uint32 scriptNPCReceivedanItem;
|
||||
/*0860*/ uint32 bCheck; // padded bool
|
||||
/*0864*/ uint32 scriptIDSomething;
|
||||
/*0868*/ uint32 underworld_teleport_index; // > 0 teleports w/ zone point index, invalid succors, -1 affects some collisions
|
||||
/*0872*/ uint32 scriptIDSomething3;
|
||||
/*0876*/ uint32 SuspendBuffs;
|
||||
/*0880*/ uint32 unknown880; //seen 50
|
||||
/*0884*/ uint32 unknown884; //seen 10
|
||||
|
|
@ -829,7 +833,7 @@ struct LeadershipAA_Struct {
|
|||
* Size: 20 Octets
|
||||
*/
|
||||
struct BindStruct {
|
||||
/*000*/ uint32 zoneId;
|
||||
/*000*/ uint32 zone_id;
|
||||
/*004*/ float x;
|
||||
/*008*/ float y;
|
||||
/*012*/ float z;
|
||||
|
|
@ -1751,7 +1755,7 @@ struct GMZoneRequest_Struct {
|
|||
/*0068*/ float x;
|
||||
/*0072*/ float y;
|
||||
/*0076*/ float z;
|
||||
/*0080*/ char unknown0080[4];
|
||||
/*0080*/ float heading;
|
||||
/*0084*/ uint32 success; // 0 if command failed, 1 if succeeded?
|
||||
/*0088*/
|
||||
// /*072*/ int8 success; // =0 client->server, =1 server->client, -X=specific error
|
||||
|
|
@ -4246,52 +4250,160 @@ struct VeteranReward
|
|||
/*012*/ VeteranRewardItem items[8];
|
||||
};
|
||||
|
||||
struct ExpeditionEntryHeader_Struct
|
||||
|
||||
struct ExpeditionInvite_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*000*/ uint32 number_of_entries;
|
||||
/*000*/ uint32 client_id; // unique character id
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char inviter_name[64];
|
||||
/*072*/ char expedition_name[128];
|
||||
/*200*/ uint8 swapping; // 0: adding 1: swapping
|
||||
/*201*/ char swap_name[64]; // if swapping, swap name being removed
|
||||
/*265*/ uint8 padding[3];
|
||||
/*268*/ uint16 dz_zone_id; // dz_id zone/instance pair, sent back in reply
|
||||
/*270*/ uint16 dz_instance_id;
|
||||
};
|
||||
|
||||
struct ExpeditionJoinPrompt_Struct
|
||||
struct ExpeditionInviteResponse_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char player_name[64];
|
||||
/*072*/ char expedition_name[64];
|
||||
/*008*/ uint16 dz_zone_id; // dz_id pair sent in invite
|
||||
/*010*/ uint16 dz_instance_id;
|
||||
/*012*/ uint8 accepted; // 0: declined 1: accepted
|
||||
/*013*/ uint8 swapping; // 0: adding 1: swapping (sent in invite)
|
||||
/*014*/ char swap_name[64]; // swap name sent in invite
|
||||
/*078*/ uint8 unknown078; // padding garbage?
|
||||
/*079*/ uint8 unknown079; // padding garbage?
|
||||
};
|
||||
|
||||
struct DynamicZoneInfo_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 assigned; // padded bool
|
||||
/*012*/ uint32 max_players;
|
||||
/*016*/ char dz_name[128];
|
||||
/*144*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberEntry_Struct
|
||||
{
|
||||
/*000*/ char name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
/*000*/ uint8 online_status; // 0: unknown 1: Online, 2: Offline, 3: In Dynamic Zone, 4: Link Dead
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberList_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 member_count; // number of players in window
|
||||
/*008*/ DynamicZoneMemberEntry_Struct members[0]; // variable length
|
||||
};
|
||||
|
||||
struct DynamicZoneMemberListName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 add_name; // padded bool, 0: remove name, 1: add name with unknown status
|
||||
/*012*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimerEntry_Struct
|
||||
{
|
||||
/*000*/ char expedition_name[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ uint32 seconds_remaining;
|
||||
/*000*/ int32 event_type; // seen -1 (0xffffffff) for replay timers and 1 for event timers
|
||||
/*000*/ char event_name[1]; // variable length, null terminated, max 0x100 (256)
|
||||
};
|
||||
|
||||
struct ExpeditionLockoutTimers_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionLockoutTimerEntry_Struct timers[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneLeaderName_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommand_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCommandSwap_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ char add_player_name[64]; // swap to (player must confirm)
|
||||
/*072*/ char rem_player_name[64]; // swap from
|
||||
};
|
||||
|
||||
struct ExpeditionExpireWarning
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*008*/ uint32 minutes_remaining;
|
||||
};
|
||||
|
||||
struct ExpeditionInfo_Struct
|
||||
struct DynamicZoneCompassEntry_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*004*/ uint32 unknown004;
|
||||
/*000*/ uint16 dz_zone_id; // target dz id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 dz_type; // 1: Expedition, 2: Tutorial (purple), 3: Task, 4: Mission, 5: Quest (green)
|
||||
/*008*/ uint32 unknown008;
|
||||
/*012*/ uint32 max_players;
|
||||
/*016*/ char expedition_name[128];
|
||||
/*142*/ char leader_name[64];
|
||||
};
|
||||
|
||||
struct ExpeditionCompassEntry_Struct
|
||||
{
|
||||
/*000*/ float unknown000; //seen *((uint32*)) = 1584791871
|
||||
/*004*/ uint32 enabled; //guess
|
||||
/*008*/ uint32 unknown008; //seen 1019
|
||||
/*012*/ float y;
|
||||
/*016*/ float x;
|
||||
/*020*/ float z;
|
||||
};
|
||||
|
||||
struct ExpeditionCompass_Struct
|
||||
struct DynamicZoneCompass_Struct
|
||||
{
|
||||
/*000*/ uint32 clientid;
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ ExpeditionCompassEntry_Struct entries[0];
|
||||
/*008*/ DynamicZoneCompassEntry_Struct entries[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneEntry_Struct
|
||||
{
|
||||
/*000*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*002*/ uint16 dz_instance_id;
|
||||
/*004*/ uint32 unknown_id1; // sent back in reply
|
||||
/*008*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest -- sent back in reply
|
||||
/*012*/ uint32 unknown_id2; // possibly an id based on dz type, for expeditions this was same as dz_id (zone|instance) but task dz was different
|
||||
/*016*/ char description[1]; // variable length, null terminated, max 0x80 (128)
|
||||
/*000*/ char leader_name[1]; // variable length, null terminated, max 0x40 (64)
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZone_Struct
|
||||
{
|
||||
/*000*/ uint32 client_id;
|
||||
/*004*/ uint32 count;
|
||||
/*008*/ DynamicZoneChooseZoneEntry_Struct choices[0];
|
||||
};
|
||||
|
||||
struct DynamicZoneChooseZoneReply_Struct
|
||||
{
|
||||
/*000*/ uint32 unknown000; // ff ff ff ff
|
||||
/*004*/ uint32 unknown004; // seen 69 00 00 00
|
||||
/*008*/ uint32 unknown008; // ff ff ff ff
|
||||
/*012*/ uint32 unknown_id1; // from choose zone entry message
|
||||
/*016*/ uint16 dz_zone_id; // dz_id pair
|
||||
/*018*/ uint16 dz_instance_id;
|
||||
/*020*/ uint32 dz_type; // 1: Expedition, 2: Tutorial, 3: Task, 4: Mission, 5: Quest
|
||||
/*024*/ uint32 unknown_id2; // from choose zone entry message
|
||||
/*028*/ uint32 unknown028; // 00 00 00 00
|
||||
/*032*/ uint32 unknown032; // always same as unknown044
|
||||
/*036*/ uint32 unknown036;
|
||||
/*040*/ uint32 unknown040;
|
||||
/*044*/ uint32 unknown044; // always same as unknown032
|
||||
/*048*/ uint32 unknown048; // seen 01 00 00 00 and 02 00 00 00
|
||||
};
|
||||
|
||||
struct AltCurrencySelectItem_Struct {
|
||||
|
|
|
|||
|
|
@ -46,15 +46,15 @@ std::string GetPlatformName()
|
|||
{
|
||||
switch (GetExecutablePlatformInt()) {
|
||||
case EQEmuExePlatform::ExePlatformWorld:
|
||||
return "WorldServer";
|
||||
return "World";
|
||||
case EQEmuExePlatform::ExePlatformQueryServ:
|
||||
return "QueryServer";
|
||||
return "QS";
|
||||
case EQEmuExePlatform::ExePlatformZone:
|
||||
return "ZoneServer";
|
||||
return "Zone";
|
||||
case EQEmuExePlatform::ExePlatformUCS:
|
||||
return "UCS";
|
||||
case EQEmuExePlatform::ExePlatformLogin:
|
||||
return "LoginServer";
|
||||
return "Login";
|
||||
case EQEmuExePlatform::ExePlatformSocket_Server:
|
||||
return "SocketServer";
|
||||
case EQEmuExePlatform::ExePlatformSharedMemory:
|
||||
|
|
@ -70,4 +70,4 @@ std::string GetPlatformName()
|
|||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_AA_ABILITY_REPOSITORY_H
|
||||
|
|
@ -81,21 +64,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("aa_ability");
|
||||
|
|
@ -115,7 +83,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -156,10 +124,11 @@ public:
|
|||
}
|
||||
|
||||
static AaAbility FindOne(
|
||||
Database& db,
|
||||
int aa_ability_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -193,10 +162,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int aa_ability_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -209,6 +179,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AaAbility aa_ability_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -231,7 +202,7 @@ public:
|
|||
update_values.push_back(columns[12] + " = " + std::to_string(aa_ability_entry.enabled));
|
||||
update_values.push_back(columns[13] + " = " + std::to_string(aa_ability_entry.reset_on_death));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -245,6 +216,7 @@ public:
|
|||
}
|
||||
|
||||
static AaAbility InsertOne(
|
||||
Database& db,
|
||||
AaAbility aa_ability_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -265,7 +237,7 @@ public:
|
|||
insert_values.push_back(std::to_string(aa_ability_entry.enabled));
|
||||
insert_values.push_back(std::to_string(aa_ability_entry.reset_on_death));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -284,6 +256,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AaAbility> aa_ability_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -312,7 +285,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -323,11 +296,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AaAbility> All()
|
||||
static std::vector<AaAbility> All(Database& db)
|
||||
{
|
||||
std::vector<AaAbility> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -360,11 +333,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AaAbility> GetWhere(std::string where_filter)
|
||||
static std::vector<AaAbility> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AaAbility> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -398,9 +371,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -411,9 +384,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_AA_RANK_EFFECTS_REPOSITORY_H
|
||||
|
|
@ -63,21 +46,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("aa_rank_effects");
|
||||
|
|
@ -97,7 +65,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -129,10 +97,11 @@ public:
|
|||
}
|
||||
|
||||
static AaRankEffects FindOne(
|
||||
Database& db,
|
||||
int aa_rank_effects_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -157,10 +126,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int aa_rank_effects_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -173,6 +143,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AaRankEffects aa_rank_effects_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -186,7 +157,7 @@ public:
|
|||
update_values.push_back(columns[3] + " = " + std::to_string(aa_rank_effects_entry.base1));
|
||||
update_values.push_back(columns[4] + " = " + std::to_string(aa_rank_effects_entry.base2));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -200,6 +171,7 @@ public:
|
|||
}
|
||||
|
||||
static AaRankEffects InsertOne(
|
||||
Database& db,
|
||||
AaRankEffects aa_rank_effects_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -211,7 +183,7 @@ public:
|
|||
insert_values.push_back(std::to_string(aa_rank_effects_entry.base1));
|
||||
insert_values.push_back(std::to_string(aa_rank_effects_entry.base2));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -230,6 +202,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AaRankEffects> aa_rank_effects_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -249,7 +222,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -260,11 +233,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AaRankEffects> All()
|
||||
static std::vector<AaRankEffects> All(Database& db)
|
||||
{
|
||||
std::vector<AaRankEffects> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -288,11 +261,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AaRankEffects> GetWhere(std::string where_filter)
|
||||
static std::vector<AaRankEffects> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AaRankEffects> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -317,9 +290,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -330,9 +303,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_AA_RANK_PREREQS_REPOSITORY_H
|
||||
|
|
@ -59,21 +42,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("aa_rank_prereqs");
|
||||
|
|
@ -93,7 +61,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -123,10 +91,11 @@ public:
|
|||
}
|
||||
|
||||
static AaRankPrereqs FindOne(
|
||||
Database& db,
|
||||
int aa_rank_prereqs_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -149,10 +118,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int aa_rank_prereqs_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -165,6 +135,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AaRankPrereqs aa_rank_prereqs_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -176,7 +147,7 @@ public:
|
|||
update_values.push_back(columns[1] + " = " + std::to_string(aa_rank_prereqs_entry.aa_id));
|
||||
update_values.push_back(columns[2] + " = " + std::to_string(aa_rank_prereqs_entry.points));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -190,6 +161,7 @@ public:
|
|||
}
|
||||
|
||||
static AaRankPrereqs InsertOne(
|
||||
Database& db,
|
||||
AaRankPrereqs aa_rank_prereqs_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -199,7 +171,7 @@ public:
|
|||
insert_values.push_back(std::to_string(aa_rank_prereqs_entry.aa_id));
|
||||
insert_values.push_back(std::to_string(aa_rank_prereqs_entry.points));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -218,6 +190,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AaRankPrereqs> aa_rank_prereqs_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -235,7 +208,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -246,11 +219,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AaRankPrereqs> All()
|
||||
static std::vector<AaRankPrereqs> All(Database& db)
|
||||
{
|
||||
std::vector<AaRankPrereqs> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -272,11 +245,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AaRankPrereqs> GetWhere(std::string where_filter)
|
||||
static std::vector<AaRankPrereqs> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AaRankPrereqs> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -299,9 +272,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -312,9 +285,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_AA_RANKS_REPOSITORY_H
|
||||
|
|
@ -79,21 +62,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("aa_ranks");
|
||||
|
|
@ -113,7 +81,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -153,10 +121,11 @@ public:
|
|||
}
|
||||
|
||||
static AaRanks FindOne(
|
||||
Database& db,
|
||||
int aa_ranks_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -189,10 +158,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int aa_ranks_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -205,6 +175,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AaRanks aa_ranks_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -226,7 +197,7 @@ public:
|
|||
update_values.push_back(columns[11] + " = " + std::to_string(aa_ranks_entry.prev_id));
|
||||
update_values.push_back(columns[12] + " = " + std::to_string(aa_ranks_entry.next_id));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -240,6 +211,7 @@ public:
|
|||
}
|
||||
|
||||
static AaRanks InsertOne(
|
||||
Database& db,
|
||||
AaRanks aa_ranks_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -259,7 +231,7 @@ public:
|
|||
insert_values.push_back(std::to_string(aa_ranks_entry.prev_id));
|
||||
insert_values.push_back(std::to_string(aa_ranks_entry.next_id));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -278,6 +250,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AaRanks> aa_ranks_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -305,7 +278,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -316,11 +289,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AaRanks> All()
|
||||
static std::vector<AaRanks> All(Database& db)
|
||||
{
|
||||
std::vector<AaRanks> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -352,11 +325,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AaRanks> GetWhere(std::string where_filter)
|
||||
static std::vector<AaRanks> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AaRanks> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -389,9 +362,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -402,9 +375,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ACCOUNT_FLAGS_REPOSITORY_H
|
||||
|
|
@ -59,21 +42,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("account_flags");
|
||||
|
|
@ -93,7 +61,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -123,10 +91,11 @@ public:
|
|||
}
|
||||
|
||||
static AccountFlags FindOne(
|
||||
Database& db,
|
||||
int account_flags_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -149,10 +118,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int account_flags_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -165,6 +135,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AccountFlags account_flags_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -176,7 +147,7 @@ public:
|
|||
update_values.push_back(columns[1] + " = '" + EscapeString(account_flags_entry.p_flag) + "'");
|
||||
update_values.push_back(columns[2] + " = '" + EscapeString(account_flags_entry.p_value) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -190,6 +161,7 @@ public:
|
|||
}
|
||||
|
||||
static AccountFlags InsertOne(
|
||||
Database& db,
|
||||
AccountFlags account_flags_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -199,7 +171,7 @@ public:
|
|||
insert_values.push_back("'" + EscapeString(account_flags_entry.p_flag) + "'");
|
||||
insert_values.push_back("'" + EscapeString(account_flags_entry.p_value) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -218,6 +190,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AccountFlags> account_flags_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -235,7 +208,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -246,11 +219,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AccountFlags> All()
|
||||
static std::vector<AccountFlags> All(Database& db)
|
||||
{
|
||||
std::vector<AccountFlags> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -272,11 +245,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AccountFlags> GetWhere(std::string where_filter)
|
||||
static std::vector<AccountFlags> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AccountFlags> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -299,9 +272,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -312,9 +285,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ACCOUNT_IP_REPOSITORY_H
|
||||
|
|
@ -61,21 +44,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("account_ip");
|
||||
|
|
@ -95,7 +63,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -126,10 +94,11 @@ public:
|
|||
}
|
||||
|
||||
static AccountIp FindOne(
|
||||
Database& db,
|
||||
int account_ip_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -153,10 +122,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int account_ip_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -169,6 +139,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AccountIp account_ip_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -181,7 +152,7 @@ public:
|
|||
update_values.push_back(columns[2] + " = " + std::to_string(account_ip_entry.count));
|
||||
update_values.push_back(columns[3] + " = '" + EscapeString(account_ip_entry.lastused) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -195,6 +166,7 @@ public:
|
|||
}
|
||||
|
||||
static AccountIp InsertOne(
|
||||
Database& db,
|
||||
AccountIp account_ip_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -205,7 +177,7 @@ public:
|
|||
insert_values.push_back(std::to_string(account_ip_entry.count));
|
||||
insert_values.push_back("'" + EscapeString(account_ip_entry.lastused) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -224,6 +196,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AccountIp> account_ip_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -242,7 +215,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -253,11 +226,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AccountIp> All()
|
||||
static std::vector<AccountIp> All(Database& db)
|
||||
{
|
||||
std::vector<AccountIp> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -280,11 +253,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AccountIp> GetWhere(std::string where_filter)
|
||||
static std::vector<AccountIp> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AccountIp> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -308,9 +281,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -321,9 +294,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ACCOUNT_REPOSITORY_H
|
||||
|
|
@ -91,21 +74,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("account");
|
||||
|
|
@ -125,7 +93,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -171,10 +139,11 @@ public:
|
|||
}
|
||||
|
||||
static Account FindOne(
|
||||
Database& db,
|
||||
int account_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -213,10 +182,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int account_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -229,6 +199,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
Account account_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -255,7 +226,7 @@ public:
|
|||
update_values.push_back(columns[17] + " = '" + EscapeString(account_entry.ban_reason) + "'");
|
||||
update_values.push_back(columns[18] + " = '" + EscapeString(account_entry.suspend_reason) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -269,11 +240,13 @@ public:
|
|||
}
|
||||
|
||||
static Account InsertOne(
|
||||
Database& db,
|
||||
Account account_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(account_entry.id));
|
||||
insert_values.push_back("'" + EscapeString(account_entry.name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(account_entry.charname) + "'");
|
||||
insert_values.push_back(std::to_string(account_entry.sharedplat));
|
||||
|
|
@ -293,7 +266,7 @@ public:
|
|||
insert_values.push_back("'" + EscapeString(account_entry.ban_reason) + "'");
|
||||
insert_values.push_back("'" + EscapeString(account_entry.suspend_reason) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -312,6 +285,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<Account> account_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -320,6 +294,7 @@ public:
|
|||
for (auto &account_entry: account_entries) {
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(account_entry.id));
|
||||
insert_values.push_back("'" + EscapeString(account_entry.name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(account_entry.charname) + "'");
|
||||
insert_values.push_back(std::to_string(account_entry.sharedplat));
|
||||
|
|
@ -344,7 +319,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -355,11 +330,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<Account> All()
|
||||
static std::vector<Account> All(Database& db)
|
||||
{
|
||||
std::vector<Account> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -397,11 +372,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<Account> GetWhere(std::string where_filter)
|
||||
static std::vector<Account> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<Account> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -440,9 +415,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -453,9 +428,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ACCOUNT_REWARDS_REPOSITORY_H
|
||||
|
|
@ -59,21 +42,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("account_rewards");
|
||||
|
|
@ -93,7 +61,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -123,10 +91,11 @@ public:
|
|||
}
|
||||
|
||||
static AccountRewards FindOne(
|
||||
Database& db,
|
||||
int account_rewards_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -149,10 +118,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int account_rewards_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -165,6 +135,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AccountRewards account_rewards_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -176,7 +147,7 @@ public:
|
|||
update_values.push_back(columns[1] + " = " + std::to_string(account_rewards_entry.reward_id));
|
||||
update_values.push_back(columns[2] + " = " + std::to_string(account_rewards_entry.amount));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -190,6 +161,7 @@ public:
|
|||
}
|
||||
|
||||
static AccountRewards InsertOne(
|
||||
Database& db,
|
||||
AccountRewards account_rewards_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -199,7 +171,7 @@ public:
|
|||
insert_values.push_back(std::to_string(account_rewards_entry.reward_id));
|
||||
insert_values.push_back(std::to_string(account_rewards_entry.amount));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -218,6 +190,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AccountRewards> account_rewards_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -235,7 +208,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -246,11 +219,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AccountRewards> All()
|
||||
static std::vector<AccountRewards> All(Database& db)
|
||||
{
|
||||
std::vector<AccountRewards> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -272,11 +245,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AccountRewards> GetWhere(std::string where_filter)
|
||||
static std::vector<AccountRewards> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AccountRewards> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -299,9 +272,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -312,9 +285,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ADVENTURE_DETAILS_REPOSITORY_H
|
||||
|
|
@ -71,21 +54,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("adventure_details");
|
||||
|
|
@ -105,7 +73,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -141,10 +109,11 @@ public:
|
|||
}
|
||||
|
||||
static AdventureDetails FindOne(
|
||||
Database& db,
|
||||
int adventure_details_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -173,10 +142,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int adventure_details_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -189,6 +159,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AdventureDetails adventure_details_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -205,7 +176,7 @@ public:
|
|||
update_values.push_back(columns[7] + " = " + std::to_string(adventure_details_entry.time_zoned));
|
||||
update_values.push_back(columns[8] + " = " + std::to_string(adventure_details_entry.time_completed));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -219,11 +190,13 @@ public:
|
|||
}
|
||||
|
||||
static AdventureDetails InsertOne(
|
||||
Database& db,
|
||||
AdventureDetails adventure_details_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(adventure_details_entry.id));
|
||||
insert_values.push_back(std::to_string(adventure_details_entry.adventure_id));
|
||||
insert_values.push_back(std::to_string(adventure_details_entry.instance_id));
|
||||
insert_values.push_back(std::to_string(adventure_details_entry.count));
|
||||
|
|
@ -233,7 +206,7 @@ public:
|
|||
insert_values.push_back(std::to_string(adventure_details_entry.time_zoned));
|
||||
insert_values.push_back(std::to_string(adventure_details_entry.time_completed));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -252,6 +225,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AdventureDetails> adventure_details_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -260,6 +234,7 @@ public:
|
|||
for (auto &adventure_details_entry: adventure_details_entries) {
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(adventure_details_entry.id));
|
||||
insert_values.push_back(std::to_string(adventure_details_entry.adventure_id));
|
||||
insert_values.push_back(std::to_string(adventure_details_entry.instance_id));
|
||||
insert_values.push_back(std::to_string(adventure_details_entry.count));
|
||||
|
|
@ -274,7 +249,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -285,11 +260,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AdventureDetails> All()
|
||||
static std::vector<AdventureDetails> All(Database& db)
|
||||
{
|
||||
std::vector<AdventureDetails> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -317,11 +292,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AdventureDetails> GetWhere(std::string where_filter)
|
||||
static std::vector<AdventureDetails> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AdventureDetails> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -350,9 +325,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -363,9 +338,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ADVENTURE_MEMBERS_REPOSITORY_H
|
||||
|
|
@ -57,21 +40,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("adventure_members");
|
||||
|
|
@ -91,7 +59,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -120,10 +88,11 @@ public:
|
|||
}
|
||||
|
||||
static AdventureMembers FindOne(
|
||||
Database& db,
|
||||
int adventure_members_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -145,10 +114,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int adventure_members_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -161,6 +131,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AdventureMembers adventure_members_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -171,7 +142,7 @@ public:
|
|||
update_values.push_back(columns[0] + " = " + std::to_string(adventure_members_entry.id));
|
||||
update_values.push_back(columns[1] + " = " + std::to_string(adventure_members_entry.charid));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -185,6 +156,7 @@ public:
|
|||
}
|
||||
|
||||
static AdventureMembers InsertOne(
|
||||
Database& db,
|
||||
AdventureMembers adventure_members_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -193,7 +165,7 @@ public:
|
|||
insert_values.push_back(std::to_string(adventure_members_entry.id));
|
||||
insert_values.push_back(std::to_string(adventure_members_entry.charid));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -212,6 +184,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AdventureMembers> adventure_members_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -228,7 +201,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -239,11 +212,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AdventureMembers> All()
|
||||
static std::vector<AdventureMembers> All(Database& db)
|
||||
{
|
||||
std::vector<AdventureMembers> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -264,11 +237,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AdventureMembers> GetWhere(std::string where_filter)
|
||||
static std::vector<AdventureMembers> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AdventureMembers> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -290,9 +263,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -303,9 +276,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ADVENTURE_STATS_REPOSITORY_H
|
||||
|
|
@ -75,21 +58,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("adventure_stats");
|
||||
|
|
@ -109,7 +77,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -147,10 +115,11 @@ public:
|
|||
}
|
||||
|
||||
static AdventureStats FindOne(
|
||||
Database& db,
|
||||
int adventure_stats_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -181,10 +150,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int adventure_stats_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -197,6 +167,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AdventureStats adventure_stats_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -216,7 +187,7 @@ public:
|
|||
update_values.push_back(columns[9] + " = " + std::to_string(adventure_stats_entry.ruj_losses));
|
||||
update_values.push_back(columns[10] + " = " + std::to_string(adventure_stats_entry.tak_losses));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -230,6 +201,7 @@ public:
|
|||
}
|
||||
|
||||
static AdventureStats InsertOne(
|
||||
Database& db,
|
||||
AdventureStats adventure_stats_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -247,7 +219,7 @@ public:
|
|||
insert_values.push_back(std::to_string(adventure_stats_entry.ruj_losses));
|
||||
insert_values.push_back(std::to_string(adventure_stats_entry.tak_losses));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -266,6 +238,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AdventureStats> adventure_stats_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -291,7 +264,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -302,11 +275,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AdventureStats> All()
|
||||
static std::vector<AdventureStats> All(Database& db)
|
||||
{
|
||||
std::vector<AdventureStats> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -336,11 +309,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AdventureStats> GetWhere(std::string where_filter)
|
||||
static std::vector<AdventureStats> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AdventureStats> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -371,9 +344,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -384,9 +357,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_FLAVOR_REPOSITORY_H
|
||||
|
|
@ -57,21 +40,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("adventure_template_entry_flavor");
|
||||
|
|
@ -91,7 +59,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -120,10 +88,11 @@ public:
|
|||
}
|
||||
|
||||
static AdventureTemplateEntryFlavor FindOne(
|
||||
Database& db,
|
||||
int adventure_template_entry_flavor_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -145,10 +114,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int adventure_template_entry_flavor_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -161,6 +131,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AdventureTemplateEntryFlavor adventure_template_entry_flavor_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -171,7 +142,7 @@ public:
|
|||
update_values.push_back(columns[0] + " = " + std::to_string(adventure_template_entry_flavor_entry.id));
|
||||
update_values.push_back(columns[1] + " = '" + EscapeString(adventure_template_entry_flavor_entry.text) + "'");
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -185,6 +156,7 @@ public:
|
|||
}
|
||||
|
||||
static AdventureTemplateEntryFlavor InsertOne(
|
||||
Database& db,
|
||||
AdventureTemplateEntryFlavor adventure_template_entry_flavor_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -193,7 +165,7 @@ public:
|
|||
insert_values.push_back(std::to_string(adventure_template_entry_flavor_entry.id));
|
||||
insert_values.push_back("'" + EscapeString(adventure_template_entry_flavor_entry.text) + "'");
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -212,6 +184,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AdventureTemplateEntryFlavor> adventure_template_entry_flavor_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -228,7 +201,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -239,11 +212,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AdventureTemplateEntryFlavor> All()
|
||||
static std::vector<AdventureTemplateEntryFlavor> All(Database& db)
|
||||
{
|
||||
std::vector<AdventureTemplateEntryFlavor> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -264,11 +237,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AdventureTemplateEntryFlavor> GetWhere(std::string where_filter)
|
||||
static std::vector<AdventureTemplateEntryFlavor> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AdventureTemplateEntryFlavor> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -290,9 +263,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -303,9 +276,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_REPOSITORY_H
|
||||
|
|
@ -57,21 +40,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("adventure_template_entry");
|
||||
|
|
@ -91,7 +59,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -120,10 +88,11 @@ public:
|
|||
}
|
||||
|
||||
static AdventureTemplateEntry FindOne(
|
||||
Database& db,
|
||||
int adventure_template_entry_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -145,10 +114,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int adventure_template_entry_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -161,6 +131,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AdventureTemplateEntry adventure_template_entry_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -171,7 +142,7 @@ public:
|
|||
update_values.push_back(columns[0] + " = " + std::to_string(adventure_template_entry_entry.id));
|
||||
update_values.push_back(columns[1] + " = " + std::to_string(adventure_template_entry_entry.template_id));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -185,6 +156,7 @@ public:
|
|||
}
|
||||
|
||||
static AdventureTemplateEntry InsertOne(
|
||||
Database& db,
|
||||
AdventureTemplateEntry adventure_template_entry_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -193,7 +165,7 @@ public:
|
|||
insert_values.push_back(std::to_string(adventure_template_entry_entry.id));
|
||||
insert_values.push_back(std::to_string(adventure_template_entry_entry.template_id));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -212,6 +184,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AdventureTemplateEntry> adventure_template_entry_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -228,7 +201,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -239,11 +212,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AdventureTemplateEntry> All()
|
||||
static std::vector<AdventureTemplateEntry> All(Database& db)
|
||||
{
|
||||
std::vector<AdventureTemplateEntry> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -264,11 +237,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AdventureTemplateEntry> GetWhere(std::string where_filter)
|
||||
static std::vector<AdventureTemplateEntry> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AdventureTemplateEntry> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -290,9 +263,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -303,9 +276,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ADVENTURE_TEMPLATE_REPOSITORY_H
|
||||
|
|
@ -119,21 +102,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("adventure_template");
|
||||
|
|
@ -153,7 +121,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -213,10 +181,11 @@ public:
|
|||
}
|
||||
|
||||
static AdventureTemplate FindOne(
|
||||
Database& db,
|
||||
int adventure_template_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -269,10 +238,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int adventure_template_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -285,6 +255,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AdventureTemplate adventure_template_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -326,7 +297,7 @@ public:
|
|||
update_values.push_back(columns[31] + " = " + std::to_string(adventure_template_entry.graveyard_z));
|
||||
update_values.push_back(columns[32] + " = " + std::to_string(adventure_template_entry.graveyard_radius));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -340,6 +311,7 @@ public:
|
|||
}
|
||||
|
||||
static AdventureTemplate InsertOne(
|
||||
Database& db,
|
||||
AdventureTemplate adventure_template_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -379,7 +351,7 @@ public:
|
|||
insert_values.push_back(std::to_string(adventure_template_entry.graveyard_z));
|
||||
insert_values.push_back(std::to_string(adventure_template_entry.graveyard_radius));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -398,6 +370,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AdventureTemplate> adventure_template_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -445,7 +418,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -456,11 +429,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AdventureTemplate> All()
|
||||
static std::vector<AdventureTemplate> All(Database& db)
|
||||
{
|
||||
std::vector<AdventureTemplate> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -512,11 +485,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AdventureTemplate> GetWhere(std::string where_filter)
|
||||
static std::vector<AdventureTemplate> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AdventureTemplate> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -569,9 +542,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -582,9 +555,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_ALTERNATE_CURRENCY_REPOSITORY_H
|
||||
|
|
@ -57,21 +40,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("alternate_currency");
|
||||
|
|
@ -91,7 +59,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -120,10 +88,11 @@ public:
|
|||
}
|
||||
|
||||
static AlternateCurrency FindOne(
|
||||
Database& db,
|
||||
int alternate_currency_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -145,10 +114,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int alternate_currency_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -161,6 +131,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
AlternateCurrency alternate_currency_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -171,7 +142,7 @@ public:
|
|||
update_values.push_back(columns[0] + " = " + std::to_string(alternate_currency_entry.id));
|
||||
update_values.push_back(columns[1] + " = " + std::to_string(alternate_currency_entry.item_id));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -185,6 +156,7 @@ public:
|
|||
}
|
||||
|
||||
static AlternateCurrency InsertOne(
|
||||
Database& db,
|
||||
AlternateCurrency alternate_currency_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -193,7 +165,7 @@ public:
|
|||
insert_values.push_back(std::to_string(alternate_currency_entry.id));
|
||||
insert_values.push_back(std::to_string(alternate_currency_entry.item_id));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -212,6 +184,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<AlternateCurrency> alternate_currency_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -228,7 +201,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -239,11 +212,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<AlternateCurrency> All()
|
||||
static std::vector<AlternateCurrency> All(Database& db)
|
||||
{
|
||||
std::vector<AlternateCurrency> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -264,11 +237,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<AlternateCurrency> GetWhere(std::string where_filter)
|
||||
static std::vector<AlternateCurrency> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<AlternateCurrency> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -290,9 +263,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -303,9 +276,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_AURAS_REPOSITORY_H
|
||||
|
|
@ -75,21 +58,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("auras");
|
||||
|
|
@ -109,7 +77,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -147,10 +115,11 @@ public:
|
|||
}
|
||||
|
||||
static Auras FindOne(
|
||||
Database& db,
|
||||
int auras_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -181,10 +150,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int auras_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -197,6 +167,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
Auras auras_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -216,7 +187,7 @@ public:
|
|||
update_values.push_back(columns[9] + " = " + std::to_string(auras_entry.icon));
|
||||
update_values.push_back(columns[10] + " = " + std::to_string(auras_entry.cast_time));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -230,6 +201,7 @@ public:
|
|||
}
|
||||
|
||||
static Auras InsertOne(
|
||||
Database& db,
|
||||
Auras auras_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -247,7 +219,7 @@ public:
|
|||
insert_values.push_back(std::to_string(auras_entry.icon));
|
||||
insert_values.push_back(std::to_string(auras_entry.cast_time));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -266,6 +238,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<Auras> auras_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -291,7 +264,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -302,11 +275,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<Auras> All()
|
||||
static std::vector<Auras> All(Database& db)
|
||||
{
|
||||
std::vector<Auras> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -336,11 +309,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<Auras> GetWhere(std::string where_filter)
|
||||
static std::vector<Auras> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<Auras> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -371,9 +344,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -384,9 +357,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_BASE_DATA_REPOSITORY_H
|
||||
|
|
@ -73,21 +56,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("base_data");
|
||||
|
|
@ -107,7 +75,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -144,10 +112,11 @@ public:
|
|||
}
|
||||
|
||||
static BaseData FindOne(
|
||||
Database& db,
|
||||
int base_data_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -177,10 +146,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int base_data_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -193,6 +163,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
BaseData base_data_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -211,7 +182,7 @@ public:
|
|||
update_values.push_back(columns[8] + " = " + std::to_string(base_data_entry.mana_fac));
|
||||
update_values.push_back(columns[9] + " = " + std::to_string(base_data_entry.end_fac));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -225,6 +196,7 @@ public:
|
|||
}
|
||||
|
||||
static BaseData InsertOne(
|
||||
Database& db,
|
||||
BaseData base_data_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -241,7 +213,7 @@ public:
|
|||
insert_values.push_back(std::to_string(base_data_entry.mana_fac));
|
||||
insert_values.push_back(std::to_string(base_data_entry.end_fac));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -260,6 +232,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<BaseData> base_data_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -284,7 +257,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -295,11 +268,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<BaseData> All()
|
||||
static std::vector<BaseData> All(Database& db)
|
||||
{
|
||||
std::vector<BaseData> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -328,11 +301,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<BaseData> GetWhere(std::string where_filter)
|
||||
static std::vector<BaseData> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<BaseData> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -362,9 +335,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -375,9 +348,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_BLOCKED_SPELLS_REPOSITORY_H
|
||||
|
|
@ -77,21 +60,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("blocked_spells");
|
||||
|
|
@ -111,7 +79,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -150,10 +118,11 @@ public:
|
|||
}
|
||||
|
||||
static BlockedSpells FindOne(
|
||||
Database& db,
|
||||
int blocked_spells_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -185,10 +154,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int blocked_spells_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -201,6 +171,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
BlockedSpells blocked_spells_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -220,7 +191,7 @@ public:
|
|||
update_values.push_back(columns[10] + " = '" + EscapeString(blocked_spells_entry.message) + "'");
|
||||
update_values.push_back(columns[11] + " = '" + EscapeString(blocked_spells_entry.description) + "'");
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -234,11 +205,13 @@ public:
|
|||
}
|
||||
|
||||
static BlockedSpells InsertOne(
|
||||
Database& db,
|
||||
BlockedSpells blocked_spells_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(blocked_spells_entry.id));
|
||||
insert_values.push_back(std::to_string(blocked_spells_entry.spellid));
|
||||
insert_values.push_back(std::to_string(blocked_spells_entry.type));
|
||||
insert_values.push_back(std::to_string(blocked_spells_entry.zoneid));
|
||||
|
|
@ -251,7 +224,7 @@ public:
|
|||
insert_values.push_back("'" + EscapeString(blocked_spells_entry.message) + "'");
|
||||
insert_values.push_back("'" + EscapeString(blocked_spells_entry.description) + "'");
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -270,6 +243,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<BlockedSpells> blocked_spells_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -278,6 +252,7 @@ public:
|
|||
for (auto &blocked_spells_entry: blocked_spells_entries) {
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(blocked_spells_entry.id));
|
||||
insert_values.push_back(std::to_string(blocked_spells_entry.spellid));
|
||||
insert_values.push_back(std::to_string(blocked_spells_entry.type));
|
||||
insert_values.push_back(std::to_string(blocked_spells_entry.zoneid));
|
||||
|
|
@ -295,7 +270,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -306,11 +281,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<BlockedSpells> All()
|
||||
static std::vector<BlockedSpells> All(Database& db)
|
||||
{
|
||||
std::vector<BlockedSpells> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -341,11 +316,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<BlockedSpells> GetWhere(std::string where_filter)
|
||||
static std::vector<BlockedSpells> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<BlockedSpells> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -377,9 +352,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -390,9 +365,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_BUG_REPORTS_REPOSITORY_H
|
||||
|
|
@ -117,21 +100,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("bug_reports");
|
||||
|
|
@ -151,7 +119,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -210,10 +178,11 @@ public:
|
|||
}
|
||||
|
||||
static BugReports FindOne(
|
||||
Database& db,
|
||||
int bug_reports_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -265,10 +234,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int bug_reports_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -281,6 +251,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
BugReports bug_reports_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -320,7 +291,7 @@ public:
|
|||
update_values.push_back(columns[30] + " = '" + EscapeString(bug_reports_entry.last_reviewer) + "'");
|
||||
update_values.push_back(columns[31] + " = '" + EscapeString(bug_reports_entry.reviewer_notes) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -334,11 +305,13 @@ public:
|
|||
}
|
||||
|
||||
static BugReports InsertOne(
|
||||
Database& db,
|
||||
BugReports bug_reports_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(bug_reports_entry.id));
|
||||
insert_values.push_back("'" + EscapeString(bug_reports_entry.zone) + "'");
|
||||
insert_values.push_back(std::to_string(bug_reports_entry.client_version_id));
|
||||
insert_values.push_back("'" + EscapeString(bug_reports_entry.client_version_name) + "'");
|
||||
|
|
@ -371,7 +344,7 @@ public:
|
|||
insert_values.push_back("'" + EscapeString(bug_reports_entry.last_reviewer) + "'");
|
||||
insert_values.push_back("'" + EscapeString(bug_reports_entry.reviewer_notes) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -390,6 +363,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<BugReports> bug_reports_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -398,6 +372,7 @@ public:
|
|||
for (auto &bug_reports_entry: bug_reports_entries) {
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(bug_reports_entry.id));
|
||||
insert_values.push_back("'" + EscapeString(bug_reports_entry.zone) + "'");
|
||||
insert_values.push_back(std::to_string(bug_reports_entry.client_version_id));
|
||||
insert_values.push_back("'" + EscapeString(bug_reports_entry.client_version_name) + "'");
|
||||
|
|
@ -435,7 +410,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -446,11 +421,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<BugReports> All()
|
||||
static std::vector<BugReports> All(Database& db)
|
||||
{
|
||||
std::vector<BugReports> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -501,11 +476,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<BugReports> GetWhere(std::string where_filter)
|
||||
static std::vector<BugReports> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<BugReports> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -557,9 +532,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -570,9 +545,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_BUGS_REPOSITORY_H
|
||||
|
|
@ -79,21 +62,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("bugs");
|
||||
|
|
@ -113,7 +81,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -153,10 +121,11 @@ public:
|
|||
}
|
||||
|
||||
static Bugs FindOne(
|
||||
Database& db,
|
||||
int bugs_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -189,10 +158,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int bugs_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -205,6 +175,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
Bugs bugs_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -225,7 +196,7 @@ public:
|
|||
update_values.push_back(columns[11] + " = '" + EscapeString(bugs_entry.date) + "'");
|
||||
update_values.push_back(columns[12] + " = " + std::to_string(bugs_entry.status));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -239,11 +210,13 @@ public:
|
|||
}
|
||||
|
||||
static Bugs InsertOne(
|
||||
Database& db,
|
||||
Bugs bugs_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(bugs_entry.id));
|
||||
insert_values.push_back("'" + EscapeString(bugs_entry.zone) + "'");
|
||||
insert_values.push_back("'" + EscapeString(bugs_entry.name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(bugs_entry.ui) + "'");
|
||||
|
|
@ -257,7 +230,7 @@ public:
|
|||
insert_values.push_back("'" + EscapeString(bugs_entry.date) + "'");
|
||||
insert_values.push_back(std::to_string(bugs_entry.status));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -276,6 +249,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<Bugs> bugs_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -284,6 +258,7 @@ public:
|
|||
for (auto &bugs_entry: bugs_entries) {
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(bugs_entry.id));
|
||||
insert_values.push_back("'" + EscapeString(bugs_entry.zone) + "'");
|
||||
insert_values.push_back("'" + EscapeString(bugs_entry.name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(bugs_entry.ui) + "'");
|
||||
|
|
@ -302,7 +277,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -313,11 +288,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<Bugs> All()
|
||||
static std::vector<Bugs> All(Database& db)
|
||||
{
|
||||
std::vector<Bugs> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -349,11 +324,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<Bugs> GetWhere(std::string where_filter)
|
||||
static std::vector<Bugs> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<Bugs> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -386,9 +361,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -399,9 +374,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_BUYER_REPOSITORY_H
|
||||
|
|
@ -65,21 +48,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("buyer");
|
||||
|
|
@ -99,7 +67,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -132,10 +100,11 @@ public:
|
|||
}
|
||||
|
||||
static Buyer FindOne(
|
||||
Database& db,
|
||||
int buyer_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -161,10 +130,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int buyer_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -177,6 +147,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
Buyer buyer_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -191,7 +162,7 @@ public:
|
|||
update_values.push_back(columns[4] + " = " + std::to_string(buyer_entry.quantity));
|
||||
update_values.push_back(columns[5] + " = " + std::to_string(buyer_entry.price));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -205,6 +176,7 @@ public:
|
|||
}
|
||||
|
||||
static Buyer InsertOne(
|
||||
Database& db,
|
||||
Buyer buyer_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -217,7 +189,7 @@ public:
|
|||
insert_values.push_back(std::to_string(buyer_entry.quantity));
|
||||
insert_values.push_back(std::to_string(buyer_entry.price));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -236,6 +208,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<Buyer> buyer_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -256,7 +229,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -267,11 +240,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<Buyer> All()
|
||||
static std::vector<Buyer> All(Database& db)
|
||||
{
|
||||
std::vector<Buyer> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -296,11 +269,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<Buyer> GetWhere(std::string where_filter)
|
||||
static std::vector<Buyer> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<Buyer> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -326,9 +299,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -339,9 +312,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHAR_CREATE_COMBINATIONS_REPOSITORY_H
|
||||
|
|
@ -35,15 +18,12 @@
|
|||
class BaseCharCreateCombinationsRepository {
|
||||
public:
|
||||
struct CharCreateCombinations {
|
||||
int allocation_id;
|
||||
int race;
|
||||
int class;
|
||||
int deity;
|
||||
int start_zone;
|
||||
int expansions_req;
|
||||
int min_expansion;
|
||||
int max_expansion;
|
||||
std::string content_flags;
|
||||
int allocation_id;
|
||||
int race;
|
||||
int class;
|
||||
int deity;
|
||||
int start_zone;
|
||||
int expansions_req;
|
||||
};
|
||||
|
||||
static std::string PrimaryKey()
|
||||
|
|
@ -60,9 +40,6 @@ public:
|
|||
"deity",
|
||||
"start_zone",
|
||||
"expansions_req",
|
||||
"min_expansion",
|
||||
"max_expansion",
|
||||
"content_flags",
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -71,21 +48,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("char_create_combinations");
|
||||
|
|
@ -105,7 +67,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -119,9 +81,6 @@ public:
|
|||
entry.deity = 0;
|
||||
entry.start_zone = 0;
|
||||
entry.expansions_req = 0;
|
||||
entry.min_expansion = 0;
|
||||
entry.max_expansion = 0;
|
||||
entry.content_flags = "";
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
|
@ -141,10 +100,11 @@ public:
|
|||
}
|
||||
|
||||
static CharCreateCombinations FindOne(
|
||||
Database& db,
|
||||
int char_create_combinations_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -162,9 +122,6 @@ public:
|
|||
entry.deity = atoi(row[3]);
|
||||
entry.start_zone = atoi(row[4]);
|
||||
entry.expansions_req = atoi(row[5]);
|
||||
entry.min_expansion = atoi(row[6]);
|
||||
entry.max_expansion = atoi(row[7]);
|
||||
entry.content_flags = row[8] ? row[8] : "";
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
|
@ -173,10 +130,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int char_create_combinations_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -189,6 +147,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharCreateCombinations char_create_combinations_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -202,11 +161,8 @@ public:
|
|||
update_values.push_back(columns[3] + " = " + std::to_string(char_create_combinations_entry.deity));
|
||||
update_values.push_back(columns[4] + " = " + std::to_string(char_create_combinations_entry.start_zone));
|
||||
update_values.push_back(columns[5] + " = " + std::to_string(char_create_combinations_entry.expansions_req));
|
||||
update_values.push_back(columns[6] + " = " + std::to_string(char_create_combinations_entry.min_expansion));
|
||||
update_values.push_back(columns[7] + " = " + std::to_string(char_create_combinations_entry.max_expansion));
|
||||
update_values.push_back(columns[8] + " = '" + EscapeString(char_create_combinations_entry.content_flags) + "'");
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -220,6 +176,7 @@ public:
|
|||
}
|
||||
|
||||
static CharCreateCombinations InsertOne(
|
||||
Database& db,
|
||||
CharCreateCombinations char_create_combinations_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -231,11 +188,8 @@ public:
|
|||
insert_values.push_back(std::to_string(char_create_combinations_entry.deity));
|
||||
insert_values.push_back(std::to_string(char_create_combinations_entry.start_zone));
|
||||
insert_values.push_back(std::to_string(char_create_combinations_entry.expansions_req));
|
||||
insert_values.push_back(std::to_string(char_create_combinations_entry.min_expansion));
|
||||
insert_values.push_back(std::to_string(char_create_combinations_entry.max_expansion));
|
||||
insert_values.push_back("'" + EscapeString(char_create_combinations_entry.content_flags) + "'");
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -254,6 +208,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharCreateCombinations> char_create_combinations_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -268,16 +223,13 @@ public:
|
|||
insert_values.push_back(std::to_string(char_create_combinations_entry.deity));
|
||||
insert_values.push_back(std::to_string(char_create_combinations_entry.start_zone));
|
||||
insert_values.push_back(std::to_string(char_create_combinations_entry.expansions_req));
|
||||
insert_values.push_back(std::to_string(char_create_combinations_entry.min_expansion));
|
||||
insert_values.push_back(std::to_string(char_create_combinations_entry.max_expansion));
|
||||
insert_values.push_back("'" + EscapeString(char_create_combinations_entry.content_flags) + "'");
|
||||
|
||||
insert_chunks.push_back("(" + implode(",", insert_values) + ")");
|
||||
}
|
||||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -288,11 +240,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharCreateCombinations> All()
|
||||
static std::vector<CharCreateCombinations> All(Database& db)
|
||||
{
|
||||
std::vector<CharCreateCombinations> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -310,9 +262,6 @@ public:
|
|||
entry.deity = atoi(row[3]);
|
||||
entry.start_zone = atoi(row[4]);
|
||||
entry.expansions_req = atoi(row[5]);
|
||||
entry.min_expansion = atoi(row[6]);
|
||||
entry.max_expansion = atoi(row[7]);
|
||||
entry.content_flags = row[8] ? row[8] : "";
|
||||
|
||||
all_entries.push_back(entry);
|
||||
}
|
||||
|
|
@ -320,11 +269,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharCreateCombinations> GetWhere(std::string where_filter)
|
||||
static std::vector<CharCreateCombinations> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharCreateCombinations> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -343,9 +292,6 @@ public:
|
|||
entry.deity = atoi(row[3]);
|
||||
entry.start_zone = atoi(row[4]);
|
||||
entry.expansions_req = atoi(row[5]);
|
||||
entry.min_expansion = atoi(row[6]);
|
||||
entry.max_expansion = atoi(row[7]);
|
||||
entry.content_flags = row[8] ? row[8] : "";
|
||||
|
||||
all_entries.push_back(entry);
|
||||
}
|
||||
|
|
@ -353,9 +299,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -366,9 +312,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHAR_CREATE_POINT_ALLOCATIONS_REPOSITORY_H
|
||||
|
|
@ -83,21 +66,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("char_create_point_allocations");
|
||||
|
|
@ -117,7 +85,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -159,10 +127,11 @@ public:
|
|||
}
|
||||
|
||||
static CharCreatePointAllocations FindOne(
|
||||
Database& db,
|
||||
int char_create_point_allocations_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -197,10 +166,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int char_create_point_allocations_id
|
||||
)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -213,6 +183,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharCreatePointAllocations char_create_point_allocations_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -236,7 +207,7 @@ public:
|
|||
update_values.push_back(columns[13] + " = " + std::to_string(char_create_point_allocations_entry.alloc_wis));
|
||||
update_values.push_back(columns[14] + " = " + std::to_string(char_create_point_allocations_entry.alloc_cha));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -250,6 +221,7 @@ public:
|
|||
}
|
||||
|
||||
static CharCreatePointAllocations InsertOne(
|
||||
Database& db,
|
||||
CharCreatePointAllocations char_create_point_allocations_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -271,7 +243,7 @@ public:
|
|||
insert_values.push_back(std::to_string(char_create_point_allocations_entry.alloc_wis));
|
||||
insert_values.push_back(std::to_string(char_create_point_allocations_entry.alloc_cha));
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -290,6 +262,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharCreatePointAllocations> char_create_point_allocations_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -319,7 +292,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -330,11 +303,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharCreatePointAllocations> All()
|
||||
static std::vector<CharCreatePointAllocations> All(Database& db)
|
||||
{
|
||||
std::vector<CharCreatePointAllocations> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -368,11 +341,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharCreatePointAllocations> GetWhere(std::string where_filter)
|
||||
static std::vector<CharCreatePointAllocations> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharCreatePointAllocations> all_entries;
|
||||
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -407,9 +380,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -420,9 +393,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = content_db.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHAR_RECIPE_LIST_REPOSITORY_H
|
||||
|
|
@ -59,21 +42,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("char_recipe_list");
|
||||
|
|
@ -93,7 +61,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -123,10 +91,11 @@ public:
|
|||
}
|
||||
|
||||
static CharRecipeList FindOne(
|
||||
Database& db,
|
||||
int char_recipe_list_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -149,10 +118,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int char_recipe_list_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -165,6 +135,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharRecipeList char_recipe_list_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -176,7 +147,7 @@ public:
|
|||
update_values.push_back(columns[1] + " = " + std::to_string(char_recipe_list_entry.recipe_id));
|
||||
update_values.push_back(columns[2] + " = " + std::to_string(char_recipe_list_entry.madecount));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -190,6 +161,7 @@ public:
|
|||
}
|
||||
|
||||
static CharRecipeList InsertOne(
|
||||
Database& db,
|
||||
CharRecipeList char_recipe_list_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -199,7 +171,7 @@ public:
|
|||
insert_values.push_back(std::to_string(char_recipe_list_entry.recipe_id));
|
||||
insert_values.push_back(std::to_string(char_recipe_list_entry.madecount));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -218,6 +190,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharRecipeList> char_recipe_list_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -235,7 +208,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -246,11 +219,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharRecipeList> All()
|
||||
static std::vector<CharRecipeList> All(Database& db)
|
||||
{
|
||||
std::vector<CharRecipeList> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -272,11 +245,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharRecipeList> GetWhere(std::string where_filter)
|
||||
static std::vector<CharRecipeList> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharRecipeList> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -299,9 +272,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -312,9 +285,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_ACTIVITIES_REPOSITORY_H
|
||||
|
|
@ -63,21 +46,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_activities");
|
||||
|
|
@ -97,7 +65,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -129,10 +97,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterActivities FindOne(
|
||||
Database& db,
|
||||
int character_activities_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -157,10 +126,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_activities_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -173,6 +143,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterActivities character_activities_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -186,7 +157,7 @@ public:
|
|||
update_values.push_back(columns[3] + " = " + std::to_string(character_activities_entry.donecount));
|
||||
update_values.push_back(columns[4] + " = " + std::to_string(character_activities_entry.completed));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -200,6 +171,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterActivities InsertOne(
|
||||
Database& db,
|
||||
CharacterActivities character_activities_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -211,7 +183,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_activities_entry.donecount));
|
||||
insert_values.push_back(std::to_string(character_activities_entry.completed));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -230,6 +202,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterActivities> character_activities_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -249,7 +222,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -260,11 +233,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterActivities> All()
|
||||
static std::vector<CharacterActivities> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterActivities> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -288,11 +261,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterActivities> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterActivities> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterActivities> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -317,9 +290,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -330,9 +303,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_ALT_CURRENCY_REPOSITORY_H
|
||||
|
|
@ -59,21 +42,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_alt_currency");
|
||||
|
|
@ -93,7 +61,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -123,10 +91,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterAltCurrency FindOne(
|
||||
Database& db,
|
||||
int character_alt_currency_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -149,10 +118,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_alt_currency_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -165,6 +135,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterAltCurrency character_alt_currency_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -176,7 +147,7 @@ public:
|
|||
update_values.push_back(columns[1] + " = " + std::to_string(character_alt_currency_entry.currency_id));
|
||||
update_values.push_back(columns[2] + " = " + std::to_string(character_alt_currency_entry.amount));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -190,6 +161,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterAltCurrency InsertOne(
|
||||
Database& db,
|
||||
CharacterAltCurrency character_alt_currency_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -199,7 +171,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_alt_currency_entry.currency_id));
|
||||
insert_values.push_back(std::to_string(character_alt_currency_entry.amount));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -218,6 +190,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterAltCurrency> character_alt_currency_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -235,7 +208,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -246,11 +219,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterAltCurrency> All()
|
||||
static std::vector<CharacterAltCurrency> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterAltCurrency> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -272,11 +245,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterAltCurrency> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterAltCurrency> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterAltCurrency> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -299,9 +272,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -312,9 +285,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_ALTERNATE_ABILITIES_REPOSITORY_H
|
||||
|
|
@ -61,21 +44,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_alternate_abilities");
|
||||
|
|
@ -95,7 +63,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -126,10 +94,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterAlternateAbilities FindOne(
|
||||
Database& db,
|
||||
int character_alternate_abilities_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -153,10 +122,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_alternate_abilities_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -169,6 +139,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterAlternateAbilities character_alternate_abilities_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -181,7 +152,7 @@ public:
|
|||
update_values.push_back(columns[2] + " = " + std::to_string(character_alternate_abilities_entry.aa_value));
|
||||
update_values.push_back(columns[3] + " = " + std::to_string(character_alternate_abilities_entry.charges));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -195,6 +166,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterAlternateAbilities InsertOne(
|
||||
Database& db,
|
||||
CharacterAlternateAbilities character_alternate_abilities_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -205,7 +177,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_alternate_abilities_entry.aa_value));
|
||||
insert_values.push_back(std::to_string(character_alternate_abilities_entry.charges));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -224,6 +196,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterAlternateAbilities> character_alternate_abilities_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -242,7 +215,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -253,11 +226,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterAlternateAbilities> All()
|
||||
static std::vector<CharacterAlternateAbilities> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterAlternateAbilities> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -280,11 +253,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterAlternateAbilities> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterAlternateAbilities> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterAlternateAbilities> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -308,9 +281,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -321,9 +294,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_AURAS_REPOSITORY_H
|
||||
|
|
@ -59,21 +42,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_auras");
|
||||
|
|
@ -93,7 +61,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -123,10 +91,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterAuras FindOne(
|
||||
Database& db,
|
||||
int character_auras_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -149,10 +118,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_auras_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -165,6 +135,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterAuras character_auras_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -176,7 +147,7 @@ public:
|
|||
update_values.push_back(columns[1] + " = " + std::to_string(character_auras_entry.slot));
|
||||
update_values.push_back(columns[2] + " = " + std::to_string(character_auras_entry.spell_id));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -190,6 +161,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterAuras InsertOne(
|
||||
Database& db,
|
||||
CharacterAuras character_auras_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -199,7 +171,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_auras_entry.slot));
|
||||
insert_values.push_back(std::to_string(character_auras_entry.spell_id));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -218,6 +190,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterAuras> character_auras_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -235,7 +208,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -246,11 +219,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterAuras> All()
|
||||
static std::vector<CharacterAuras> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterAuras> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -272,11 +245,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterAuras> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterAuras> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterAuras> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -299,9 +272,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -312,9 +285,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_BANDOLIER_REPOSITORY_H
|
||||
|
|
@ -65,21 +48,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_bandolier");
|
||||
|
|
@ -99,7 +67,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -132,10 +100,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterBandolier FindOne(
|
||||
Database& db,
|
||||
int character_bandolier_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -161,10 +130,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_bandolier_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -177,6 +147,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterBandolier character_bandolier_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -191,7 +162,7 @@ public:
|
|||
update_values.push_back(columns[4] + " = " + std::to_string(character_bandolier_entry.icon));
|
||||
update_values.push_back(columns[5] + " = '" + EscapeString(character_bandolier_entry.bandolier_name) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -205,6 +176,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterBandolier InsertOne(
|
||||
Database& db,
|
||||
CharacterBandolier character_bandolier_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -217,7 +189,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_bandolier_entry.icon));
|
||||
insert_values.push_back("'" + EscapeString(character_bandolier_entry.bandolier_name) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -236,6 +208,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterBandolier> character_bandolier_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -256,7 +229,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -267,11 +240,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterBandolier> All()
|
||||
static std::vector<CharacterBandolier> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterBandolier> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -296,11 +269,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterBandolier> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterBandolier> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterBandolier> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -326,9 +299,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -339,9 +312,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_BIND_REPOSITORY_H
|
||||
|
|
@ -69,21 +52,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_bind");
|
||||
|
|
@ -103,7 +71,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -138,10 +106,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterBind FindOne(
|
||||
Database& db,
|
||||
int character_bind_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -169,10 +138,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_bind_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -185,6 +155,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterBind character_bind_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -200,7 +171,7 @@ public:
|
|||
update_values.push_back(columns[6] + " = " + std::to_string(character_bind_entry.z));
|
||||
update_values.push_back(columns[7] + " = " + std::to_string(character_bind_entry.heading));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -214,11 +185,13 @@ public:
|
|||
}
|
||||
|
||||
static CharacterBind InsertOne(
|
||||
Database& db,
|
||||
CharacterBind character_bind_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(character_bind_entry.id));
|
||||
insert_values.push_back(std::to_string(character_bind_entry.slot));
|
||||
insert_values.push_back(std::to_string(character_bind_entry.zone_id));
|
||||
insert_values.push_back(std::to_string(character_bind_entry.instance_id));
|
||||
|
|
@ -227,7 +200,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_bind_entry.z));
|
||||
insert_values.push_back(std::to_string(character_bind_entry.heading));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -246,6 +219,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterBind> character_bind_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -254,6 +228,7 @@ public:
|
|||
for (auto &character_bind_entry: character_bind_entries) {
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(character_bind_entry.id));
|
||||
insert_values.push_back(std::to_string(character_bind_entry.slot));
|
||||
insert_values.push_back(std::to_string(character_bind_entry.zone_id));
|
||||
insert_values.push_back(std::to_string(character_bind_entry.instance_id));
|
||||
|
|
@ -267,7 +242,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -278,11 +253,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterBind> All()
|
||||
static std::vector<CharacterBind> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterBind> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -309,11 +284,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterBind> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterBind> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterBind> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -341,9 +316,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -354,9 +329,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_BUFFS_REPOSITORY_H
|
||||
|
|
@ -87,21 +70,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_buffs");
|
||||
|
|
@ -121,7 +89,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -165,10 +133,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterBuffs FindOne(
|
||||
Database& db,
|
||||
int character_buffs_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -205,10 +174,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_buffs_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -221,6 +191,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterBuffs character_buffs_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -246,7 +217,7 @@ public:
|
|||
update_values.push_back(columns[15] + " = " + std::to_string(character_buffs_entry.ExtraDIChance));
|
||||
update_values.push_back(columns[16] + " = " + std::to_string(character_buffs_entry.instrument_mod));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -260,6 +231,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterBuffs InsertOne(
|
||||
Database& db,
|
||||
CharacterBuffs character_buffs_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -283,7 +255,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_buffs_entry.ExtraDIChance));
|
||||
insert_values.push_back(std::to_string(character_buffs_entry.instrument_mod));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -302,6 +274,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterBuffs> character_buffs_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -333,7 +306,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -344,11 +317,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterBuffs> All()
|
||||
static std::vector<CharacterBuffs> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterBuffs> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -384,11 +357,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterBuffs> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterBuffs> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterBuffs> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -425,9 +398,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -438,9 +411,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_CORPSE_ITEMS_REPOSITORY_H
|
||||
|
|
@ -75,21 +58,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_corpse_items");
|
||||
|
|
@ -109,7 +77,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -147,10 +115,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterCorpseItems FindOne(
|
||||
Database& db,
|
||||
int character_corpse_items_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -181,10 +150,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_corpse_items_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -197,6 +167,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterCorpseItems character_corpse_items_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -216,7 +187,7 @@ public:
|
|||
update_values.push_back(columns[9] + " = " + std::to_string(character_corpse_items_entry.aug_6));
|
||||
update_values.push_back(columns[10] + " = " + std::to_string(character_corpse_items_entry.attuned));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -230,6 +201,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterCorpseItems InsertOne(
|
||||
Database& db,
|
||||
CharacterCorpseItems character_corpse_items_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -247,7 +219,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_corpse_items_entry.aug_6));
|
||||
insert_values.push_back(std::to_string(character_corpse_items_entry.attuned));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -266,6 +238,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterCorpseItems> character_corpse_items_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -291,7 +264,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -302,11 +275,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterCorpseItems> All()
|
||||
static std::vector<CharacterCorpseItems> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterCorpseItems> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -336,11 +309,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterCorpseItems> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterCorpseItems> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterCorpseItems> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -371,9 +344,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -384,9 +357,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_CORPSES_REPOSITORY_H
|
||||
|
|
@ -147,21 +130,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_corpses");
|
||||
|
|
@ -181,7 +149,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -255,10 +223,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterCorpses FindOne(
|
||||
Database& db,
|
||||
int character_corpses_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -325,10 +294,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_corpses_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -341,6 +311,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterCorpses character_corpses_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -395,7 +366,7 @@ public:
|
|||
update_values.push_back(columns[45] + " = " + std::to_string(character_corpses_entry.wc_8));
|
||||
update_values.push_back(columns[46] + " = " + std::to_string(character_corpses_entry.wc_9));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -409,11 +380,13 @@ public:
|
|||
}
|
||||
|
||||
static CharacterCorpses InsertOne(
|
||||
Database& db,
|
||||
CharacterCorpses character_corpses_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(character_corpses_entry.id));
|
||||
insert_values.push_back(std::to_string(character_corpses_entry.charid));
|
||||
insert_values.push_back("'" + EscapeString(character_corpses_entry.charname) + "'");
|
||||
insert_values.push_back(std::to_string(character_corpses_entry.zone_id));
|
||||
|
|
@ -461,7 +434,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_corpses_entry.wc_8));
|
||||
insert_values.push_back(std::to_string(character_corpses_entry.wc_9));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -480,6 +453,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterCorpses> character_corpses_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -488,6 +462,7 @@ public:
|
|||
for (auto &character_corpses_entry: character_corpses_entries) {
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(character_corpses_entry.id));
|
||||
insert_values.push_back(std::to_string(character_corpses_entry.charid));
|
||||
insert_values.push_back("'" + EscapeString(character_corpses_entry.charname) + "'");
|
||||
insert_values.push_back(std::to_string(character_corpses_entry.zone_id));
|
||||
|
|
@ -540,7 +515,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -551,11 +526,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterCorpses> All()
|
||||
static std::vector<CharacterCorpses> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterCorpses> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -621,11 +596,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterCorpses> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterCorpses> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterCorpses> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -692,9 +667,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -705,9 +680,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_CURRENCY_REPOSITORY_H
|
||||
|
|
@ -87,21 +70,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_currency");
|
||||
|
|
@ -121,7 +89,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -165,10 +133,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterCurrency FindOne(
|
||||
Database& db,
|
||||
int character_currency_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -205,10 +174,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_currency_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -221,6 +191,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterCurrency character_currency_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -246,7 +217,7 @@ public:
|
|||
update_values.push_back(columns[15] + " = " + std::to_string(character_currency_entry.ebon_crystals));
|
||||
update_values.push_back(columns[16] + " = " + std::to_string(character_currency_entry.career_ebon_crystals));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -260,6 +231,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterCurrency InsertOne(
|
||||
Database& db,
|
||||
CharacterCurrency character_currency_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -283,7 +255,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_currency_entry.ebon_crystals));
|
||||
insert_values.push_back(std::to_string(character_currency_entry.career_ebon_crystals));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -302,6 +274,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterCurrency> character_currency_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -333,7 +306,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -344,11 +317,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterCurrency> All()
|
||||
static std::vector<CharacterCurrency> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterCurrency> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -384,11 +357,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterCurrency> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterCurrency> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterCurrency> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -425,9 +398,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -438,9 +411,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_DATA_REPOSITORY_H
|
||||
|
|
@ -257,21 +240,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_data");
|
||||
|
|
@ -291,7 +259,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -420,10 +388,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterData FindOne(
|
||||
Database& db,
|
||||
int character_data_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -545,10 +514,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_data_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -561,6 +531,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterData character_data_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -670,7 +641,7 @@ public:
|
|||
update_values.push_back(columns[100] + " = " + std::to_string(character_data_entry.e_last_invsnapshot));
|
||||
update_values.push_back(columns[101] + " = '" + EscapeString(character_data_entry.deleted_at) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -684,11 +655,13 @@ public:
|
|||
}
|
||||
|
||||
static CharacterData InsertOne(
|
||||
Database& db,
|
||||
CharacterData character_data_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(character_data_entry.id));
|
||||
insert_values.push_back(std::to_string(character_data_entry.account_id));
|
||||
insert_values.push_back("'" + EscapeString(character_data_entry.name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(character_data_entry.last_name) + "'");
|
||||
|
|
@ -791,7 +764,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_data_entry.e_last_invsnapshot));
|
||||
insert_values.push_back("'" + EscapeString(character_data_entry.deleted_at) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -810,6 +783,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterData> character_data_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -818,6 +792,7 @@ public:
|
|||
for (auto &character_data_entry: character_data_entries) {
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(character_data_entry.id));
|
||||
insert_values.push_back(std::to_string(character_data_entry.account_id));
|
||||
insert_values.push_back("'" + EscapeString(character_data_entry.name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(character_data_entry.last_name) + "'");
|
||||
|
|
@ -925,7 +900,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -936,11 +911,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterData> All()
|
||||
static std::vector<CharacterData> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterData> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -1061,11 +1036,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterData> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterData> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterData> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -1187,9 +1162,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -1200,9 +1175,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_DISCIPLINES_REPOSITORY_H
|
||||
|
|
@ -59,21 +42,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_disciplines");
|
||||
|
|
@ -93,7 +61,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -123,10 +91,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterDisciplines FindOne(
|
||||
Database& db,
|
||||
int character_disciplines_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -149,10 +118,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_disciplines_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -165,6 +135,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterDisciplines character_disciplines_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -176,7 +147,7 @@ public:
|
|||
update_values.push_back(columns[1] + " = " + std::to_string(character_disciplines_entry.slot_id));
|
||||
update_values.push_back(columns[2] + " = " + std::to_string(character_disciplines_entry.disc_id));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -190,6 +161,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterDisciplines InsertOne(
|
||||
Database& db,
|
||||
CharacterDisciplines character_disciplines_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -199,7 +171,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_disciplines_entry.slot_id));
|
||||
insert_values.push_back(std::to_string(character_disciplines_entry.disc_id));
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -218,6 +190,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterDisciplines> character_disciplines_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -235,7 +208,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -246,11 +219,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterDisciplines> All()
|
||||
static std::vector<CharacterDisciplines> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterDisciplines> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -272,11 +245,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterDisciplines> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterDisciplines> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterDisciplines> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -299,9 +272,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -312,9 +285,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,337 @@
|
|||
/**
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_EXPEDITION_LOCKOUTS_REPOSITORY_H
|
||||
#define EQEMU_BASE_CHARACTER_EXPEDITION_LOCKOUTS_REPOSITORY_H
|
||||
|
||||
#include "../../database.h"
|
||||
#include "../../string_util.h"
|
||||
|
||||
class BaseCharacterExpeditionLockoutsRepository {
|
||||
public:
|
||||
struct CharacterExpeditionLockouts {
|
||||
int id;
|
||||
int character_id;
|
||||
std::string expedition_name;
|
||||
std::string event_name;
|
||||
std::string expire_time;
|
||||
int duration;
|
||||
std::string from_expedition_uuid;
|
||||
};
|
||||
|
||||
static std::string PrimaryKey()
|
||||
{
|
||||
return std::string("id");
|
||||
}
|
||||
|
||||
static std::vector<std::string> Columns()
|
||||
{
|
||||
return {
|
||||
"id",
|
||||
"character_id",
|
||||
"expedition_name",
|
||||
"event_name",
|
||||
"expire_time",
|
||||
"duration",
|
||||
"from_expedition_uuid",
|
||||
};
|
||||
}
|
||||
|
||||
static std::string ColumnsRaw()
|
||||
{
|
||||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_expedition_lockouts");
|
||||
}
|
||||
|
||||
static std::string BaseSelect()
|
||||
{
|
||||
return fmt::format(
|
||||
"SELECT {} FROM {}",
|
||||
ColumnsRaw(),
|
||||
TableName()
|
||||
);
|
||||
}
|
||||
|
||||
static std::string BaseInsert()
|
||||
{
|
||||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
static CharacterExpeditionLockouts NewEntity()
|
||||
{
|
||||
CharacterExpeditionLockouts entry{};
|
||||
|
||||
entry.id = 0;
|
||||
entry.character_id = 0;
|
||||
entry.expedition_name = "";
|
||||
entry.event_name = "";
|
||||
entry.expire_time = "";
|
||||
entry.duration = 0;
|
||||
entry.from_expedition_uuid = "";
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
static CharacterExpeditionLockouts GetCharacterExpeditionLockoutsEntry(
|
||||
const std::vector<CharacterExpeditionLockouts> &character_expedition_lockoutss,
|
||||
int character_expedition_lockouts_id
|
||||
)
|
||||
{
|
||||
for (auto &character_expedition_lockouts : character_expedition_lockoutss) {
|
||||
if (character_expedition_lockouts.id == character_expedition_lockouts_id) {
|
||||
return character_expedition_lockouts;
|
||||
}
|
||||
}
|
||||
|
||||
return NewEntity();
|
||||
}
|
||||
|
||||
static CharacterExpeditionLockouts FindOne(
|
||||
Database& db,
|
||||
int character_expedition_lockouts_id
|
||||
)
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
character_expedition_lockouts_id
|
||||
)
|
||||
);
|
||||
|
||||
auto row = results.begin();
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterExpeditionLockouts entry{};
|
||||
|
||||
entry.id = atoi(row[0]);
|
||||
entry.character_id = atoi(row[1]);
|
||||
entry.expedition_name = row[2] ? row[2] : "";
|
||||
entry.event_name = row[3] ? row[3] : "";
|
||||
entry.expire_time = row[4] ? row[4] : "";
|
||||
entry.duration = atoi(row[5]);
|
||||
entry.from_expedition_uuid = row[6] ? row[6] : "";
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
return NewEntity();
|
||||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_expedition_lockouts_id
|
||||
)
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
PrimaryKey(),
|
||||
character_expedition_lockouts_id
|
||||
)
|
||||
);
|
||||
|
||||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterExpeditionLockouts character_expedition_lockouts_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> update_values;
|
||||
|
||||
auto columns = Columns();
|
||||
|
||||
update_values.push_back(columns[1] + " = " + std::to_string(character_expedition_lockouts_entry.character_id));
|
||||
update_values.push_back(columns[2] + " = '" + EscapeString(character_expedition_lockouts_entry.expedition_name) + "'");
|
||||
update_values.push_back(columns[3] + " = '" + EscapeString(character_expedition_lockouts_entry.event_name) + "'");
|
||||
update_values.push_back(columns[4] + " = '" + EscapeString(character_expedition_lockouts_entry.expire_time) + "'");
|
||||
update_values.push_back(columns[5] + " = " + std::to_string(character_expedition_lockouts_entry.duration));
|
||||
update_values.push_back(columns[6] + " = '" + EscapeString(character_expedition_lockouts_entry.from_expedition_uuid) + "'");
|
||||
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
implode(", ", update_values),
|
||||
PrimaryKey(),
|
||||
character_expedition_lockouts_entry.id
|
||||
)
|
||||
);
|
||||
|
||||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static CharacterExpeditionLockouts InsertOne(
|
||||
Database& db,
|
||||
CharacterExpeditionLockouts character_expedition_lockouts_entry
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(character_expedition_lockouts_entry.id));
|
||||
insert_values.push_back(std::to_string(character_expedition_lockouts_entry.character_id));
|
||||
insert_values.push_back("'" + EscapeString(character_expedition_lockouts_entry.expedition_name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(character_expedition_lockouts_entry.event_name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(character_expedition_lockouts_entry.expire_time) + "'");
|
||||
insert_values.push_back(std::to_string(character_expedition_lockouts_entry.duration));
|
||||
insert_values.push_back("'" + EscapeString(character_expedition_lockouts_entry.from_expedition_uuid) + "'");
|
||||
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
implode(",", insert_values)
|
||||
)
|
||||
);
|
||||
|
||||
if (results.Success()) {
|
||||
character_expedition_lockouts_entry.id = results.LastInsertedID();
|
||||
return character_expedition_lockouts_entry;
|
||||
}
|
||||
|
||||
character_expedition_lockouts_entry = NewEntity();
|
||||
|
||||
return character_expedition_lockouts_entry;
|
||||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterExpeditionLockouts> character_expedition_lockouts_entries
|
||||
)
|
||||
{
|
||||
std::vector<std::string> insert_chunks;
|
||||
|
||||
for (auto &character_expedition_lockouts_entry: character_expedition_lockouts_entries) {
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
insert_values.push_back(std::to_string(character_expedition_lockouts_entry.id));
|
||||
insert_values.push_back(std::to_string(character_expedition_lockouts_entry.character_id));
|
||||
insert_values.push_back("'" + EscapeString(character_expedition_lockouts_entry.expedition_name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(character_expedition_lockouts_entry.event_name) + "'");
|
||||
insert_values.push_back("'" + EscapeString(character_expedition_lockouts_entry.expire_time) + "'");
|
||||
insert_values.push_back(std::to_string(character_expedition_lockouts_entry.duration));
|
||||
insert_values.push_back("'" + EscapeString(character_expedition_lockouts_entry.from_expedition_uuid) + "'");
|
||||
|
||||
insert_chunks.push_back("(" + implode(",", insert_values) + ")");
|
||||
}
|
||||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
implode(",", insert_chunks)
|
||||
)
|
||||
);
|
||||
|
||||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterExpeditionLockouts> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterExpeditionLockouts> all_entries;
|
||||
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
)
|
||||
);
|
||||
|
||||
all_entries.reserve(results.RowCount());
|
||||
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterExpeditionLockouts entry{};
|
||||
|
||||
entry.id = atoi(row[0]);
|
||||
entry.character_id = atoi(row[1]);
|
||||
entry.expedition_name = row[2] ? row[2] : "";
|
||||
entry.event_name = row[3] ? row[3] : "";
|
||||
entry.expire_time = row[4] ? row[4] : "";
|
||||
entry.duration = atoi(row[5]);
|
||||
entry.from_expedition_uuid = row[6] ? row[6] : "";
|
||||
|
||||
all_entries.push_back(entry);
|
||||
}
|
||||
|
||||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterExpeditionLockouts> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterExpeditionLockouts> all_entries;
|
||||
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
where_filter
|
||||
)
|
||||
);
|
||||
|
||||
all_entries.reserve(results.RowCount());
|
||||
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterExpeditionLockouts entry{};
|
||||
|
||||
entry.id = atoi(row[0]);
|
||||
entry.character_id = atoi(row[1]);
|
||||
entry.expedition_name = row[2] ? row[2] : "";
|
||||
entry.event_name = row[3] ? row[3] : "";
|
||||
entry.expire_time = row[4] ? row[4] : "";
|
||||
entry.duration = atoi(row[5]);
|
||||
entry.from_expedition_uuid = row[6] ? row[6] : "";
|
||||
|
||||
all_entries.push_back(entry);
|
||||
}
|
||||
|
||||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
where_filter
|
||||
)
|
||||
);
|
||||
|
||||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
)
|
||||
);
|
||||
|
||||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif //EQEMU_BASE_CHARACTER_EXPEDITION_LOCKOUTS_REPOSITORY_H
|
||||
|
|
@ -1,29 +1,12 @@
|
|||
/**
|
||||
* EQEmulator: Everquest Server Emulator
|
||||
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||
* DO NOT MODIFY THIS FILE
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
* are required to give you total support for your newly bought product;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This repository was automatically generated and is NOT to be modified directly.
|
||||
* Any repository modifications are meant to be made to
|
||||
* the repository extending the base. Any modifications to base repositories are to
|
||||
* be made by the generator only
|
||||
* Any repository modifications are meant to be made to the repository extending the base.
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @generator ./utils/scripts/generators/repository-generator.pl
|
||||
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
|
||||
*/
|
||||
|
||||
#ifndef EQEMU_BASE_CHARACTER_INSPECT_MESSAGES_REPOSITORY_H
|
||||
|
|
@ -57,21 +40,6 @@ public:
|
|||
return std::string(implode(", ", Columns()));
|
||||
}
|
||||
|
||||
static std::string InsertColumnsRaw()
|
||||
{
|
||||
std::vector<std::string> insert_columns;
|
||||
|
||||
for (auto &column : Columns()) {
|
||||
if (column == PrimaryKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
insert_columns.push_back(column);
|
||||
}
|
||||
|
||||
return std::string(implode(", ", insert_columns));
|
||||
}
|
||||
|
||||
static std::string TableName()
|
||||
{
|
||||
return std::string("character_inspect_messages");
|
||||
|
|
@ -91,7 +59,7 @@ public:
|
|||
return fmt::format(
|
||||
"INSERT INTO {} ({}) ",
|
||||
TableName(),
|
||||
InsertColumnsRaw()
|
||||
ColumnsRaw()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -120,10 +88,11 @@ public:
|
|||
}
|
||||
|
||||
static CharacterInspectMessages FindOne(
|
||||
Database& db,
|
||||
int character_inspect_messages_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
|
|
@ -145,10 +114,11 @@ public:
|
|||
}
|
||||
|
||||
static int DeleteOne(
|
||||
Database& db,
|
||||
int character_inspect_messages_id
|
||||
)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -161,6 +131,7 @@ public:
|
|||
}
|
||||
|
||||
static int UpdateOne(
|
||||
Database& db,
|
||||
CharacterInspectMessages character_inspect_messages_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -171,7 +142,7 @@ public:
|
|||
update_values.push_back(columns[0] + " = " + std::to_string(character_inspect_messages_entry.id));
|
||||
update_values.push_back(columns[1] + " = '" + EscapeString(character_inspect_messages_entry.inspect_message) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"UPDATE {} SET {} WHERE {} = {}",
|
||||
TableName(),
|
||||
|
|
@ -185,6 +156,7 @@ public:
|
|||
}
|
||||
|
||||
static CharacterInspectMessages InsertOne(
|
||||
Database& db,
|
||||
CharacterInspectMessages character_inspect_messages_entry
|
||||
)
|
||||
{
|
||||
|
|
@ -193,7 +165,7 @@ public:
|
|||
insert_values.push_back(std::to_string(character_inspect_messages_entry.id));
|
||||
insert_values.push_back("'" + EscapeString(character_inspect_messages_entry.inspect_message) + "'");
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES ({})",
|
||||
BaseInsert(),
|
||||
|
|
@ -212,6 +184,7 @@ public:
|
|||
}
|
||||
|
||||
static int InsertMany(
|
||||
Database& db,
|
||||
std::vector<CharacterInspectMessages> character_inspect_messages_entries
|
||||
)
|
||||
{
|
||||
|
|
@ -228,7 +201,7 @@ public:
|
|||
|
||||
std::vector<std::string> insert_values;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} VALUES {}",
|
||||
BaseInsert(),
|
||||
|
|
@ -239,11 +212,11 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static std::vector<CharacterInspectMessages> All()
|
||||
static std::vector<CharacterInspectMessages> All(Database& db)
|
||||
{
|
||||
std::vector<CharacterInspectMessages> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{}",
|
||||
BaseSelect()
|
||||
|
|
@ -264,11 +237,11 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static std::vector<CharacterInspectMessages> GetWhere(std::string where_filter)
|
||||
static std::vector<CharacterInspectMessages> GetWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
std::vector<CharacterInspectMessages> all_entries;
|
||||
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE {}",
|
||||
BaseSelect(),
|
||||
|
|
@ -290,9 +263,9 @@ public:
|
|||
return all_entries;
|
||||
}
|
||||
|
||||
static int DeleteWhere(std::string where_filter)
|
||||
static int DeleteWhere(Database& db, std::string where_filter)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"DELETE FROM {} WHERE {}",
|
||||
TableName(),
|
||||
|
|
@ -303,9 +276,9 @@ public:
|
|||
return (results.Success() ? results.RowsAffected() : 0);
|
||||
}
|
||||
|
||||
static int Truncate()
|
||||
static int Truncate(Database& db)
|
||||
{
|
||||
auto results = database.QueryDatabase(
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"TRUNCATE TABLE {}",
|
||||
TableName()
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue