Fist Push
This commit is contained in:
parent
dd63653413
commit
cab9de1e90
118 changed files with 364726 additions and 0 deletions
169
server/.gitignore
vendored
Normal file
169
server/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
# Please take extra care not to add rules that will make tracked files ignored.
|
||||
# To test that, run `git ls-files -i --exclude-standard`.
|
||||
# To check why a specific file is ignored, run `git check-ignore -v <filepath>`.
|
||||
|
||||
# === Rule for dotfiles ===
|
||||
# Ignore all dotfiles.
|
||||
.*
|
||||
# Exclude specific dotfiles that we want to track.
|
||||
!deps/**/.*
|
||||
!.devcontainer/
|
||||
!.devcontainer/.devcontainer.json
|
||||
!test/fixtures/**/.*
|
||||
!.clang-format
|
||||
!.cpplint
|
||||
!.editorconfig
|
||||
!.eslintignore
|
||||
!.eslintrc.js
|
||||
!.eslintrc.yaml
|
||||
!.gitattributes
|
||||
!.github
|
||||
!.gitignore
|
||||
!.gitkeep
|
||||
!.gitpod.yml
|
||||
!.mailmap
|
||||
!.nycrc
|
||||
!.yamllint.yaml
|
||||
|
||||
# === Rules for root dir ===
|
||||
/core
|
||||
/vgcore.*
|
||||
/v8*.log
|
||||
/perf.data
|
||||
/perf.data.old
|
||||
/tags
|
||||
/tags.*
|
||||
/doc/api.xml
|
||||
/node
|
||||
/node_g
|
||||
/gon-config.json
|
||||
/*.exe
|
||||
/*.swp
|
||||
/out
|
||||
/*.msi
|
||||
/*.wixpdb
|
||||
/*.qlog
|
||||
# For GitHub Codespaces
|
||||
/pythonenv*
|
||||
|
||||
# === Rules for artifacts of `./configure` ===
|
||||
/icu_config.gypi
|
||||
/config.gypi
|
||||
/config.status
|
||||
/config_fips.gypi
|
||||
|
||||
# === Rules for MSVS artifacts ===
|
||||
Debug/
|
||||
Release/
|
||||
*.sln
|
||||
*.suo
|
||||
*.vcxproj*
|
||||
UpgradeLog*.XML
|
||||
_UpgradeReport_Files/
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.VC.*
|
||||
*.wixobj
|
||||
/tools/msvs/genfiles/
|
||||
/npm.wxs
|
||||
/corepack.wxs
|
||||
/tools/msvs/msi/**/Release/
|
||||
/tools/msvs/msi/**/obj/
|
||||
/tools/msvs/msi/**/x64/
|
||||
# Exclude MSVS files used for .msi file generation
|
||||
!tools/msvs/msi/**/custom_actions.vcxproj
|
||||
!tools/msvs/msi/**/nodemsi.sln
|
||||
|
||||
# === Rules for GYP artifacts ===
|
||||
*-nodegyp*
|
||||
/gyp-*-tool
|
||||
/test/addons/??_*/
|
||||
/*.mk
|
||||
|
||||
# === Rules for other build artifacts ===
|
||||
/email.md
|
||||
/deps/v8-*
|
||||
/deps/icu
|
||||
/deps/icu*.zip
|
||||
/deps/icu*.tgz
|
||||
/deps/icu-tmp
|
||||
./node_modules
|
||||
/android-toolchain/
|
||||
# generated by gyp on Windows
|
||||
/deps/openssl/openssl.props
|
||||
/deps/openssl/openssl.targets
|
||||
/deps/openssl/openssl.xml
|
||||
/deps/openssl/openssl-fipsmodule.props
|
||||
/deps/openssl/openssl-fipsmodule.targets
|
||||
/deps/openssl/openssl-fipsmodule.xml
|
||||
# generated by gyp on android
|
||||
/*.target.mk
|
||||
/*.host.mk
|
||||
/deps/openssl/openssl.target.mk
|
||||
/deps/zlib/zlib.target.mk
|
||||
# generated by MSVC with /P enabled
|
||||
tools/*/*.i
|
||||
tools/*/*.i.tmp
|
||||
|
||||
# === Rules for release artifacts ===
|
||||
/*.tar.*
|
||||
/*.pkg
|
||||
/SHASUMS*.txt*
|
||||
|
||||
# === Rules for `node_modules` ===
|
||||
!**/node_modules/**
|
||||
/node_modules
|
||||
/tools/doc/node_modules
|
||||
/tools/clang-format/node_modules
|
||||
|
||||
# === Rules for test artifacts ===
|
||||
/*.tap
|
||||
/*.xml
|
||||
/v8*-tap.json
|
||||
/node_trace.*.log
|
||||
# coverage related
|
||||
/gcovr
|
||||
/build
|
||||
/coverage
|
||||
|
||||
# === Rules for Xcode artifacts ===
|
||||
*.xcodeproj
|
||||
*.xcworkspace
|
||||
*.pbxproj
|
||||
|
||||
# === Rules for files in `/deps` ===
|
||||
# Exclude all files in the vendored `npm`.
|
||||
!/deps/npm/node_modules
|
||||
# These are not needed and causes issues for distro packagers.
|
||||
/deps/npm/node_modules/.bin/
|
||||
# Respect V8's .gitignore
|
||||
!deps/v8/**
|
||||
# Ignore the libuv book
|
||||
/deps/uv/docs/code/
|
||||
/deps/uv/docs/src/guide/
|
||||
# Ignore .github directories
|
||||
/deps/**/.github/
|
||||
# Ignore dependencies fetched by tools/v8/fetch_deps.py
|
||||
/deps/.cipd
|
||||
|
||||
# === Rules for Windows vcbuild.bat ===
|
||||
/temp-vcbuild
|
||||
|
||||
# === Rules for CMake ===
|
||||
cmake-build-debug/
|
||||
CMakeCache.txt
|
||||
CMakeFiles
|
||||
CTestTestfile.cmake
|
||||
cmake_install.cmake
|
||||
install_manifest.txt
|
||||
*.cbp
|
||||
|
||||
# === Global Rules ===
|
||||
# Keep last to avoid being excluded
|
||||
*.pyc
|
||||
__pycache__
|
||||
.DS_Store
|
||||
*~
|
||||
|
||||
# === Rules for C++ development ===
|
||||
compile_commands.json
|
||||
59
server/app.js
Normal file
59
server/app.js
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
require('dotenv').config({ path: './process.env' });
|
||||
|
||||
const express = require("express");
|
||||
const app = express();
|
||||
const path = require('path');
|
||||
const port = 3000;
|
||||
const db = require("./db");
|
||||
const poi = require("./modules/poi");
|
||||
|
||||
|
||||
app.use(express.static(path.join(__dirname, '..', "public")));
|
||||
|
||||
// Crée une route spéciale pour les tiles
|
||||
app.use('/tiles', express.static(path.join(__dirname, '..', 'tiles')));
|
||||
|
||||
// Définition de la route pour les tiles
|
||||
app.get('/tiles/:z/:x/:y.png', (req, res) => {
|
||||
const z = req.params.z;
|
||||
const x = req.params.x;
|
||||
const y = req.params.y;
|
||||
const tilePath = path.join(__dirname, '..', 'tiles', `${z}/${x}/${y}.png`);
|
||||
res.sendFile(tilePath);
|
||||
});
|
||||
|
||||
app.get("/characterloc", async (req, res) => {
|
||||
try {
|
||||
const characterPositions = await db.getCharacterPos();
|
||||
res.json(characterPositions);
|
||||
} catch (err) {
|
||||
console.error("Erreur lors de la récupération des positions des personnages:", err);
|
||||
res.status(500).send("Erreur interne");
|
||||
}
|
||||
});
|
||||
|
||||
app.get("/npcloc", async (req, res) => {
|
||||
try {
|
||||
const npcPositions = await db.getNpcPos();
|
||||
res.json(npcPositions);
|
||||
} catch (err) {
|
||||
console.error("Erreur lors de la récupération des positions des NPC:", err);
|
||||
res.status(500).send("Erreur interne");
|
||||
}
|
||||
});
|
||||
|
||||
app.get("/poi/:name", async (req, res) => {
|
||||
try {
|
||||
const name = req.params.name;
|
||||
const result = poi.initPoImarker(name);
|
||||
res.json(result);
|
||||
}
|
||||
catch (err) {
|
||||
console.error("Erreur lors de la récupération des PoI:", err);
|
||||
res.status(500).send("Erreur interne");
|
||||
}
|
||||
});
|
||||
|
||||
app.listen(port, () => {
|
||||
console.log(`Listening on port ${port}`);
|
||||
});
|
||||
27
server/data/city.json
Normal file
27
server/data/city.json
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
[
|
||||
{
|
||||
"description": "City of Cragstone",
|
||||
"x": 112.25,
|
||||
"y": -85.625
|
||||
},
|
||||
{
|
||||
"description": "City of Ikeras",
|
||||
"x": 207,
|
||||
"y": -114.5
|
||||
},
|
||||
{
|
||||
"description": "City of Hakata",
|
||||
"x": 223.625,
|
||||
"y": -116.625
|
||||
},
|
||||
{
|
||||
"description": "City of Palisade",
|
||||
"x": 47.375,
|
||||
"y": -132.5
|
||||
},
|
||||
{
|
||||
"description": "City of Linvak Tukal",
|
||||
"x": 87.5,
|
||||
"y": -140.625
|
||||
}
|
||||
]
|
||||
192
server/data/dungeon.json
Normal file
192
server/data/dungeon.json
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
[
|
||||
{
|
||||
"description": "Edge Beetle Mound (Dungeon, Level 1-6)",
|
||||
"x": 152.875,
|
||||
"y": -58.5
|
||||
},
|
||||
{
|
||||
"description": "Wasp Hive (Dungeon, Level 5-10)",
|
||||
"x": 154.75,
|
||||
"y": -73.125
|
||||
},
|
||||
{
|
||||
"description": "Vermin Nest (Dungeon, Level 1-6)",
|
||||
"x": 105.5,
|
||||
"y": -72.625
|
||||
},
|
||||
{
|
||||
"description": "Haunted Cave (Dungeon, Level 5-10)",
|
||||
"x": 102.25,
|
||||
"y": -85.5
|
||||
},
|
||||
{
|
||||
"description": "New Arwic Mines (Dungeon, Level 1-6)",
|
||||
"x": 124.125,
|
||||
"y": -69.375
|
||||
},
|
||||
{
|
||||
"description": "The Hovel (Dungeon, Level 4-7)",
|
||||
"x": 118.125,
|
||||
"y": -80.625
|
||||
},
|
||||
{
|
||||
"description": "Shreth Spawning Pit (Quest, Level 30)",
|
||||
"x": 203.125,
|
||||
"y": -87.625
|
||||
},
|
||||
{
|
||||
"description": "Crumbled Sanctuary (Dungeon, Level 30-33)",
|
||||
"x": 198.125,
|
||||
"y": -80.875
|
||||
},
|
||||
{
|
||||
"description": "Mist Caverns (Dungeon, Level 9-14)()",
|
||||
"x": 112.375,
|
||||
"y": -103.125
|
||||
},
|
||||
{
|
||||
"description": "Old Cragstone Excavation (Level 7-15)",
|
||||
"x": 118.5,
|
||||
"y": -86.5
|
||||
},
|
||||
{
|
||||
"description": "Drudge Hideout (Dungeon, Level 8-13)",
|
||||
"x": 149.5,
|
||||
"y": -96.625
|
||||
},
|
||||
{
|
||||
"description": "Mad Crone Haven (Dungeon, Level 10-14)",
|
||||
"x": 152.625,
|
||||
"y": -88.875
|
||||
},
|
||||
{
|
||||
"description": "Underground Drudge City (Dungeon, Level 16-23)",
|
||||
"x": 152.75,
|
||||
"y": -101.25
|
||||
},
|
||||
{
|
||||
"description": "The Laboratories (Dungeon, Level 18-22)",
|
||||
"x": 146.375,
|
||||
"y": -103.625
|
||||
},
|
||||
{
|
||||
"description": "Mucor Mushroom Grotto (Quest, Level 30)",
|
||||
"x": 233.125,
|
||||
"y": -89.5
|
||||
},
|
||||
{
|
||||
"description": "Dank Empyrean Ruins (Dungeon, Level 33-34)",
|
||||
"x": 238.625,
|
||||
"y": -87.625
|
||||
},
|
||||
{
|
||||
"description": "Olthoi Hive (Dungeon, Level 40)",
|
||||
"x": 222.25,
|
||||
"y": -86.625
|
||||
},
|
||||
{
|
||||
"description": "Olthoi Hive (Dungeon, Level 40)",
|
||||
"x": 225.5,
|
||||
"y": -86.625
|
||||
},
|
||||
{
|
||||
"description": "Deepdank Tunnels (Dungeon, Level 25-30)",
|
||||
"x": 211.625,
|
||||
"y": -97.75
|
||||
},
|
||||
{
|
||||
"description": "Deep Darkenfowl Roosts (Quest, Level 20)()",
|
||||
"x": 188.5,
|
||||
"y": -118.25
|
||||
},
|
||||
{
|
||||
"description": "Water Temple Dungeon (Dungeon, Level 16-19)",
|
||||
"x": 184.5,
|
||||
"y": -126.375
|
||||
},
|
||||
{
|
||||
"description": "Inner Darkness Dungeon (Dungeon, Level 18-22)",
|
||||
"x": 179.375,
|
||||
"y": -136.625
|
||||
},
|
||||
{
|
||||
"description": "Illuminated Drudge Cave (Quest, Level 18)",
|
||||
"x": 148.875,
|
||||
"y": -122.375
|
||||
},
|
||||
{
|
||||
"description": "Lasher Caves (Dungeon, Level 14-18)",
|
||||
"x": 133.5,
|
||||
"y": -113.5
|
||||
},
|
||||
{
|
||||
"description": "Fiery Crypt (Dungeon, Level 16-23)",
|
||||
"x": 148.75,
|
||||
"y": -120.375
|
||||
},
|
||||
{
|
||||
"description": "Darkenfowl Pens (Dungeon, Level 20-25)",
|
||||
"x": 191.75,
|
||||
"y": -115.75
|
||||
},
|
||||
{
|
||||
"description": "Toad Keep (Dungeon, Level 32-35)",
|
||||
"x": 243.75,
|
||||
"y": -118.75
|
||||
},
|
||||
{
|
||||
"description": "The Ossuary (Dungeon, Level 42-45)",
|
||||
"x": 83.625,
|
||||
"y": -133.375
|
||||
},
|
||||
{
|
||||
"description": "Omishan Armory (Quest, Level 30)",
|
||||
"x": 220.5,
|
||||
"y": -141
|
||||
},
|
||||
{
|
||||
"description": "Sclavus Hierophant\u0027s Temple (Quest, Level 22)",
|
||||
"x": 214.125,
|
||||
"y": -116.375
|
||||
},
|
||||
{
|
||||
"description": "Ghost Mines (Dungeon, Level 30-33)",
|
||||
"x": 201,
|
||||
"y": -122
|
||||
},
|
||||
{
|
||||
"description": "Frozen Ravine (Dungeon, Level 45)",
|
||||
"x": 57.75,
|
||||
"y": -140.125
|
||||
},
|
||||
{
|
||||
"description": "Crystal Caves (Dungeon, Level 35-39)",
|
||||
"x": 88.375,
|
||||
"y": -136.875
|
||||
},
|
||||
{
|
||||
"description": "Linvak Massif Armory (Quest, Level 30)",
|
||||
"x": 113.5,
|
||||
"y": -144.625
|
||||
},
|
||||
{
|
||||
"description": "Steam Caverns (Dungeon, Level 32-34)",
|
||||
"x": 127,
|
||||
"y": -154
|
||||
},
|
||||
{
|
||||
"description": "The Banderling Delve (Dungeon, Level 38-45)",
|
||||
"x": 90,
|
||||
"y": -148
|
||||
},
|
||||
{
|
||||
"description": "Golden Age Reliquary (Dungeon, Level 39-41)",
|
||||
"x": 95.25,
|
||||
"y": -152.75
|
||||
},
|
||||
{
|
||||
"description": "New Mage Academy (Dungeon, Level 45)",
|
||||
"x": 64.25,
|
||||
"y": -178.875
|
||||
}
|
||||
]
|
||||
97
server/data/faction.json
Normal file
97
server/data/faction.json
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
[
|
||||
{
|
||||
"description": "Faction Shrine -- Order of Dereth",
|
||||
"x": 111.125,
|
||||
"y": -86.875
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Shadow Kingdom",
|
||||
"x": 111.75,
|
||||
"y": -86.875
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Dominion",
|
||||
"x": 111.875,
|
||||
"y": -86.125
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Neutral",
|
||||
"x": 111.125,
|
||||
"y": -86.125
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine and Kingdom Stone -- Order of Dereth",
|
||||
"x": 143.375,
|
||||
"y": -117.5
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine and Kingdom Stone -- Shadow Kingdom",
|
||||
"x": 147.5,
|
||||
"y": -116
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine and Kingdom Stone -- Dominion",
|
||||
"x": 151.5,
|
||||
"y": -117.5
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Order of Dereth",
|
||||
"x": 206.5,
|
||||
"y": -114.75
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Shadow Kingdom",
|
||||
"x": 206.875,
|
||||
"y": -113.75
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Dominion",
|
||||
"x": 207.75,
|
||||
"y": -115.375
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Neutral",
|
||||
"x": 207.125,
|
||||
"y": -115.625
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Order of Dereth",
|
||||
"x": 223.875,
|
||||
"y": -115.125
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Shadow Kingdom",
|
||||
"x": 224.875,
|
||||
"y": -116.75
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Dominion",
|
||||
"x": 223.875,
|
||||
"y": -117
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Neutral",
|
||||
"x": 224.875,
|
||||
"y": -116.25
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Order of Dereth",
|
||||
"x": 85.125,
|
||||
"y": -140.25
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Shadow Kingdom",
|
||||
"x": 85,
|
||||
"y": -139.25
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Dominion",
|
||||
"x": 85.25,
|
||||
"y": -141.625
|
||||
},
|
||||
{
|
||||
"description": "Faction Shrine -- Neutral",
|
||||
"x": 85.125,
|
||||
"y": -140.875
|
||||
}
|
||||
]
|
||||
182
server/data/gateways.json
Normal file
182
server/data/gateways.json
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
[
|
||||
{
|
||||
"description": "Gateways: Arwic, Millstone, Cragstone",
|
||||
"x": 142.125,
|
||||
"y": -73.125
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Arwic, Kehan, Cragstone",
|
||||
"x": 102,
|
||||
"y": -79.875
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Kehan, Millstone, Cragstone",
|
||||
"x": 118.625,
|
||||
"y": -70.75
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Ankoro, Ikeras",
|
||||
"x": 198.625,
|
||||
"y": -93.125
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Millstone, Kehan, Arwic, Molwirth, Rithwic",
|
||||
"x": 111.5,
|
||||
"y": -86.5
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Cragstone, Shoushi",
|
||||
"x": 127.75,
|
||||
"y": -109.75
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Cavendo, Cragstone",
|
||||
"x": 133.375,
|
||||
"y": -97.25
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Rithwic, Shoushi",
|
||||
"x": 163.875,
|
||||
"y": -107
|
||||
},
|
||||
{
|
||||
"description": "Gateway: Omishan",
|
||||
"x": 164.625,
|
||||
"y": -106.875
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Rakani, Hakata",
|
||||
"x": 220.625,
|
||||
"y": -91.625
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Shinoko, Ikeras",
|
||||
"x": 222.625,
|
||||
"y": -105.625
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Shinoko, Ikeras",
|
||||
"x": 184.25,
|
||||
"y": -133.25
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Shoushi, Cavendo",
|
||||
"x": 166.875,
|
||||
"y": -116.125
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Cavendo and Molwirth",
|
||||
"x": 155.625,
|
||||
"y": -113.25
|
||||
},
|
||||
{
|
||||
"description": "Gateway: Kydi",
|
||||
"x": 158.375,
|
||||
"y": -117.25
|
||||
},
|
||||
{
|
||||
"description": "Gateway from Prosper Free-For-All Area to Shoushi",
|
||||
"x": 126.25,
|
||||
"y": -124.375
|
||||
},
|
||||
{
|
||||
"description": "Gateway to Prosper Free-For-All Area",
|
||||
"x": 127.875,
|
||||
"y": -122.5
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Rakani, Hakata",
|
||||
"x": 205.375,
|
||||
"y": -114.25
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Zu, Mayoi",
|
||||
"x": 204.25,
|
||||
"y": -115.375
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Ankoro, Ikeras",
|
||||
"x": 224.75,
|
||||
"y": -115.5
|
||||
},
|
||||
{
|
||||
"description": "Gateway: Rings of Oriad",
|
||||
"x": 245.875,
|
||||
"y": -105.625
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Palisade, Linvak Tukal",
|
||||
"x": 70.25,
|
||||
"y": -134.875
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Mayoi, Zu",
|
||||
"x": 214.375,
|
||||
"y": -133.375
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Arhovas, Gurokora",
|
||||
"x": 50.5,
|
||||
"y": -132.75
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Keidelur, Whitebay",
|
||||
"x": 89.5,
|
||||
"y": -140.5
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Arhovas, Ondekodo",
|
||||
"x": 87.5,
|
||||
"y": -138.625
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Keidelur, Linvak Tukal",
|
||||
"x": 121.375,
|
||||
"y": -154
|
||||
},
|
||||
{
|
||||
"description": "Gateway: Vesayan Isles",
|
||||
"x": 132.375,
|
||||
"y": -143.5
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Gurokora, Linvak Tukal",
|
||||
"x": 87.375,
|
||||
"y": -151.875
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Whitebay, Linvak Tukal",
|
||||
"x": 109.5,
|
||||
"y": -151.125
|
||||
},
|
||||
{
|
||||
"description": "Gateways: Ondekodo, Palisade",
|
||||
"x": 78.5,
|
||||
"y": -163.25
|
||||
},
|
||||
{
|
||||
"description": "Gateways to Arramora",
|
||||
"x": 64.625,
|
||||
"y": -111.75
|
||||
},
|
||||
{
|
||||
"description": "Gateway: Linvak Massif",
|
||||
"x": 65,
|
||||
"y": -112.25
|
||||
},
|
||||
{
|
||||
"description": "Southern Arramora Gateway",
|
||||
"x": 75.5,
|
||||
"y": -101.75
|
||||
},
|
||||
{
|
||||
"description": "Southern Arramora Gateway",
|
||||
"x": 66.25,
|
||||
"y": -95.375
|
||||
},
|
||||
{
|
||||
"description": "Southern Arramora Gateway",
|
||||
"x": 55.75,
|
||||
"y": -106.5
|
||||
}
|
||||
]
|
||||
297
server/data/outpost.json
Normal file
297
server/data/outpost.json
Normal file
|
|
@ -0,0 +1,297 @@
|
|||
[
|
||||
{
|
||||
"description": "Northwest Lost Wish Outpost",
|
||||
"x": 140.125,
|
||||
"y": -59.875
|
||||
},
|
||||
{
|
||||
"description": "Northeast Lost Wish Outpost",
|
||||
"x": 151.625,
|
||||
"y": -59.125
|
||||
},
|
||||
{
|
||||
"description": "Southeast Lost Wish Outpost",
|
||||
"x": 154.875,
|
||||
"y": -67.125
|
||||
},
|
||||
{
|
||||
"description": "Northwest Esper Outpost",
|
||||
"x": 94.625,
|
||||
"y": -74.5
|
||||
},
|
||||
{
|
||||
"description": "Northeast Esper Outpost",
|
||||
"x": 109.375,
|
||||
"y": -69.375
|
||||
},
|
||||
{
|
||||
"description": "Southwest Esper Outpost",
|
||||
"x": 95.5,
|
||||
"y": -89.375
|
||||
},
|
||||
{
|
||||
"description": "Northern Arwic Outpost",
|
||||
"x": 128.75,
|
||||
"y": -67
|
||||
},
|
||||
{
|
||||
"description": "Eastern Arwic Outpost",
|
||||
"x": 138.5,
|
||||
"y": -74.375
|
||||
},
|
||||
{
|
||||
"description": "Southern Arwic Outpost",
|
||||
"x": 124.5,
|
||||
"y": -84.25
|
||||
},
|
||||
{
|
||||
"description": "Northwest Naderu Outpost",
|
||||
"x": 194.375,
|
||||
"y": -80.75
|
||||
},
|
||||
{
|
||||
"description": "Northeast Naderu Outpost",
|
||||
"x": 210.25,
|
||||
"y": -82.875
|
||||
},
|
||||
{
|
||||
"description": "Southeast Naderu Outpost",
|
||||
"x": 206.625,
|
||||
"y": -89.625
|
||||
},
|
||||
{
|
||||
"description": "Northern Cobalt Outpost",
|
||||
"x": 117.375,
|
||||
"y": -97.5
|
||||
},
|
||||
{
|
||||
"description": "Western Cobalt Outpost",
|
||||
"x": 108.5,
|
||||
"y": -102.625
|
||||
},
|
||||
{
|
||||
"description": "Northwest Mad Crone Outpost",
|
||||
"x": 137.25,
|
||||
"y": -89.25
|
||||
},
|
||||
{
|
||||
"description": "Northeast Mad Crone Outpost",
|
||||
"x": 154,
|
||||
"y": -90.875
|
||||
},
|
||||
{
|
||||
"description": "Southeast Mad Crone Outpost",
|
||||
"x": 157.75,
|
||||
"y": -96.125
|
||||
},
|
||||
{
|
||||
"description": "Northeast Drudge Citadel Outpost",
|
||||
"x": 165.5,
|
||||
"y": -88.625
|
||||
},
|
||||
{
|
||||
"description": "Southwest Drudge Citadel Outpost",
|
||||
"x": 144.625,
|
||||
"y": -109.625
|
||||
},
|
||||
{
|
||||
"description": "Northeast Farali Outpost",
|
||||
"x": 243.25,
|
||||
"y": -87.625
|
||||
},
|
||||
{
|
||||
"description": "Southeast Farali Outpost",
|
||||
"x": 237.625,
|
||||
"y": -103.5
|
||||
},
|
||||
{
|
||||
"description": "Central Farali Outpost",
|
||||
"x": 226.375,
|
||||
"y": -92.625
|
||||
},
|
||||
{
|
||||
"description": "Northwest Tou-Tou Outpost",
|
||||
"x": 203.625,
|
||||
"y": -97.75
|
||||
},
|
||||
{
|
||||
"description": "Northeast Tou-Tou Outpost",
|
||||
"x": 213.375,
|
||||
"y": -92.875
|
||||
},
|
||||
{
|
||||
"description": "Southern Tou-Tou Outpost",
|
||||
"x": 211.375,
|
||||
"y": -114.75
|
||||
},
|
||||
{
|
||||
"description": "Northern Kydi Outpost",
|
||||
"x": 181.25,
|
||||
"y": -110.625
|
||||
},
|
||||
{
|
||||
"description": "Eastern Kydi Outpost",
|
||||
"x": 183.375,
|
||||
"y": -118.625
|
||||
},
|
||||
{
|
||||
"description": "Western Kydi Outpost",
|
||||
"x": 170.125,
|
||||
"y": -117.875
|
||||
},
|
||||
{
|
||||
"description": "Southern Prosper Outpost",
|
||||
"x": 139.5,
|
||||
"y": -128.625
|
||||
},
|
||||
{
|
||||
"description": "Eastern Prosper Outpost",
|
||||
"x": 152.625,
|
||||
"y": -127.375
|
||||
},
|
||||
{
|
||||
"description": "Western Prosper Outpost",
|
||||
"x": 127.5,
|
||||
"y": -117.625
|
||||
},
|
||||
{
|
||||
"description": "Western Ariaki Outpost",
|
||||
"x": 191.375,
|
||||
"y": -110.875
|
||||
},
|
||||
{
|
||||
"description": "Northwest Ariaki Outpost",
|
||||
"x": 189.375,
|
||||
"y": -105.75
|
||||
},
|
||||
{
|
||||
"description": "Northeast Ariaki Outpost",
|
||||
"x": 203.625,
|
||||
"y": -103.75
|
||||
},
|
||||
{
|
||||
"description": "Northern Vesayan Outpost",
|
||||
"x": 235.125,
|
||||
"y": -110.875
|
||||
},
|
||||
{
|
||||
"description": "Eastern Vesayan Outpost",
|
||||
"x": 245.5,
|
||||
"y": -113.75
|
||||
},
|
||||
{
|
||||
"description": "Central Winterhollows Outpost",
|
||||
"x": 81.375,
|
||||
"y": -135.5
|
||||
},
|
||||
{
|
||||
"description": "Northern Winterhollows Outpost",
|
||||
"x": 78.5,
|
||||
"y": -126.625
|
||||
},
|
||||
{
|
||||
"description": "Northeast Winterhollows Outpost",
|
||||
"x": 89.375,
|
||||
"y": -128.5
|
||||
},
|
||||
{
|
||||
"description": "Northwest Lumari Outpost",
|
||||
"x": 198.5,
|
||||
"y": -128.5
|
||||
},
|
||||
{
|
||||
"description": "Northern Lumari Outpost",
|
||||
"x": 209.5,
|
||||
"y": -122.625
|
||||
},
|
||||
{
|
||||
"description": "Southeast Lumari Outpost",
|
||||
"x": 223.5,
|
||||
"y": -127.375
|
||||
},
|
||||
{
|
||||
"description": "Southern Gevoth Outpost",
|
||||
"x": 58.5,
|
||||
"y": -156.625
|
||||
},
|
||||
{
|
||||
"description": "Eastern Gevoth Outpost",
|
||||
"x": 60.375,
|
||||
"y": -138.75
|
||||
},
|
||||
{
|
||||
"description": "Western Gevoth Outpost",
|
||||
"x": 46.375,
|
||||
"y": -140.5
|
||||
},
|
||||
{
|
||||
"description": "Northern Thusik Outpost",
|
||||
"x": 99.625,
|
||||
"y": -132.875
|
||||
},
|
||||
{
|
||||
"description": "Eastern Thusik Outpost",
|
||||
"x": 103.25,
|
||||
"y": -139.75
|
||||
},
|
||||
{
|
||||
"description": "Drudgerton",
|
||||
"x": 100.625,
|
||||
"y": -143.75
|
||||
},
|
||||
{
|
||||
"description": "Northern Oriad Outpost",
|
||||
"x": 117.375,
|
||||
"y": -142.75
|
||||
},
|
||||
{
|
||||
"description": "Eastern Oriad Outpost",
|
||||
"x": 128.375,
|
||||
"y": -144.5
|
||||
},
|
||||
{
|
||||
"description": "Western Oriad Outpost",
|
||||
"x": 117.125,
|
||||
"y": -150.75
|
||||
},
|
||||
{
|
||||
"description": "Southwest Nepeth Outpost",
|
||||
"x": 80.5,
|
||||
"y": -159.375
|
||||
},
|
||||
{
|
||||
"description": "Northwest Nepeth Outpost",
|
||||
"x": 78.375,
|
||||
"y": -144.625
|
||||
},
|
||||
{
|
||||
"description": "Northeast Nepeth Outpost",
|
||||
"x": 86.375,
|
||||
"y": -147.5
|
||||
},
|
||||
{
|
||||
"description": "Central Stoneshadow Outpost",
|
||||
"x": 99.375,
|
||||
"y": -155.5
|
||||
},
|
||||
{
|
||||
"description": "Northwest Stoneshadow Outpost",
|
||||
"x": 95.5,
|
||||
"y": -149.75
|
||||
},
|
||||
{
|
||||
"description": "Southwest Stoneshadow Outpost",
|
||||
"x": 92.375,
|
||||
"y": -162.375
|
||||
},
|
||||
{
|
||||
"description": "Eastern Malthabbor Outpost",
|
||||
"x": 78.125,
|
||||
"y": -168.5
|
||||
},
|
||||
{
|
||||
"description": "Jethric\u0027s Outpost",
|
||||
"x": 193.75,
|
||||
"y": -168.25
|
||||
}
|
||||
]
|
||||
502
server/data/poi.json
Normal file
502
server/data/poi.json
Normal file
|
|
@ -0,0 +1,502 @@
|
|||
[
|
||||
{
|
||||
"description": "Drudge Windmill (Point of Interest)",
|
||||
"x": 142.125,
|
||||
"y": -67.625
|
||||
},
|
||||
{
|
||||
"description": "Armoredillo Ancestor Head (Quest, Level 3)",
|
||||
"x": 144,
|
||||
"y": -73.75
|
||||
},
|
||||
{
|
||||
"description": "Empyrean Head Circle (Point of Interest)",
|
||||
"x": 146.625,
|
||||
"y": -68.875
|
||||
},
|
||||
{
|
||||
"description": "Obsidian Span (Point of Interest)",
|
||||
"x": 112.75,
|
||||
"y": -72
|
||||
},
|
||||
{
|
||||
"description": "Armoredillo Ancestor Head (Quest, Level 3)",
|
||||
"x": 110.125,
|
||||
"y": -75.625
|
||||
},
|
||||
{
|
||||
"description": "Drudge Outcast Camp (Point of Interest)",
|
||||
"x": 103.75,
|
||||
"y": -84.875
|
||||
},
|
||||
{
|
||||
"description": "Armoredillo Ancestor Head (Quest, Level 3)",
|
||||
"x": 117.375,
|
||||
"y": -71.875
|
||||
},
|
||||
{
|
||||
"description": "Deru Tree (Quest, Level 25)",
|
||||
"x": 197.75,
|
||||
"y": -91.625
|
||||
},
|
||||
{
|
||||
"description": "Shrine of the Leaf (Point of Interest)",
|
||||
"x": 192.875,
|
||||
"y": -84.125
|
||||
},
|
||||
{
|
||||
"description": "Shrine of the Root (Point of Interest)",
|
||||
"x": 204.875,
|
||||
"y": -79.375
|
||||
},
|
||||
{
|
||||
"description": "Shrine of the Limb (Point of Interest)",
|
||||
"x": 215.75,
|
||||
"y": -84.375
|
||||
},
|
||||
{
|
||||
"description": "Crater Tunnel (Point of Interest)",
|
||||
"x": 217.875,
|
||||
"y": -82.5
|
||||
},
|
||||
{
|
||||
"description": "Ruins of Old Cragstone (Point of Interest)",
|
||||
"x": 120.375,
|
||||
"y": -88.625
|
||||
},
|
||||
{
|
||||
"description": "The Sundermont (Point of Interest)",
|
||||
"x": 120.5,
|
||||
"y": -102.875
|
||||
},
|
||||
{
|
||||
"description": "Mist Shrine (Quest, Level 7)",
|
||||
"x": 128.5,
|
||||
"y": -109.625
|
||||
},
|
||||
{
|
||||
"description": "Drudge Slinker Bandit Camp (Quest, Level 10)",
|
||||
"x": 125.25,
|
||||
"y": -107.75
|
||||
},
|
||||
{
|
||||
"description": "Mad Crone Mountains (Point of Interest)",
|
||||
"x": 154.25,
|
||||
"y": -92.5
|
||||
},
|
||||
{
|
||||
"description": "Cauldron of Tanacha (Quest, Level 5)",
|
||||
"x": 132.5,
|
||||
"y": -91.625
|
||||
},
|
||||
{
|
||||
"description": "Drudge Island Fort (Point of Interest)",
|
||||
"x": 160.125,
|
||||
"y": -94.25
|
||||
},
|
||||
{
|
||||
"description": "Six Falls (Point of Interest)",
|
||||
"x": 139.75,
|
||||
"y": -86.625
|
||||
},
|
||||
{
|
||||
"description": "Isle of Tears Drudge Fort",
|
||||
"x": 128.25,
|
||||
"y": -93.625
|
||||
},
|
||||
{
|
||||
"description": "City of Artefon()",
|
||||
"x": 137.125,
|
||||
"y": -102.75
|
||||
},
|
||||
{
|
||||
"description": "Ribcage Citadel (Point of Interest)",
|
||||
"x": 155,
|
||||
"y": -103.75
|
||||
},
|
||||
{
|
||||
"description": "Rashan Twoblades (Quest, Level 10)",
|
||||
"x": 157.625,
|
||||
"y": -108
|
||||
},
|
||||
{
|
||||
"description": "Idol of Might (Point of Interest)",
|
||||
"x": 150.375,
|
||||
"y": -107.875
|
||||
},
|
||||
{
|
||||
"description": "Idol of Speed (Point of Interest)",
|
||||
"x": 148.625,
|
||||
"y": -107.625
|
||||
},
|
||||
{
|
||||
"description": "Idol of Fortitude (Point of Interest)",
|
||||
"x": 153,
|
||||
"y": -107.875
|
||||
},
|
||||
{
|
||||
"description": "Warder Hideout (Quest, Level 15)",
|
||||
"x": 145.375,
|
||||
"y": -101.25
|
||||
},
|
||||
{
|
||||
"description": "Drudge Fort (Quest, Level 15)",
|
||||
"x": 154.375,
|
||||
"y": -102.625
|
||||
},
|
||||
{
|
||||
"description": "The Choker (Point of Interest)",
|
||||
"x": 232.375,
|
||||
"y": -97.375
|
||||
},
|
||||
{
|
||||
"description": "Ancestor Head (Quest, Level 30)",
|
||||
"x": 243.75,
|
||||
"y": -88.625
|
||||
},
|
||||
{
|
||||
"description": "Tou-Tou Lighthouse (Point of Interest)",
|
||||
"x": 222.375,
|
||||
"y": -104.75
|
||||
},
|
||||
{
|
||||
"description": "Ruins of Hebian-to (Point of Interest)",
|
||||
"x": 216.125,
|
||||
"y": -110.25
|
||||
},
|
||||
{
|
||||
"description": "Tou-Tou Bathhouse (Point of Interest)",
|
||||
"x": 220.625,
|
||||
"y": -108.375
|
||||
},
|
||||
{
|
||||
"description": "Burun village of Blackmire (Point of Interest)",
|
||||
"x": 207.125,
|
||||
"y": -101.875
|
||||
},
|
||||
{
|
||||
"description": "Fort Aimaru",
|
||||
"x": 215.5,
|
||||
"y": -107.375
|
||||
},
|
||||
{
|
||||
"description": "Ruins of Lin (Point of Interest)",
|
||||
"x": 214.625,
|
||||
"y": -112.625
|
||||
},
|
||||
{
|
||||
"description": "Ruins of Baishi (Point of Interest)",
|
||||
"x": 212.25,
|
||||
"y": -109.875
|
||||
},
|
||||
{
|
||||
"description": "Aulatah Colossus (Point of Interest)",
|
||||
"x": 177.5,
|
||||
"y": -115.25
|
||||
},
|
||||
{
|
||||
"description": "Hinu's Mimbu Village (Point of Interest)",
|
||||
"x": 177.5,
|
||||
"y": -107.5
|
||||
},
|
||||
{
|
||||
"description": "Island Mimbu Village (Point of Interest)",
|
||||
"x": 179.5,
|
||||
"y": -104.875
|
||||
},
|
||||
{
|
||||
"description": "Sclavus Fortress (Point of Interest)",
|
||||
"x": 189,
|
||||
"y": -121
|
||||
},
|
||||
{
|
||||
"description": "Haunted Mission Ruins",
|
||||
"x": 181,
|
||||
"y": -132
|
||||
},
|
||||
{
|
||||
"description": "Ruins of Nanto (Point of Interest)",
|
||||
"x": 186,
|
||||
"y": -128
|
||||
},
|
||||
{
|
||||
"description": "Shoyanen's Tower (Point of Interest)",
|
||||
"x": 190.375,
|
||||
"y": -134.875
|
||||
},
|
||||
{
|
||||
"description": "Ruined Fort (Point of Interest)",
|
||||
"x": 179,
|
||||
"y": -140
|
||||
},
|
||||
{
|
||||
"description": "Mimbu Village (Point of Interest)",
|
||||
"x": 178,
|
||||
"y": -128
|
||||
},
|
||||
{
|
||||
"description": "Blue Ghost Falls (Point of Interest)",
|
||||
"x": 185.625,
|
||||
"y": -127.75
|
||||
},
|
||||
{
|
||||
"description": "The Dam (Point of Interest)",
|
||||
"x": 143.25,
|
||||
"y": -111.625
|
||||
},
|
||||
{
|
||||
"description": "Spirit of Artefun",
|
||||
"x": 143,
|
||||
"y": -111.875
|
||||
},
|
||||
{
|
||||
"description": "New Drudge Republic Counselors (Quest, Level 13)",
|
||||
"x": 151,
|
||||
"y": -127
|
||||
},
|
||||
{
|
||||
"description": "Tamar Realian (Quest, Level 15)",
|
||||
"x": 135.375,
|
||||
"y": -119.875
|
||||
},
|
||||
{
|
||||
"description": "Osteth Weapons Golem (Quest, Level 15)",
|
||||
"x": 138.25,
|
||||
"y": -120
|
||||
},
|
||||
{
|
||||
"description": "Empyrean Bridge (Point of Interest)",
|
||||
"x": 154,
|
||||
"y": -126
|
||||
},
|
||||
{
|
||||
"description": "King Toad Idol (Point of Interest)",
|
||||
"x": 150.375,
|
||||
"y": -124.375
|
||||
},
|
||||
{
|
||||
"description": "The Head of Alkandar (Point of Interest)",
|
||||
"x": 191.375,
|
||||
"y": -101.625
|
||||
},
|
||||
{
|
||||
"description": "Totem of Vakentu (Quest, Level 20)",
|
||||
"x": 206.5,
|
||||
"y": -115.625
|
||||
},
|
||||
{
|
||||
"description": "Ithaenc Cathedral (Point of Interest)",
|
||||
"x": 239.25,
|
||||
"y": -138.25
|
||||
},
|
||||
{
|
||||
"description": "Four Falls Overlook (Point of Interest)",
|
||||
"x": 240.5,
|
||||
"y": -136
|
||||
},
|
||||
{
|
||||
"description": "The Icefall (Point of Interest)",
|
||||
"x": 73.375,
|
||||
"y": -138.625
|
||||
},
|
||||
{
|
||||
"description": "The Frostbound One (Quest, Level 42)",
|
||||
"x": 79.25,
|
||||
"y": -131.375
|
||||
},
|
||||
{
|
||||
"description": "Portal to Icefire Gorge",
|
||||
"x": 79.125,
|
||||
"y": -131.25
|
||||
},
|
||||
{
|
||||
"description": "Unaro's Burial Mound (Quest, Level 25)",
|
||||
"x": 212.875,
|
||||
"y": -118.875
|
||||
},
|
||||
{
|
||||
"description": "Shi Sumakhe (Quest, Level 30)",
|
||||
"x": 220.25,
|
||||
"y": -130.375
|
||||
},
|
||||
{
|
||||
"description": "Aste Sclavus Temple (Quest, Level 22)",
|
||||
"x": 197.5,
|
||||
"y": -113.375
|
||||
},
|
||||
{
|
||||
"description": "Essa Sclavus Temple (Quest, Level 22)",
|
||||
"x": 201.625,
|
||||
"y": -119.25
|
||||
},
|
||||
{
|
||||
"description": "Ulu Sclavus Temple (Quest, Level 22)",
|
||||
"x": 226.375,
|
||||
"y": -130.5
|
||||
},
|
||||
{
|
||||
"description": "Dereth Rally (Quest, Level 15)",
|
||||
"x": 210.125,
|
||||
"y": -121.875
|
||||
},
|
||||
{
|
||||
"description": "Gates of Gevoth (Point of Interest)",
|
||||
"x": 53.5,
|
||||
"y": -143.75
|
||||
},
|
||||
{
|
||||
"description": "The Silent City (Point of Interest)()",
|
||||
"x": 97.375,
|
||||
"y": -137.75
|
||||
},
|
||||
{
|
||||
"description": "Altar of Justice (Point of Interest)",
|
||||
"x": 100.125,
|
||||
"y": -128.75
|
||||
},
|
||||
{
|
||||
"description": "Altar of Turmoil (Point of Interest)",
|
||||
"x": 109.75,
|
||||
"y": -136.75
|
||||
},
|
||||
{
|
||||
"description": "Altar of Order (Point of Interest)",
|
||||
"x": 106.875,
|
||||
"y": -145.25
|
||||
},
|
||||
{
|
||||
"description": "Altar of the Ancients (Quest, Level 35)",
|
||||
"x": 94.75,
|
||||
"y": -135.625
|
||||
},
|
||||
{
|
||||
"description": "Mistcurl Vale (Point of Interest)",
|
||||
"x": 128,
|
||||
"y": -156.5
|
||||
},
|
||||
{
|
||||
"description": "Eli Spinekeeper Camp (Quest, Level 28)",
|
||||
"x": 123.375,
|
||||
"y": -146.5
|
||||
},
|
||||
{
|
||||
"description": "Malga Dresovan (Quest, Level 40)",
|
||||
"x": 121.125,
|
||||
"y": -147.625
|
||||
},
|
||||
{
|
||||
"description": "Yokketh Bell Tower (Point of Interest)",
|
||||
"x": 84.5,
|
||||
"y": -149.25
|
||||
},
|
||||
{
|
||||
"description": "Lodrog's Watchtower (Quest, Level 38)",
|
||||
"x": 86.75,
|
||||
"y": -155.875
|
||||
},
|
||||
{
|
||||
"description": "The Water Walk (Point of Interest)",
|
||||
"x": 79.375,
|
||||
"y": -160.5
|
||||
},
|
||||
{
|
||||
"description": "Resolution Point (Point of Interest)",
|
||||
"x": 68.375,
|
||||
"y": -146.125
|
||||
},
|
||||
{
|
||||
"description": "The Colussus (Point of Interest)",
|
||||
"x": 92.5,
|
||||
"y": -146.75
|
||||
},
|
||||
{
|
||||
"description": "Ruined Temple (Point of Interest)",
|
||||
"x": 97,
|
||||
"y": -153.875
|
||||
},
|
||||
{
|
||||
"description": "Fortress Goarata (Point of Interest)",
|
||||
"x": 70.5,
|
||||
"y": -174
|
||||
},
|
||||
{
|
||||
"description": "Ancestor Head (Quest, Level 45)",
|
||||
"x": 64.125,
|
||||
"y": -179.375
|
||||
},
|
||||
{
|
||||
"description": "The End of the Road (Point of Interest)",
|
||||
"x": 76.625,
|
||||
"y": -170.375
|
||||
},
|
||||
{
|
||||
"description": "Star Beacon",
|
||||
"x": 64.875,
|
||||
"y": -112.125
|
||||
},
|
||||
{
|
||||
"description": "Abandoned Gromnatross Nest",
|
||||
"x": 178,
|
||||
"y": -164
|
||||
},
|
||||
{
|
||||
"description": "Atlan's Foundry",
|
||||
"x": 206.75,
|
||||
"y": -169.875
|
||||
},
|
||||
{
|
||||
"description": "Pyreal Mines",
|
||||
"x": 202.5,
|
||||
"y": -164.75
|
||||
},
|
||||
{
|
||||
"description": "Realadain Estate",
|
||||
"x": 202.5,
|
||||
"y": -202.125
|
||||
},
|
||||
{
|
||||
"description": "Fort Strathelar",
|
||||
"x": 177.5,
|
||||
"y": -193.625
|
||||
},
|
||||
{
|
||||
"description": "Shield Wall Gate",
|
||||
"x": 174.5,
|
||||
"y": -195.875
|
||||
},
|
||||
{
|
||||
"description": "Stalwart's Tower",
|
||||
"x": 185.625,
|
||||
"y": -195.75
|
||||
},
|
||||
{
|
||||
"description": "Knorr Lyceum",
|
||||
"x": 158.125,
|
||||
"y": -217.375
|
||||
},
|
||||
{
|
||||
"description": "Tower of Wrath",
|
||||
"x": 179,
|
||||
"y": -209.75
|
||||
},
|
||||
{
|
||||
"description": "Knorr Lyceum Dock",
|
||||
"x": 152,
|
||||
"y": -216.875
|
||||
},
|
||||
{
|
||||
"description": "Knorr Dormitories",
|
||||
"x": 152,
|
||||
"y": -216.875
|
||||
},
|
||||
{
|
||||
"description": "Observatory",
|
||||
"x": 152.75,
|
||||
"y": -206.5
|
||||
},
|
||||
{
|
||||
"description": "Tibri Outpost",
|
||||
"x": 171.5,
|
||||
"y": -201.5
|
||||
}
|
||||
]
|
||||
422
server/data/ringways.json
Normal file
422
server/data/ringways.json
Normal file
|
|
@ -0,0 +1,422 @@
|
|||
[
|
||||
{
|
||||
"description": "Ringway to northwest Lost Wish",
|
||||
"x": 141.875,
|
||||
"y": -71.125
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Lost Wish",
|
||||
"x": 140.125,
|
||||
"y": -59.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southeast Lost Wish",
|
||||
"x": 142.125,
|
||||
"y": -72.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southwest Lost Wish",
|
||||
"x": 154.625,
|
||||
"y": -67.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Esper",
|
||||
"x": 108.875,
|
||||
"y": -70
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Esper",
|
||||
"x": 102.125,
|
||||
"y": -79.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Millstone",
|
||||
"x": 95.875,
|
||||
"y": -89.5
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southwest Esper",
|
||||
"x": 94.5,
|
||||
"y": -75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northern Arwic Outland",
|
||||
"x": 118.625,
|
||||
"y": -70.125
|
||||
},
|
||||
{
|
||||
"description": "Ringway to eastern Arwic Outland",
|
||||
"x": 127.375,
|
||||
"y": -67.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Arwic",
|
||||
"x": 125,
|
||||
"y": -83.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southern Arwic Outland",
|
||||
"x": 138.375,
|
||||
"y": -74
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Rakani",
|
||||
"x": 207.625,
|
||||
"y": -89.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Naderu",
|
||||
"x": 199.125,
|
||||
"y": -93.125
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Naderu",
|
||||
"x": 194,
|
||||
"y": -82
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southeast Naderu",
|
||||
"x": 209,
|
||||
"y": -82.875
|
||||
},
|
||||
{
|
||||
"description": "Ringway to western Cobalt Sweeps",
|
||||
"x": 118.875,
|
||||
"y": -99
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northern Cobalt Sweeps",
|
||||
"x": 128.375,
|
||||
"y": -110
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Molwirth",
|
||||
"x": 108,
|
||||
"y": -103.125
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Mad Crone Mountains",
|
||||
"x": 133,
|
||||
"y": -97.125
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Mad Crone Mountains",
|
||||
"x": 136.25,
|
||||
"y": -89.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southeast Mad Crone Mountains",
|
||||
"x": 153.625,
|
||||
"y": -91.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Rithwic",
|
||||
"x": 156.5,
|
||||
"y": -95.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Drudge Citadel",
|
||||
"x": 144.375,
|
||||
"y": -108.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Drudge Citadel",
|
||||
"x": 142.875,
|
||||
"y": -101.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Cavendo",
|
||||
"x": 165.625,
|
||||
"y": -89.5
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southwest Drudge Citadel",
|
||||
"x": 163,
|
||||
"y": -107
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Ankoro",
|
||||
"x": 238.875,
|
||||
"y": -102.875
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Farali",
|
||||
"x": 226,
|
||||
"y": -93.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southeast Farali",
|
||||
"x": 242.125,
|
||||
"y": -87.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to central Farali",
|
||||
"x": 218.875,
|
||||
"y": -89.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Zu",
|
||||
"x": 214.25,
|
||||
"y": -93
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Tou-Tou",
|
||||
"x": 211.625,
|
||||
"y": -113.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Tou-Tou",
|
||||
"x": 203.125,
|
||||
"y": -98.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southern Tou-Tou",
|
||||
"x": 222.125,
|
||||
"y": -105.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to western Kydi",
|
||||
"x": 184.125,
|
||||
"y": -133.875
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northern Kydi",
|
||||
"x": 170.5,
|
||||
"y": -117.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to eastern Kydi",
|
||||
"x": 181.625,
|
||||
"y": -110.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southern Kydi",
|
||||
"x": 183.75,
|
||||
"y": -118.875
|
||||
},
|
||||
{
|
||||
"description": "Ringway to western Prosper",
|
||||
"x": 154.125,
|
||||
"y": -113.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southern Prosper",
|
||||
"x": 127.125,
|
||||
"y": -117
|
||||
},
|
||||
{
|
||||
"description": "Ringway to eastern Prosper",
|
||||
"x": 139.625,
|
||||
"y": -127.5
|
||||
},
|
||||
{
|
||||
"description": "Ringway to city of Shoushi",
|
||||
"x": 153.25,
|
||||
"y": -126.5
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Ariaki",
|
||||
"x": 203.375,
|
||||
"y": -103.5
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Ariaki",
|
||||
"x": 205.5,
|
||||
"y": -115.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to western Ariaki",
|
||||
"x": 188.5,
|
||||
"y": -105.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to city of Ikeras",
|
||||
"x": 191.375,
|
||||
"y": -111.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to city of Hakata",
|
||||
"x": 239.875,
|
||||
"y": -138.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northern Vesayan",
|
||||
"x": 224.75,
|
||||
"y": -114.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to eastern Vesayan",
|
||||
"x": 235.25,
|
||||
"y": -111.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to Vesayan Sanctuary",
|
||||
"x": 245.5,
|
||||
"y": -112.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northern Winterhollows",
|
||||
"x": 82.125,
|
||||
"y": -135.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Winterhollows",
|
||||
"x": 78.625,
|
||||
"y": -127.125
|
||||
},
|
||||
{
|
||||
"description": "Ringway to central Winterhollows",
|
||||
"x": 70.5,
|
||||
"y": -134.125
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Arhovas",
|
||||
"x": 89.625,
|
||||
"y": -128.875
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Lumari",
|
||||
"x": 209,
|
||||
"y": -123
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northern Lumari",
|
||||
"x": 223.125,
|
||||
"y": -127.875
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Shinoko",
|
||||
"x": 198.625,
|
||||
"y": -129
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southeast Lumari",
|
||||
"x": 214.625,
|
||||
"y": -133.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to western Gevoth",
|
||||
"x": 58,
|
||||
"y": -156.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southern Gevoth",
|
||||
"x": 48.375,
|
||||
"y": -135
|
||||
},
|
||||
{
|
||||
"description": "Ringway to eastern Gevoth",
|
||||
"x": 46.75,
|
||||
"y": -140.875
|
||||
},
|
||||
{
|
||||
"description": "Ringway to city of Palisade",
|
||||
"x": 60.375,
|
||||
"y": -139.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to city of Linvak Tukal",
|
||||
"x": 103.75,
|
||||
"y": -140.75
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northern Thusik",
|
||||
"x": 90,
|
||||
"y": -139.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to eastern Thusik",
|
||||
"x": 100.125,
|
||||
"y": -144.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southern Thusik",
|
||||
"x": 99.75,
|
||||
"y": -133.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northern Oriad",
|
||||
"x": 121.75,
|
||||
"y": -153.875
|
||||
},
|
||||
{
|
||||
"description": "Ringway to eastern Oriad",
|
||||
"x": 116.625,
|
||||
"y": -150.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Whitebay",
|
||||
"x": 128.875,
|
||||
"y": -144.5
|
||||
},
|
||||
{
|
||||
"description": "Ringway to western Oriad",
|
||||
"x": 117.375,
|
||||
"y": -143.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southwest Nepeth",
|
||||
"x": 78.125,
|
||||
"y": -145.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northeast Nepeth",
|
||||
"x": 80.125,
|
||||
"y": -159.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Nepeth",
|
||||
"x": 87.75,
|
||||
"y": -151.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Ondekodo",
|
||||
"x": 87.375,
|
||||
"y": -147.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Keidelur",
|
||||
"x": 94.25,
|
||||
"y": -149.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to central Stoneshadow()",
|
||||
"x": 109.125,
|
||||
"y": -151.5
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southwest Stoneshadow",
|
||||
"x": 99.75,
|
||||
"y": -155.375
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Stoneshadow",
|
||||
"x": 92.5,
|
||||
"y": -161.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to northwest Malthabbor",
|
||||
"x": 78.75,
|
||||
"y": -163.125
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southeast Plateau",
|
||||
"x": 77.75,
|
||||
"y": -168.625
|
||||
},
|
||||
{
|
||||
"description": "Ringway to southeast Malthabbor",
|
||||
"x": 72.625,
|
||||
"y": -177.125
|
||||
},
|
||||
{
|
||||
"description": "Ringway to eastern Malthabbor",
|
||||
"x": 69.25,
|
||||
"y": -168.25
|
||||
},
|
||||
{
|
||||
"description": "Ringway to town of Gurokora",
|
||||
"x": 66,
|
||||
"y": -179.375
|
||||
}
|
||||
]
|
||||
112
server/data/town.json
Normal file
112
server/data/town.json
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
[
|
||||
{
|
||||
"description": "Town of Kehan",
|
||||
"x": 141.875,
|
||||
"y": -73.625
|
||||
},
|
||||
{
|
||||
"description": "Town of Millstone",
|
||||
"x": 102.375,
|
||||
"y": -79.625
|
||||
},
|
||||
{
|
||||
"description": "Town of Arwic",
|
||||
"x": 119.625,
|
||||
"y": -71.75
|
||||
},
|
||||
{
|
||||
"description": "Town of Rakani",
|
||||
"x": 198.5,
|
||||
"y": -91.625
|
||||
},
|
||||
{
|
||||
"description": "Town of Molwirth",
|
||||
"x": 128.375,
|
||||
"y": -109.5
|
||||
},
|
||||
{
|
||||
"description": "Town of Rithwic",
|
||||
"x": 132,
|
||||
"y": -97
|
||||
},
|
||||
{
|
||||
"description": "Town of Cavendo",
|
||||
"x": 164.25,
|
||||
"y": -106.75
|
||||
},
|
||||
{
|
||||
"description": "Town of Ankoro",
|
||||
"x": 219.125,
|
||||
"y": -90.5
|
||||
},
|
||||
{
|
||||
"description": "Town of Zu",
|
||||
"x": 221.375,
|
||||
"y": -106.875
|
||||
},
|
||||
{
|
||||
"description": "Town of Mayoi",
|
||||
"x": 185,
|
||||
"y": -134
|
||||
},
|
||||
{
|
||||
"description": "City of Shoushi",
|
||||
"x": 155.5,
|
||||
"y": -115.375
|
||||
},
|
||||
{
|
||||
"description": "Town of Arhovas",
|
||||
"x": 70.375,
|
||||
"y": -133.625
|
||||
},
|
||||
{
|
||||
"description": "Town of Shinoko",
|
||||
"x": 216,
|
||||
"y": -133.25
|
||||
},
|
||||
{
|
||||
"description": "Town of Whitebay",
|
||||
"x": 121.625,
|
||||
"y": -154.5
|
||||
},
|
||||
{
|
||||
"description": "Town of Ondekodo",
|
||||
"x": 87.625,
|
||||
"y": -152.625
|
||||
},
|
||||
{
|
||||
"description": "Town of Keidelur",
|
||||
"x": 109.125,
|
||||
"y": -150.625
|
||||
},
|
||||
{
|
||||
"description": "Town of Gurokora",
|
||||
"x": 77.75,
|
||||
"y": -163.5
|
||||
},
|
||||
{
|
||||
"description": "Caerlin Skyport",
|
||||
"x": 172,
|
||||
"y": -167
|
||||
},
|
||||
{
|
||||
"description": "Yaosenji",
|
||||
"x": 173.25,
|
||||
"y": -172.5
|
||||
},
|
||||
{
|
||||
"description": "Vothardun",
|
||||
"x": 202.125,
|
||||
"y": -170.125
|
||||
},
|
||||
{
|
||||
"description": "Greenstone",
|
||||
"x": 191.75,
|
||||
"y": -191.625
|
||||
},
|
||||
{
|
||||
"description": "The Aerie",
|
||||
"x": 185.375,
|
||||
"y": -176.875
|
||||
}
|
||||
]
|
||||
107
server/data/vault.json
Normal file
107
server/data/vault.json
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
[
|
||||
{
|
||||
"description": "Lost Wish Vault (Vault Campaign, Level 6)",
|
||||
"x": 156.25,
|
||||
"y": -64.75
|
||||
},
|
||||
{
|
||||
"description": "Esper Vault (Vault Campaign, Level 6)",
|
||||
"x": 98.625,
|
||||
"y": -93.625
|
||||
},
|
||||
{
|
||||
"description": "Arwic Vault (Vault Campaign, Level 6)",
|
||||
"x": 133,
|
||||
"y": -82.5
|
||||
},
|
||||
{
|
||||
"description": "Naderu Vault (Vault Campaign, Level 30)",
|
||||
"x": 205.375,
|
||||
"y": -92.625
|
||||
},
|
||||
{
|
||||
"description": "Cobalt Vault (Vault Campaign, Level 12)",
|
||||
"x": 119.75,
|
||||
"y": -109.875
|
||||
},
|
||||
{
|
||||
"description": "Mad Crone Vault (Vault Campaign, Level 12)",
|
||||
"x": 149.5,
|
||||
"y": -91.5
|
||||
},
|
||||
{
|
||||
"description": "Drudge Citadel Vault (Vault Campaign, Level 19)",
|
||||
"x": 156.875,
|
||||
"y": -104.25
|
||||
},
|
||||
{
|
||||
"description": "Farali Vault (Vault Campaign, Level 34)",
|
||||
"x": 222,
|
||||
"y": -94
|
||||
},
|
||||
{
|
||||
"description": "Tou-Tou Vault (Vault Campaign, Level 30)",
|
||||
"x": 209.25,
|
||||
"y": -107.25
|
||||
},
|
||||
{
|
||||
"description": "Kydi Vault (Vault Campaign, Level 19)",
|
||||
"x": 174.5,
|
||||
"y": -106.875
|
||||
},
|
||||
{
|
||||
"description": "Prosper Vault (Vault Campaign, Level 21)",
|
||||
"x": 142.625,
|
||||
"y": -125.5
|
||||
},
|
||||
{
|
||||
"description": "Ariaki Vault (Vault Campaign, Level 24)",
|
||||
"x": 196.625,
|
||||
"y": -105.625
|
||||
},
|
||||
{
|
||||
"description": "Vesayan Vault (Vault Campaign, Level 35)",
|
||||
"x": 240,
|
||||
"y": -138
|
||||
},
|
||||
{
|
||||
"description": "Winterhollows Vault (Vault Campaign, Level 46)",
|
||||
"x": 81.25,
|
||||
"y": -133.5
|
||||
},
|
||||
{
|
||||
"description": "Lumari Vault (Vault Campaign, Level 27)",
|
||||
"x": 206.375,
|
||||
"y": -122.5
|
||||
},
|
||||
{
|
||||
"description": "Gevoth Vault (Vault Campaign, Level 48)",
|
||||
"x": 62.5,
|
||||
"y": -148.25
|
||||
},
|
||||
{
|
||||
"description": "Thusik Vault (Vault Campaign, Level 46)",
|
||||
"x": 93.5,
|
||||
"y": -143.75
|
||||
},
|
||||
{
|
||||
"description": "Oriad Vault (Vault Campaign, Leve 42)",
|
||||
"x": 118,
|
||||
"y": -149
|
||||
},
|
||||
{
|
||||
"description": "Nepeth Vault (Vault Campaign, Level 45)",
|
||||
"x": 81.5,
|
||||
"y": -143.75
|
||||
},
|
||||
{
|
||||
"description": "Stoneshadow Vault (Vault Campaign, Level 44)",
|
||||
"x": 100.5,
|
||||
"y": -160.5
|
||||
},
|
||||
{
|
||||
"description": "Malthabbor Vault (Vault Campaign, Level 47)",
|
||||
"x": 75.5,
|
||||
"y": -166.375
|
||||
}
|
||||
]
|
||||
101
server/db.js
Normal file
101
server/db.js
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
const mysql = require("mysql2");
|
||||
const utilsMath = require("./utils/utilsMath.js");
|
||||
|
||||
const dbConfig = {
|
||||
host: "localhost",
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: "ac2re_world",
|
||||
};
|
||||
|
||||
const con = mysql.createConnection(dbConfig);
|
||||
|
||||
con.connect((err) => {
|
||||
if (err) {
|
||||
console.error("Erreur de connexion à la base de données:", err);
|
||||
process.exit(1);
|
||||
}
|
||||
console.log("Connected to Mysql");
|
||||
});
|
||||
|
||||
//Get player position in Database
|
||||
async function getCharacterPos() {
|
||||
try {
|
||||
const [result, fields] = await con.promise().query(`
|
||||
SELECT woss.literalValue, wosp.landblockId, wosp.posX, wosp.posY
|
||||
FROM characters c
|
||||
INNER JOIN world_obj_stat_poss wosp ON c.objectId = wosp.objectId
|
||||
INNER JOIN world_obj_stat_strinfo woss ON c.objectId = woss.objectId
|
||||
`);
|
||||
|
||||
// Tableau pour stocker les données converties
|
||||
let characterPositions = [];
|
||||
|
||||
// Manipuler les données résultantes
|
||||
for (let row of result) {
|
||||
// Convertir les coordonnées de jeu en coordonnées Leaflet
|
||||
let leafletLoc = utilsMath.convertInGameLoctoLeafletLoc(
|
||||
row.landblockId,
|
||||
row.posX,
|
||||
row.posY
|
||||
);
|
||||
|
||||
// Ajouter les données converties au tableau
|
||||
characterPositions.push({
|
||||
literalValue: row.literalValue,
|
||||
locx: leafletLoc.locx,
|
||||
locy: leafletLoc.locy,
|
||||
});
|
||||
}
|
||||
|
||||
return characterPositions;
|
||||
} catch (err) {
|
||||
console.error(
|
||||
"Erreur lors de la récupération des positions des personnages:",
|
||||
err
|
||||
);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
//Get npc position in Database
|
||||
async function getNpcPos() {
|
||||
try {
|
||||
const [result, fields] = await con.promise().query(`
|
||||
SELECT entityDid, landblockId, posX, posY, objectName
|
||||
FROM ac2re_map.map_npc;
|
||||
`);
|
||||
|
||||
// Tableau pour stocker les données converties
|
||||
let npcPosition = [];
|
||||
|
||||
// Manipuler les données résultantes
|
||||
for (let row of result) {
|
||||
// Convertir les coordonnées de jeu en coordonnées Leaflet
|
||||
let leafletLoc = utilsMath.convertInGameLoctoLeafletLoc(
|
||||
row.landblockId,
|
||||
row.posX,
|
||||
row.posY
|
||||
);
|
||||
|
||||
// Ajouter les données converties au tableau
|
||||
npcPosition.push({
|
||||
entityid: row.entityDid,
|
||||
literalValue: row.objectName,
|
||||
locx: leafletLoc.locx,
|
||||
locy: leafletLoc.locy,
|
||||
});
|
||||
}
|
||||
|
||||
return npcPosition;
|
||||
} catch (err) {
|
||||
console.error(
|
||||
"Erreur lors de la récupération des positions des NPC:",
|
||||
err
|
||||
);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = { getCharacterPos, getNpcPos };
|
||||
10
server/jsconfig.json
Normal file
10
server/jsconfig.json
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"module": "CommonJS",
|
||||
"target": "ES6"
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"**/node_modules/*"
|
||||
]
|
||||
}
|
||||
10
server/modules/poi.js
Normal file
10
server/modules/poi.js
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
function initPoImarker(name) {
|
||||
let jsonName = path.join(__dirname, '..', 'data', `${name}.json`);
|
||||
const result = JSON.parse(fs.readFileSync(jsonName));
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = { initPoImarker };
|
||||
802
server/package-lock.json
generated
Normal file
802
server/package-lock.json
generated
Normal file
|
|
@ -0,0 +1,802 @@
|
|||
{
|
||||
"name": "server",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "server",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"dotenv": "^16.4.5",
|
||||
"express": "^4.19.2",
|
||||
"mysql2": "^3.9.7"
|
||||
}
|
||||
},
|
||||
"node_modules/accepts": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
||||
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
|
||||
"dependencies": {
|
||||
"mime-types": "~2.1.34",
|
||||
"negotiator": "0.6.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/array-flatten": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
|
||||
},
|
||||
"node_modules/body-parser": {
|
||||
"version": "1.20.2",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
|
||||
"integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
|
||||
"dependencies": {
|
||||
"bytes": "3.1.2",
|
||||
"content-type": "~1.0.5",
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"destroy": "1.2.0",
|
||||
"http-errors": "2.0.0",
|
||||
"iconv-lite": "0.4.24",
|
||||
"on-finished": "2.4.1",
|
||||
"qs": "6.11.0",
|
||||
"raw-body": "2.5.2",
|
||||
"type-is": "~1.6.18",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8",
|
||||
"npm": "1.2.8000 || >= 1.4.16"
|
||||
}
|
||||
},
|
||||
"node_modules/bytes": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
|
||||
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/call-bind": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
|
||||
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
|
||||
"dependencies": {
|
||||
"es-define-property": "^1.0.0",
|
||||
"es-errors": "^1.3.0",
|
||||
"function-bind": "^1.1.2",
|
||||
"get-intrinsic": "^1.2.4",
|
||||
"set-function-length": "^1.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/content-disposition": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
||||
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
|
||||
"dependencies": {
|
||||
"safe-buffer": "5.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/content-type": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
|
||||
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
|
||||
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/define-data-property": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
|
||||
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
|
||||
"dependencies": {
|
||||
"es-define-property": "^1.0.0",
|
||||
"es-errors": "^1.3.0",
|
||||
"gopd": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/denque": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
|
||||
"integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
|
||||
"engines": {
|
||||
"node": ">=0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/depd": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/destroy": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
|
||||
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
|
||||
"engines": {
|
||||
"node": ">= 0.8",
|
||||
"npm": "1.2.8000 || >= 1.4.16"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "16.4.5",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
|
||||
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://dotenvx.com"
|
||||
}
|
||||
},
|
||||
"node_modules/ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
||||
},
|
||||
"node_modules/encodeurl": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/es-define-property": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
|
||||
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
|
||||
"dependencies": {
|
||||
"get-intrinsic": "^1.2.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/es-errors": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
||||
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
"node_modules/etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/express": {
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
|
||||
"integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
|
||||
"dependencies": {
|
||||
"accepts": "~1.3.8",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.20.2",
|
||||
"content-disposition": "0.5.4",
|
||||
"content-type": "~1.0.4",
|
||||
"cookie": "0.6.0",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"finalhandler": "1.2.0",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "2.0.0",
|
||||
"merge-descriptors": "1.0.1",
|
||||
"methods": "~1.1.2",
|
||||
"on-finished": "2.4.1",
|
||||
"parseurl": "~1.3.3",
|
||||
"path-to-regexp": "0.1.7",
|
||||
"proxy-addr": "~2.0.7",
|
||||
"qs": "6.11.0",
|
||||
"range-parser": "~1.2.1",
|
||||
"safe-buffer": "5.2.1",
|
||||
"send": "0.18.0",
|
||||
"serve-static": "1.15.0",
|
||||
"setprototypeof": "1.2.0",
|
||||
"statuses": "2.0.1",
|
||||
"type-is": "~1.6.18",
|
||||
"utils-merge": "1.0.1",
|
||||
"vary": "~1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/finalhandler": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
|
||||
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
|
||||
"dependencies": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "2.4.1",
|
||||
"parseurl": "~1.3.3",
|
||||
"statuses": "2.0.1",
|
||||
"unpipe": "~1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/forwarded": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
||||
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/fresh": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/generate-function": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
|
||||
"integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
|
||||
"dependencies": {
|
||||
"is-property": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/get-intrinsic": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
|
||||
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0",
|
||||
"function-bind": "^1.1.2",
|
||||
"has-proto": "^1.0.1",
|
||||
"has-symbols": "^1.0.3",
|
||||
"hasown": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/gopd": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
||||
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
|
||||
"dependencies": {
|
||||
"get-intrinsic": "^1.1.3"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has-property-descriptors": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
|
||||
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
|
||||
"dependencies": {
|
||||
"es-define-property": "^1.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has-proto": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
|
||||
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has-symbols": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
|
||||
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/hasown": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
||||
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/http-errors": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
||||
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
|
||||
"dependencies": {
|
||||
"depd": "2.0.0",
|
||||
"inherits": "2.0.4",
|
||||
"setprototypeof": "1.2.0",
|
||||
"statuses": "2.0.1",
|
||||
"toidentifier": "1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
||||
"dependencies": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/ipaddr.js": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
||||
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
|
||||
"engines": {
|
||||
"node": ">= 0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/is-property": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
|
||||
"integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
|
||||
},
|
||||
"node_modules/long": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
|
||||
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "8.0.5",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz",
|
||||
"integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==",
|
||||
"engines": {
|
||||
"node": ">=16.14"
|
||||
}
|
||||
},
|
||||
"node_modules/media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
|
||||
},
|
||||
"node_modules/methods": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
|
||||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
|
||||
"bin": {
|
||||
"mime": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-types": {
|
||||
"version": "2.1.35",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
||||
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
||||
"dependencies": {
|
||||
"mime-db": "1.52.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
||||
},
|
||||
"node_modules/mysql2": {
|
||||
"version": "3.9.7",
|
||||
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz",
|
||||
"integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==",
|
||||
"dependencies": {
|
||||
"denque": "^2.1.0",
|
||||
"generate-function": "^2.3.1",
|
||||
"iconv-lite": "^0.6.3",
|
||||
"long": "^5.2.1",
|
||||
"lru-cache": "^8.0.0",
|
||||
"named-placeholders": "^1.1.3",
|
||||
"seq-queue": "^0.0.5",
|
||||
"sqlstring": "^2.3.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mysql2/node_modules/iconv-lite": {
|
||||
"version": "0.6.3",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
|
||||
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
|
||||
"dependencies": {
|
||||
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/named-placeholders": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz",
|
||||
"integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
|
||||
"dependencies": {
|
||||
"lru-cache": "^7.14.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/named-placeholders/node_modules/lru-cache": {
|
||||
"version": "7.18.3",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
|
||||
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/negotiator": {
|
||||
"version": "0.6.3",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
|
||||
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.13.1",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
|
||||
"integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/on-finished": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
||||
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
|
||||
"dependencies": {
|
||||
"ee-first": "1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/parseurl": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
||||
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
||||
},
|
||||
"node_modules/proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
||||
"dependencies": {
|
||||
"forwarded": "0.2.0",
|
||||
"ipaddr.js": "1.9.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.11.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
|
||||
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
|
||||
"dependencies": {
|
||||
"side-channel": "^1.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/raw-body": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
|
||||
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
|
||||
"dependencies": {
|
||||
"bytes": "3.1.2",
|
||||
"http-errors": "2.0.0",
|
||||
"iconv-lite": "0.4.24",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"node_modules/send": {
|
||||
"version": "0.18.0",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
|
||||
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
|
||||
"dependencies": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"destroy": "1.2.0",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "2.0.0",
|
||||
"mime": "1.6.0",
|
||||
"ms": "2.1.3",
|
||||
"on-finished": "2.4.1",
|
||||
"range-parser": "~1.2.1",
|
||||
"statuses": "2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/send/node_modules/ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||
},
|
||||
"node_modules/seq-queue": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
|
||||
"integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
|
||||
},
|
||||
"node_modules/serve-static": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
|
||||
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
|
||||
"dependencies": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.3",
|
||||
"send": "0.18.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/set-function-length": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
|
||||
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
|
||||
"dependencies": {
|
||||
"define-data-property": "^1.1.4",
|
||||
"es-errors": "^1.3.0",
|
||||
"function-bind": "^1.1.2",
|
||||
"get-intrinsic": "^1.2.4",
|
||||
"gopd": "^1.0.1",
|
||||
"has-property-descriptors": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/setprototypeof": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
||||
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
|
||||
},
|
||||
"node_modules/side-channel": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
|
||||
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
|
||||
"dependencies": {
|
||||
"call-bind": "^1.0.7",
|
||||
"es-errors": "^1.3.0",
|
||||
"get-intrinsic": "^1.2.4",
|
||||
"object-inspect": "^1.13.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/sqlstring": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
|
||||
"integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/statuses": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
|
||||
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/toidentifier": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
|
||||
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/type-is": {
|
||||
"version": "1.6.18",
|
||||
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
|
||||
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
|
||||
"dependencies": {
|
||||
"media-typer": "0.3.0",
|
||||
"mime-types": "~2.1.24"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
server/package.json
Normal file
17
server/package.json
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"name": "server",
|
||||
"version": "1.0.0",
|
||||
"description": "web server expressjs",
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"start": "node app.js",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "Troispoils",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"dotenv": "^16.4.5",
|
||||
"express": "^4.19.2",
|
||||
"mysql2": "^3.9.7"
|
||||
}
|
||||
}
|
||||
4
server/process.env
Normal file
4
server/process.env
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
DB_HOST=localhost
|
||||
DB_USER=root
|
||||
DB_PASSWORD=CHANGEIT
|
||||
DB_DATABASE=ac2re_world
|
||||
24
server/utils/utilsMath.js
Normal file
24
server/utils/utilsMath.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
const blockSize = 16;
|
||||
|
||||
function decimalToHex(decimalValue) {
|
||||
// Convertit la valeur décimale en hexadécimal
|
||||
let hexString = decimalValue.toString(16).toUpperCase();
|
||||
// Divise la chaîne hexadécimale en deux parties
|
||||
let firstByte = "0x" + hexString.slice(0, -2);
|
||||
let secondByte = "0x" + hexString.slice(-2);
|
||||
return [firstByte, secondByte];
|
||||
}
|
||||
|
||||
function convertInGameLoctoLeafletLoc(landblockId, x, y) {
|
||||
let [lbx, lby] = decimalToHex(landblockId);
|
||||
lbx = lbx * blockSize;
|
||||
lby = lby * blockSize;
|
||||
let locx = lbx + x / 10;
|
||||
let locy = 4080 - (lby + y / 10) - 1;
|
||||
locx = locx / 16;
|
||||
locy = (locy / 16) * -1;
|
||||
// Renvoyer les coordonnées converties
|
||||
return { locx, locy };
|
||||
}
|
||||
|
||||
module.exports = { convertInGameLoctoLeafletLoc };
|
||||
Loading…
Add table
Add a link
Reference in a new issue