Prepare for Enterprise update

This commit is contained in:
Degradin 2024-12-21 09:34:53 +03:00
parent 906fffd2ca
commit 6b5ea57c89
57 changed files with 1025 additions and 2496 deletions

226
bot.js
View File

@ -20,10 +20,14 @@ const {
WorldModel, WorldModel,
JobModel, JobModel,
PropertyModel, PropertyModel,
AFKPropertyModel,
BusinessModel, BusinessModel,
ReportModel, ReportModel,
BlockModel, BlockModel,
PromocodeModel, PromocodeModel,
EnterpriseModel,
WarehouseModel,
SaleModel,
SkillsModel, SkillsModel,
mainChat, mainChat,
adminList, adminList,
@ -99,8 +103,6 @@ const {
const { Op } = require('sequelize'); const { Op } = require('sequelize');
const fs = require('fs'); const fs = require('fs');
const { createCanvas, loadImage } = require('canvas'); const { createCanvas, loadImage } = require('canvas');
const shortid = require('shortid');
const voucher_codes = require('voucher-code-generator');
const bot = new Telegraf(process.env.BOT_TOKEN) const bot = new Telegraf(process.env.BOT_TOKEN)
const crime = require('./scenes/crime') const crime = require('./scenes/crime')
const pocketsteal = require('./scenes/pocketsteal') const pocketsteal = require('./scenes/pocketsteal')
@ -277,6 +279,7 @@ bot.command('start', async (ctx) => {
.keyboard([ .keyboard([
['😎 Профиль'], // Row1 with 2 buttons ['😎 Профиль'], // Row1 with 2 buttons
['🗄️ Работать', '🌐 Организация', '🎁 Бонус', '🏯 Казино'], // Row2 with 2 buttons ['🗄️ Работать', '🌐 Организация', '🎁 Бонус', '🏯 Казино'], // Row2 with 2 buttons
['🏗️ Предприятия'],
['📦 Контейнеры'], ['📦 Контейнеры'],
['📢 Вакансии', '🔵 Имущество', '📞 Пригласить'] // Row3 with 3 buttons ['📢 Вакансии', '🔵 Имущество', '📞 Пригласить'] // Row3 with 3 buttons
]) ])
@ -430,6 +433,225 @@ bot.action(/{"action": "sueta_*/, async (ctx) => {
user.save() user.save()
property.save() property.save()
}) })
/////////////////////////////////////Enterprise Update 20.12.2024//////////////////////////////////////////////////
bot.hears('🏗️ Предприятия', async (ctx) => {
return await ctx.reply(`
Меню предприятий
У вас: нет предприятий.
Цены:
`, Markup
.inlineKeyboard([
[
{text: 'Мои предприятия', callback_data: `my_enterprises`},
{text: 'Построить', callback_data: `build_enterprise`},
{text: 'Склад', callback_data: `open_warehouse`},
]
])
.resize())
})
bot.action('my_enterprises', async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id)
let enterprises = await EnterpriseModel.findAll({
where: {
playerId: user.telegram_id
}
})
let message = `Ваши предприятия:\n`
enterprises.forEach(enterprise => {
message += `🏭 ${enterprise.name} (Тип: ${enterprise.resourceType}, Уровень: ${enterprise.level}, Производительность: ${enterprise.efficiency} ед/ч, Склад: ${enterprise.warehouseCapacity} ед.)\n`
})
if (enterprises.length === 0) {
message += 'У вас нет предприятий.\n'
}
return await ctx.reply(message)
})
bot.action('build_enterprise', async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id)
let enterprises = await EnterpriseModel.findAll({
where: {
playerId: user.telegram_id
}
})
if (enterprises.length > 0) return await ctx.reply(`У вас уже есть предприятие.`)
let message = `Выберите тип предприятия (цена зависит от ресурса):`
let buttons = []
let types = ['wood', 'coal', 'oil', 'metall', 'gold', 'diamond']
types.forEach(type => {
let price = getResourcePrice(type) // Функция для получения стоимости
buttons.push({text: `${type} (Цена: ${price} монет)`, callback_data: `build_${type}`})
})
return await ctx.reply(message, Markup.inlineKeyboard(buttons).resize())
})
function getResourcePrice(resourceType) {
const prices = {
wood: 100,
coal: 200,
oil: 500,
metall: 1000,
gold: 3000,
diamond: 5000
}
return prices[resourceType] || 0
}
bot.action(/build_(wood|coal|oil|metall|gold|diamond)/, async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id)
let data = ctx.update.callback_query.data
let type = data.split('_')[1]
let price = getResourcePrice(type)
// Проверка, есть ли достаточно денег у пользователя
if (user.balance < price) {
return await ctx.reply(`У вас недостаточно средств для постройки предприятия. Необходимо ${price} монет.`)
}
// Строим предприятие
let enterprise = await EnterpriseModel.create({
name: `${type} mine`,
resourceType: type,
playerId: user.telegram_id,
level: 1,
efficiency: 10,
warehouseCapacity: 100
})
// Снимаем деньги с баланса
await user.update({ balance: user.balance - price })
return await ctx.reply(`Предприятие ${enterprise.name} построено!`)
})
bot.action('upgrade_enterprise', async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id)
let enterprises = await EnterpriseModel.findAll({
where: {
playerId: user.telegram_id
}
})
if (enterprises.length === 0) return await ctx.reply(`У вас нет предприятий для прокачки.`)
let buttons = []
enterprises.forEach(enterprise => {
buttons.push({ text: `Прокачать ${enterprise.name}`, callback_data: `upgrade_${enterprise.id}` })
})
return await ctx.reply(`Выберите предприятие для прокачки:`, Markup.inlineKeyboard(buttons).resize())
})
bot.action(/upgrade_(\d+)/, async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id)
let enterpriseId = ctx.match[1]
let enterprise = await EnterpriseModel.findByPk(enterpriseId)
if (!enterprise) return await ctx.reply(`Предприятие не найдено.`)
let upgradeCost = enterprise.level * 100 // Стоимость улучшения зависит от уровня
if (user.balance < upgradeCost) {
return await ctx.reply(`У вас недостаточно средств для прокачки предприятия. Необходимо ${upgradeCost} монет.`)
}
// Прокачка: повышение уровня и эффективности
await enterprise.update({
level: enterprise.level + 1,
efficiency: enterprise.efficiency + 10
})
// Снимаем деньги с баланса
await user.update({ balance: user.balance - upgradeCost })
return await ctx.reply(`Предприятие ${enterprise.name} успешно прокачано! Уровень: ${enterprise.level}, Производительность: ${enterprise.efficiency} ед/ч.`)
})
bot.action('sell_resources', async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id)
let enterprises = await EnterpriseModel.findAll({
where: {
playerId: user.telegram_id
}
})
if (enterprises.length === 0) return await ctx.reply(`У вас нет предприятий для продажи ресурсов.`)
let buttons = []
enterprises.forEach(enterprise => {
buttons.push({ text: `Продать ресурсы с ${enterprise.name}`, callback_data: `sell_${enterprise.id}` })
})
return await ctx.reply(`Выберите предприятие для продажи ресурсов:`, Markup.inlineKeyboard(buttons).resize())
})
bot.action(/sell_(\d+)/, async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id)
let enterpriseId = ctx.match[1]
let enterprise = await EnterpriseModel.findByPk(enterpriseId)
if (!enterprise) return await ctx.reply(`Предприятие не найдено.`)
// Логика продажи ресурсов с предприятия
const resourceQuantity = await ResourceModel.findOne({
where: { playerId: user.telegram_id, type: enterprise.resourceType }
})
if (!resourceQuantity || resourceQuantity.quantity <= 0) {
return await ctx.reply(`У вас нет ресурсов для продажи на предприятии ${enterprise.name}.`)
}
const salePrice = getResourcePrice(enterprise.resourceType) // Цена за единицу ресурса
const totalSale = salePrice * resourceQuantity.quantity
// Обновляем количество ресурсов
await ResourceModel.update(
{ quantity: 0 }, // Все ресурсы продаются
{ where: { playerId: user.telegram_id, type: enterprise.resourceType } }
)
// Добавляем деньги пользователю
await user.update({ balance: user.balance + totalSale })
return await ctx.reply(`Вы продали все ресурсы с ${enterprise.name} за ${totalSale} монет.`)
})
bot.action('open_warehouse', async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id)
let warehouse = await WarehouseModel.findOne({ where: { playerId: user.telegram_id } })
if (warehouse) return await ctx.reply(`У вас уже есть склад.`)
let newWarehouse = await WarehouseModel.create({
playerId: user.telegram_id,
capacity: 500 // Начальная ёмкость склада
})
return await ctx.reply(`Вы открыли новый склад!`)
})
bot.action('hire_truck', async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id)
let warehouse = await WarehouseModel.findOne({ where: { playerId: user.telegram_id } })
if (!warehouse) return await ctx.reply(`У вас нет склада для найма грузовиков.`)
// Логика найма грузовика
let truck = await TruckModel.create({
warehouseId: warehouse.id,
capacity: 10, // Начальная вместимость
efficiency: 1 // Начальная эффективность
})
return await ctx.reply(`Вы наняли грузовик для транспортировки ресурсов!`)
})
/////////////////////////////////////Enterprise Update end//////////////////////////////////////////////////
/////////////////////////////////////Admin Commands////////////////////////////////////////////////// /////////////////////////////////////Admin Commands//////////////////////////////////////////////////

View File

@ -1,10 +1,10 @@
const { const {
UserModel, UserModel,
PromocodeModel PromocodeModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
generateVoucher generateVoucher
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -5,7 +5,7 @@ const bot = new Telegraf(process.env.BOT_TOKEN)
const { const {
UserModel, UserModel,
BlockModel BlockModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -2,10 +2,10 @@ const voucher_codes = require('voucher-code-generator');
const { const {
UserModel, UserModel,
PromocodeModel PromocodeModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
generateVoucher generateVoucher
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -5,7 +5,7 @@ const bot = new Telegraf(process.env.BOT_TOKEN)
const { const {
UserModel, UserModel,
ReportModel ReportModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -2,7 +2,7 @@ const {
UserModel, UserModel,
WorldModel, WorldModel,
BusinessModel BusinessModel
} = require('../config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
rand, rand,
setCooldown setCooldown

View File

@ -3,10 +3,10 @@ const {
simplecars, simplecars,
UserModel, UserModel,
PropertyModel PropertyModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces spaces
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let data = ctx.update.callback_query.data; let data = ctx.update.callback_query.data;

View File

@ -1,6 +1,6 @@
const { const {
UserModel UserModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -2,13 +2,13 @@ const {
slots, slots,
UserModel, UserModel,
WorldModel WorldModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
getSlot, getSlot,
giveExp, giveExp,
setCooldown setCooldown
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let data = ctx.update.callback_query.data; let data = ctx.update.callback_query.data;

View File

@ -3,7 +3,7 @@ const {
} = require('telegraf') } = require('telegraf')
const { const {
UserModel UserModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -27,7 +27,7 @@ const {
adminList, adminList,
expToUp, expToUp,
topSym topSym
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
spacesWithMarkdown, spacesWithMarkdown,
@ -43,7 +43,7 @@ const {
setCooldown, setCooldown,
weaponShopUpdate, weaponShopUpdate,
stats stats
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
// Получаем контекст canvas // Получаем контекст canvas

View File

@ -2,7 +2,7 @@ const {
UserModel, UserModel,
PropertyModel, PropertyModel,
expToUp expToUp
} = require('../config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spacesWithMarkdown, spacesWithMarkdown,
escape escape

View File

@ -2,7 +2,7 @@ const {
UserModel, UserModel,
PropertyModel, PropertyModel,
expToUp expToUp
} = require('../config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spacesWithMarkdown, spacesWithMarkdown,
escape escape

View File

@ -20,7 +20,7 @@ const {
adminList, adminList,
expToUp, expToUp,
topSym topSym
} = require('../config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
spacesWithMarkdown, spacesWithMarkdown,

View File

@ -1,7 +1,7 @@
const { const {
UserModel, UserModel,
JobModel JobModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let data = ctx.update.callback_query.data; let data = ctx.update.callback_query.data;

View File

@ -2,11 +2,11 @@ const {
UserModel, UserModel,
WorldModel, WorldModel,
JobModel JobModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
giveExp, giveExp,
setCooldown setCooldown
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id); let user = await UserModel.findByPk(ctx.from.id);

View File

@ -6,7 +6,7 @@ const bot = new Telegraf(process.env.BOT_TOKEN)
const { const {
UserModel, UserModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
ctx.args = ctx.update.message.text.split(' ') ctx.args = ctx.update.message.text.split(' ')

View File

@ -3,7 +3,7 @@ const { Op } = require('sequelize');
const { const {
UserModel, UserModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let data = ctx.update.callback_query.data; let data = ctx.update.callback_query.data;

View File

@ -6,7 +6,7 @@ const bot = new Telegraf(process.env.BOT_TOKEN)
const { const {
UserModel, UserModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -5,7 +5,7 @@ const bot = new Telegraf(process.env.BOT_TOKEN)
const { const {
UserModel, UserModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let data = ctx.update.callback_query.data; let data = ctx.update.callback_query.data;

View File

@ -2,7 +2,7 @@ const {
UserModel, UserModel,
WorldModel, WorldModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
ctx.args = ctx.update.message.text.split(' ') ctx.args = ctx.update.message.text.split(' ')

View File

@ -5,7 +5,7 @@ const bot = new Telegraf(process.env.BOT_TOKEN)
const { const {
UserModel, UserModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
if (!ctx.args[1]) return ctx.reply(`Не указан аргумент.`) if (!ctx.args[1]) return ctx.reply(`Не указан аргумент.`)

View File

@ -2,7 +2,7 @@ const {
UserModel, UserModel,
WorldModel, WorldModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -4,11 +4,11 @@ const {
const { const {
UserModel, UserModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
escape escape
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -6,12 +6,12 @@ const {
UserModel, UserModel,
WorldModel, WorldModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
giveExp, giveExp,
rand rand
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = null let user = null

View File

@ -1,7 +1,7 @@
const { const {
UserModel, UserModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
ctx.args = ctx.update.message.text.split(' ') ctx.args = ctx.update.message.text.split(' ')

View File

@ -1,12 +1,12 @@
const { const {
UserModel, UserModel,
BusinessModel BusinessModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
escape, escape,
setCooldown setCooldown
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -5,7 +5,7 @@ const bot = new Telegraf(process.env.BOT_TOKEN)
const { const {
UserModel, UserModel,
WorldModel WorldModel
} = require('../config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
ctx.args = ctx.update.message.text.split(' ') ctx.args = ctx.update.message.text.split(' ')

View File

@ -2,7 +2,7 @@ const {
UserModel, UserModel,
PropertyModel, PropertyModel,
expToUp expToUp
} = require('../config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spacesWithMarkdown, spacesWithMarkdown,
escape escape

View File

@ -6,7 +6,7 @@ const {
UserModel, UserModel,
PromocodeModel, PromocodeModel,
adminList adminList
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces spaces
} = require('../utils') } = require('../utils')

View File

@ -3,12 +3,12 @@ const {
} = require('telegraf') } = require('telegraf')
const { const {
weaponshop weaponshop
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
escape, escape,
weaponShopUpdate weaponShopUpdate
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let text = `[Hatkeis Gunsmith](https://telegra.ph/Hatkeis-Gunsmith-09-27)\n` let text = `[Hatkeis Gunsmith](https://telegra.ph/Hatkeis-Gunsmith-09-27)\n`

View File

@ -20,7 +20,7 @@ const {
adminList, adminList,
expToUp, expToUp,
topSym topSym
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
spacesWithMarkdown, spacesWithMarkdown,
@ -36,7 +36,7 @@ const {
setCooldown, setCooldown,
weaponShopUpdate, weaponShopUpdate,
stats stats
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let data = ctx.update.callback_query.data; let data = ctx.update.callback_query.data;

View File

@ -5,7 +5,7 @@ const {
houses, houses,
cars, cars,
phones phones
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let data = ctx.update.callback_query.data; let data = ctx.update.callback_query.data;

View File

@ -3,7 +3,7 @@ const {
} = require('telegraf') } = require('telegraf')
const { const {
UserModel UserModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id); let user = await UserModel.findByPk(ctx.from.id);

View File

@ -20,7 +20,7 @@ const {
adminList, adminList,
expToUp, expToUp,
topSym topSym
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
spacesWithMarkdown, spacesWithMarkdown,
@ -36,7 +36,7 @@ const {
setCooldown, setCooldown,
weaponShopUpdate, weaponShopUpdate,
stats stats
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
ctx.args = ctx.update.message.text.split(' ') ctx.args = ctx.update.message.text.split(' ')

View File

@ -4,11 +4,11 @@ const {
simplecars, simplecars,
UserModel, UserModel,
PropertyModel PropertyModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
rand rand
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
module.exports = async (ctx) => { module.exports = async (ctx) => {
let user = await UserModel.findByPk(ctx.from.id) let user = await UserModel.findByPk(ctx.from.id)

View File

@ -7,7 +7,7 @@ const {
UserModel, UserModel,
ReportModel, ReportModel,
adminList adminList
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const shortid = require('shortid'); const shortid = require('shortid');
module.exports = async (ctx) => { module.exports = async (ctx) => {

View File

@ -1,10 +1,10 @@
const { const {
UserModel, UserModel,
topSym topSym
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces spaces
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils') } = require('/dev/Telegram/CampFireGameBot/utils')
const sequelize = require('../db'); const sequelize = require('../db');
const { Op } = require('sequelize'); const { Op } = require('sequelize');

View File

@ -1,6 +1,6 @@
const { const {
WorldModel WorldModel
} = require('../config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces spaces
} = require('../utils') } = require('../utils')

View File

@ -17,6 +17,7 @@ const BusinessModel = require('../models/business.model');
const ReportModel = require('../models/report.model'); const ReportModel = require('../models/report.model');
const BlockModel = require('../models/block.model'); const BlockModel = require('../models/block.model');
const PromocodeModel = require('../models/promocode.model'); const PromocodeModel = require('../models/promocode.model');
const AFKPropertyModel = require('../models/afkproperty.model');
const mainChat = -1001895132127 const mainChat = -1001895132127
const adminList = [275416286] const adminList = [275416286]
const expToUp = [0, 10, 20, 40, 60, 100, 250, 370, 450, 575, 666, 777, 860, 999, 1000, 1177, 1234, 1350, 1488, 1515, 1610] const expToUp = [0, 10, 20, 40, 60, 100, 250, 370, 450, 575, 666, 777, 860, 999, 1000, 1177, 1234, 1350, 1488, 1515, 1610]
@ -41,6 +42,7 @@ module.exports = [
ReportModel, ReportModel,
BlockModel, BlockModel,
PromocodeModel, PromocodeModel,
AFKPropertyModel
mainChat, mainChat,
adminList, adminList,
expToUp, expToUp,

View File

@ -12,12 +12,16 @@ module.exports = {
WorldModel : require('../models/world.model'), WorldModel : require('../models/world.model'),
JobModel : require('../models/job.model'), JobModel : require('../models/job.model'),
PropertyModel : require('../models/property.model'), PropertyModel : require('../models/property.model'),
AFKPropertyModel : require('../models/afkproperty.model'),
BusinessModel : require('../models/business.model'), BusinessModel : require('../models/business.model'),
ReportModel : require('../models/report.model'), ReportModel : require('../models/report.model'),
BlockModel : require('../models/block.model'), BlockModel : require('../models/block.model'),
PromocodeModel : require('../models/promocode.model'), PromocodeModel : require('../models/promocode.model'),
SkillsModel: require('../models/skills.model'), SkillsModel: require('../models/skills.model'),
LobbyModel: require('../models/lobby.model'), LobbyModel: require('../models/lobby.model'),
EnterpriseModel: require('../models/enterprise.model'),
WarehouseModel: require('../models/warehouse.model'),
SaleModel: require('../models/sales.model'),
mainChat : -1001895132127, mainChat : -1001895132127,
adminList : [275416286], adminList : [275416286],
promoTopicId: 1807, promoTopicId: 1807,

View File

@ -0,0 +1,31 @@
const sequelize = require('../db');
const {DataTypes} = require('sequelize');
const AFKProperty = sequelize.define('afkproperty', {
ownerId: {
type: DataTypes.INTEGER,
allowNull: false
},
name: {
type: DataTypes.STRING,
allowNull: false
},
level: {
type: DataTypes.INTEGER,
defaultValue: 1
},
materials: {
type: DataTypes.INTEGER,
defaultValue: 100
},
balance: {
type: DataTypes.INTEGER,
defaultValue: 0
},
vip: {
type: DataTypes.BOOLEAN,
defaultValue: false
}
})
module.exports = AFKProperty;

View File

@ -0,0 +1,34 @@
const sequelize = require('../db');
const {Sequelize} = require('sequelize');
const Enterprise = sequelize.define('enterprise', {
name: {
type: Sequelize.STRING, // название предприятия
allowNull: false
},
resourceType: {
type: Sequelize.STRING, // тип ресурса (дерево, металл и т.д.)
allowNull: false
},
level: {
type: Sequelize.INTEGER, // уровень предприятия
defaultValue: 1
},
efficiency: {
type: Sequelize.INTEGER, // производительность в час (единицы ресурса)
defaultValue: 10 // начальная эффективность
},
warehouseCapacity: {
type: Sequelize.INTEGER, // ёмкость склада (максимальное количество ресурса)
defaultValue: 100
},
playerId: {
type: Sequelize.INTEGER,
references: {
model: 'Users',
key: 'telegram_id'
}
}
});
module.exports = Enterprise;

31
models/sales.model.js Normal file
View File

@ -0,0 +1,31 @@
const sequelize = require('../db');
const {Sequelize} = require('sequelize');
const Sale = sequelize.define('sale', {
enterpriseId: {
type: Sequelize.INTEGER,
references: {
model: 'Enterprises',
key: 'id'
}
},
resourceType: {
type: Sequelize.STRING, // тип ресурса
allowNull: false
},
quantity: {
type: Sequelize.INTEGER, // количество продаваемого ресурса
defaultValue: 0
},
salePrice: {
type: Sequelize.FLOAT, // цена за единицу ресурса
defaultValue: 100
},
time: {
type: Sequelize.DATE, // время продажи
defaultValue: Sequelize.NOW
}
});
module.exports = Sale;

40
models/warehouse.model.js Normal file
View File

@ -0,0 +1,40 @@
const sequelize = require('../db');
const {Sequelize} = require('sequelize');
const Warehouse = sequelize.define('warehouse', {
playerId: {
type: Sequelize.INTEGER,
references: {
model: 'Users',
key: 'id'
}
},
capacity: {
type: Sequelize.INTEGER, // ёмкость общего склада
defaultValue: 500
},
logisticsLevel: {
type: Sequelize.INTEGER, // уровень логистики
defaultValue: 1
}
});
const Truck = sequelize.define('truck', {
warehouseId: {
type: Sequelize.INTEGER,
references: {
model: 'Warehouses',
key: 'id'
}
},
capacity: {
type: Sequelize.INTEGER, // сколько ресурсов грузовик может вывозить в час
defaultValue: 10
},
efficiency: {
type: Sequelize.INTEGER, // эффективность грузовика (на сколько быстрее он может работать)
defaultValue: 1
}
});
module.exports = Warehouse, Truck;

3002
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -11,19 +11,14 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"canvas": "^2.11.2", "dotenv": "^16.4.7",
"date-fns": "^2.30.0",
"dotenv": "^16.3.1",
"error-stack-parser": "^2.1.4", "error-stack-parser": "^2.1.4",
"fs": "^0.0.1-security", "fs": "^0.0.1-security",
"node-telegram-bot-api": "^0.52.0",
"nodemon": "^3.0.1", "nodemon": "^3.0.1",
"pg": "^8.6.0", "pg": "^8.6.0",
"pg-hstore": "^2.3.3", "pg-hstore": "^2.3.3",
"pm2": "^5.3.0", "pm2": "^5.3.0",
"prettytable": "^0.3.1",
"sequelize": "^6.6.2", "sequelize": "^6.6.2",
"shortid": "^2.2.16",
"telegraf": "^4.13.1", "telegraf": "^4.13.1",
"uuid": "^9.0.1", "uuid": "^9.0.1",
"voucher-code-generator": "^1.3.0" "voucher-code-generator": "^1.3.0"

View File

@ -11,7 +11,7 @@ const {
WorldModel, WorldModel,
SkillsModel, SkillsModel,
PropertyModel PropertyModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
getSlot, getSlot,
@ -19,7 +19,7 @@ const {
rand, rand,
random, random,
setCooldown setCooldown
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils'); } = require('/dev/Telegram/CampFireGameBot/utils');
const crime = new Scenes.BaseScene('Crime'); const crime = new Scenes.BaseScene('Crime');
crime.enter( async (ctx) => { crime.enter( async (ctx) => {

View File

@ -11,7 +11,7 @@ UserModel,
WorldModel, WorldModel,
SkillsModel, SkillsModel,
PropertyModel PropertyModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
getSlot, getSlot,
@ -20,7 +20,7 @@ rand,
random, random,
setCooldown, setCooldown,
drop drop
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils'); } = require('/dev/Telegram/CampFireGameBot/utils');
const newpve = new Scenes.BaseScene('NEWPVE'); const newpve = new Scenes.BaseScene('NEWPVE');
const resultTier = [ const resultTier = [
{hit: 'Head', droprate: 10}, {hit: 'Head', droprate: 10},

View File

@ -11,7 +11,7 @@ UserModel,
WorldModel, WorldModel,
SkillsModel, SkillsModel,
PropertyModel PropertyModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
getSlot, getSlot,
@ -19,7 +19,7 @@ giveExp,
rand, rand,
random, random,
setCooldown setCooldown
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils'); } = require('/dev/Telegram/CampFireGameBot/utils');
const steal = new Scenes.BaseScene('POCKET_STEAL'); const steal = new Scenes.BaseScene('POCKET_STEAL');
steal.enter(async (ctx) => { steal.enter(async (ctx) => {

View File

@ -11,7 +11,7 @@ UserModel,
WorldModel, WorldModel,
SkillsModel, SkillsModel,
PropertyModel PropertyModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
getSlot, getSlot,
@ -20,7 +20,7 @@ rand,
random, random,
setCooldown, setCooldown,
drop drop
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils'); } = require('/dev/Telegram/CampFireGameBot/utils');
const pve = new Scenes.BaseScene('PVE'); const pve = new Scenes.BaseScene('PVE');
pve.enter(async (ctx) => { pve.enter(async (ctx) => {

View File

@ -11,7 +11,7 @@ UserModel,
WorldModel, WorldModel,
SkillsModel, SkillsModel,
PropertyModel PropertyModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const { const {
spaces, spaces,
getSlot, getSlot,
@ -19,7 +19,7 @@ giveExp,
rand, rand,
random, random,
setCooldown setCooldown
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/utils'); } = require('/dev/Telegram/CampFireGameBot/utils');
const shop = new Scenes.BaseScene('SHOP_ROBBERY'); const shop = new Scenes.BaseScene('SHOP_ROBBERY');
bot.on('callback_query', (ctx) => { bot.on('callback_query', (ctx) => {

View File

@ -5,11 +5,11 @@ const bot = new Telegraf(process.env.BOT_TOKEN)
const { const {
PromocodeModel, PromocodeModel,
mainChat mainChat
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
const voucher_codes = require('voucher-code-generator'); const voucher_codes = require('voucher-code-generator');
const rand = require('./rand') const rand = require('./rand')
const generateVoucher = require('./generateVoucher'); const generateVoucher = require('./generateVoucher');
const { promoTopicId } = require('../config'); const { promoTopicId } = require('/config');
module.exports = async () => { module.exports = async () => {
let activs = rand(1, 3) let activs = rand(1, 3)
let give = rand(1000, 10000) let give = rand(1000, 10000)

View File

@ -4,7 +4,7 @@ const {
const bot = new Telegraf(process.env.BOT_TOKEN) const bot = new Telegraf(process.env.BOT_TOKEN)
const { const {
expToUp expToUp
} = require('/workspace/degradin/Dev/Telegram/CampFire Play Dev/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async (user, experience) => { module.exports = async (user, experience) => {

View File

@ -1,8 +1,8 @@
const spaces = require('./spaces') const spaces = require('./spaces')
const spacesWithMarkdown = require('./spacesV2') const spacesWithMarkdown = require('./spacesV2')
const escape = require('./escape') const escape = require('./escape')
const generatePromo = require('./generatePromo') //const generatePromo = require('./generatePromo')
const generateVoucher = require('./generateVoucher') //const generateVoucher = require('./generateVoucher')
const getCurrentTime = require('./getCurrentTime') const getCurrentTime = require('./getCurrentTime')
const getSlot = require('./getSlot') const getSlot = require('./getSlot')
const giveExp = require('./giveExp') const giveExp = require('./giveExp')
@ -19,8 +19,8 @@ module.exports = {
spaces, spaces,
spacesWithMarkdown, spacesWithMarkdown,
escape, escape,
generatePromo, //generatePromo,
generateVoucher, //generateVoucher,
getCurrentTime, getCurrentTime,
getSlot, getSlot,
giveExp, giveExp,

View File

@ -1,7 +1,7 @@
const rand = require('./rand') const rand = require('./rand')
const { const {
WorldModel WorldModel
} = require('/workspace/degradin/Dev/Telegram/CampFire Play/config') } = require('/dev/Telegram/CampFireGameBot/config')
module.exports = async () => { module.exports = async () => {
let world = await WorldModel.findByPk(1) let world = await WorldModel.findByPk(1)

View File

@ -3,7 +3,7 @@ const {
weaponshop, weaponshop,
weapons, weapons,
equipment, equipment,
} = require('/workspace/degradin/Dev/Telegram/CampFire Play Dev/config') } = require('/dev/Telegram/CampFireGameBot/config')
const fs = require('fs'); const fs = require('fs');
module.exports = () => { module.exports = () => {