diff --git a/package-lock.json b/package-lock.json
index 2c7a4d5..2b199b2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1225,8 +1225,7 @@
"node_modules/fs": {
"version": "0.0.1-security",
"resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
- "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==",
- "license": "ISC"
+ "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
},
"node_modules/fsevents": {
"version": "2.3.3",
diff --git a/public/index.html b/public/index.html
index 11cf9a5..eaa06bc 100644
--- a/public/index.html
+++ b/public/index.html
@@ -2,29 +2,28 @@
-
Грязные деньги: ${character.dirtymoney} ₽
-
Уровень: ${character.level}
-
Сила: ${character.force}
-
Интеллект: ${character.intelligence}
-
Устойчивость: ${character.resilience}
-
Выносливость: ${character.endurance}
+
Грязные деньги: ${character.dirtymoney} Ð
+
Уровень: ${character.level}
+
+
+
Сила
+
${character.force}
+
+
+
Интеллект
+
${character.intelligence}
+
+
+
Стойкость
+
${character.resilience}
+
+
+
Выносливость
+
${character.endurance}
+
+
`).join('');
diff --git a/server.bat b/server.bat
index bce3d3b..c090ad7 100644
--- a/server.bat
+++ b/server.bat
@@ -1,3 +1,2 @@
nodemon --ignore json/ .\server.js
-nodemon --ignore json/ .\pages.js
pause
\ No newline at end of file
diff --git a/server.js b/server.js
index e0fe018..561d3f7 100644
--- a/server.js
+++ b/server.js
@@ -64,6 +64,129 @@ app.get('/player/:id', async (req, res) => {
}
});
+app.get('/scoreboard', (req, res) => {
+ res.sendFile(global.path.join(__dirname, 'public', 'scoreboard.html'));
+});
+
+app.get('/users', async (req, res) => {
+ const { sortBy } = req.query; // Sorting option passed as a query parameter
+
+ const sortOptions = {
+ money: [sequelize.literal('money'), 'DESC'],
+ level: [sequelize.literal('level'), 'DESC']
+ };
+
+ const topUser = await UserModel.findAll({
+ attributes: ['username', 'money', 'level', 'status'],
+ order: [sortOptions[sortBy] || sortOptions['money']], // Default sort by money
+ limit: 15
+ });
+
+ res.json(topUser.map(player => ({
+ username: player.username,
+ money: utils.spaces(player.money),
+ level: player.level,
+ status: player.status
+ })));
+});
+
+
+app.get('/characters', async (req, res) => {
+ const { sortBy } = req.query; // Use query parameters to specify sorting
+
+ const sortOptions = {
+ dirtymoney: [sequelize.literal('dirtymoney'), 'DESC'],
+ level: [sequelize.literal('level'), 'DESC'],
+ force: [sequelize.literal('force'), 'DESC'],
+ intelligence: [sequelize.literal('intelligence'), 'DESC'],
+ resilience: [sequelize.literal('resilience'), 'DESC'],
+ endurance: [sequelize.literal('endurance'), 'DESC']
+ };
+
+ const topCharacter = await CharacterModel.findAll({
+ attributes: ['username', 'dirtymoney', 'level', 'force', 'intelligence', 'resilience', 'endurance'],
+ order: [sortOptions[sortBy] || sortOptions['dirtymoney']], // Default sort by dirtymoney
+ limit: 15
+ });
+
+ res.json(topCharacter.map(character => ({
+ username: character.username,
+ dirtymoney: character.dirtymoney,
+ level: character.level,
+ force: character.force,
+ intelligence: character.intelligence,
+ resilience: character.resilience,
+ endurance: character.endurance
+ })));
+});
+
+
+app.get('/enterprises', async (req, res) => {
+ const enterprises = await EnterpriseModel.findAll({
+ attributes: ['name', 'resourceType', 'level', 'efficiency', 'warehouseCapacity', 'currentResources', 'playerId']
+ });
+
+ const resourceIcons = {
+ wood: '🌳',
+ coal: '⛏️',
+ oil: '🛢️',
+ metall: '⚒️',
+ gold: '💰',
+ diamond: '💎'
+ };
+
+ const enterprisesData = await Promise.all(enterprises.map(async enterprise => {
+ const player = await UserModel.findOne({
+ attributes: ['name'],
+ where: { telegram_id: enterprise.playerId }
+ });
+
+ return {
+ name: enterprise.name,
+ resourceType: enterprise.resourceType,
+ level: enterprise.level,
+ efficiency: enterprise.efficiency,
+ warehouseCapacity: enterprise.warehouseCapacity,
+ currentResources: enterprise.currentResources,
+ owner: player ? player.name : 'Unknown',
+ icon: resourceIcons[enterprise.resourceType] || '❓'
+ };
+ }));
+
+ res.json(enterprisesData);
+});
+
+app.get('/businesses', async (req, res) => {
+ const { sortBy } = req.query; // Sorting option passed as a query parameter
+
+ const sortOptions = {
+ balance: [sequelize.literal('balance'), 'DESC'],
+ usersCount: [sequelize.literal('ARRAY_LENGTH(users, 1)'), 'DESC']
+ };
+
+ const businesses = await BusinessModel.findAll({
+ attributes: ['name', 'balance', 'users', 'owner'],
+ order: [sortOptions[sortBy] || sortOptions['balance']], // Default sort by balance
+ limit: 15
+ });
+
+ const businessesData = await Promise.all(businesses.map(async business => {
+ const owner = await UserModel.findOne({
+ attributes: ['username'],
+ where: { telegram_id: business.owner }
+ });
+
+ return {
+ name: business.name,
+ balance: business.balance,
+ usersCount: business.users.length,
+ owner: owner ? owner.username : 'Unknown'
+ };
+ }));
+
+ res.json(businessesData);
+});
+
// Запуск сервера
const PORT = process.env.PORT || 3001;