prettify
Visual Enchancements
This commit is contained in:
parent
aac3c0f21c
commit
4f1e3943b4
74
bot.js
74
bot.js
@ -3,7 +3,7 @@ const { Telegraf, Scenes, session, Markup, Stage } = require('telegraf');
|
||||
const { Op } = require('sequelize');
|
||||
const schedule = require('node-schedule');
|
||||
const sequelize = require('./db'); // Подключение базы данных
|
||||
// Подключаем обработчики
|
||||
// Подключаем обработчики
|
||||
const commands = require('./commands');
|
||||
const utils = require('./utils');
|
||||
const handlers = require('./handlers');
|
||||
@ -25,16 +25,16 @@ const {
|
||||
SkillsModel,
|
||||
DailyModel
|
||||
} = global.config
|
||||
const bot = new Telegraf(process.env.BOT_TOKEN)
|
||||
const rpg = require('./rpg'); // Подключение RPG-механик
|
||||
const crime = require('./scenes/crime')
|
||||
const pocketsteal = require('./scenes/pocketsteal')
|
||||
const shop = require('./scenes/shop')
|
||||
const pve = require('./scenes/pve')
|
||||
const bot = new Telegraf(process.env.BOT_TOKEN)
|
||||
const rpg = require('./rpg'); // Подключение RPG-механик
|
||||
const crime = require('./scenes/crime')
|
||||
const pocketsteal = require('./scenes/pocketsteal')
|
||||
const shop = require('./scenes/shop')
|
||||
const pve = require('./scenes/pve')
|
||||
const newpve = require('./scenes/newpve')
|
||||
const stage = new Scenes.Stage([crime, pocketsteal, shop, pve, newpve]);
|
||||
const stage = new Scenes.Stage([crime, pocketsteal, shop, pve, newpve]);
|
||||
|
||||
const start = async () => {
|
||||
const start = async () => {
|
||||
try {
|
||||
// Подключаемся к базе данных
|
||||
await sequelize.authenticate();
|
||||
@ -54,27 +54,27 @@ const newpve = require('./scenes/newpve')
|
||||
bot.telegram.setMyCommands([{
|
||||
command: "pay",
|
||||
description: "Перевести указанному пользователю сумму."
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
command: "buy",
|
||||
description: "Приобрести указанное имущество."
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
command: "business",
|
||||
description: "Создать организацию."
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
command: "invite",
|
||||
description: "Пригласить пользователя в организацию."
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
command: "percent",
|
||||
description: "Установить пользователю процент заработка."
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
command: "report",
|
||||
description: "Создать жалобу/обращение/идею."
|
||||
}
|
||||
}
|
||||
])
|
||||
|
||||
bot.use(stage.middleware())
|
||||
@ -91,16 +91,16 @@ bot.use(
|
||||
return ctx.update.update_id
|
||||
}
|
||||
})
|
||||
)
|
||||
bot.use(stage)
|
||||
)
|
||||
bot.use(stage)
|
||||
bot.use(utils.stats)
|
||||
|
||||
bot.use(async (ctx, next) => {
|
||||
bot.context.config = require('./ctxconfig.json')
|
||||
let id = ctx.from.id
|
||||
let username = ctx.from.username
|
||||
if(username == null) username = ctx.from.id
|
||||
switch(ctx.updateType){
|
||||
if (username == null) username = ctx.from.id
|
||||
switch (ctx.updateType) {
|
||||
case `message`:
|
||||
console.log(utils.getCurrentTime() + `: ` + username + `: ` + ctx.update.message.text)
|
||||
break;
|
||||
@ -125,7 +125,7 @@ bot.use(async (ctx, next) => {
|
||||
})
|
||||
} else {
|
||||
user.name = ctx.from.first_name
|
||||
if(user.username === null) user.username = ctx.from.id
|
||||
if (user.username === null) user.username = ctx.from.id
|
||||
user.save()
|
||||
}
|
||||
if (property === null) {
|
||||
@ -221,7 +221,7 @@ bot.hears('Криминал', async (ctx) => {
|
||||
})
|
||||
|
||||
|
||||
bot.hears('промка', async(ctx) => {
|
||||
bot.hears('промка', async (ctx) => {
|
||||
generatePromo()
|
||||
});
|
||||
|
||||
@ -343,13 +343,13 @@ bot.action(/{"action": "sueta_*/, async (ctx) => {
|
||||
console.log(data.car)
|
||||
let user = await UserModel.findByPk(ctx.from.id)
|
||||
let property = await PropertyModel.findByPk(ctx.from.id)
|
||||
switch(data.action){
|
||||
switch (data.action) {
|
||||
case `sueta_accept`:
|
||||
user.money += data.carprice
|
||||
await ctx.editMessageText(`➕ ${data.carprice}`)
|
||||
break;
|
||||
case `sueta_refuse`:
|
||||
user.money += Math.round(property.car.price/2)
|
||||
user.money += Math.round(property.car.price / 2)
|
||||
property.car = {
|
||||
name: data.carname,
|
||||
price: data.carprice
|
||||
@ -574,7 +574,7 @@ bot.action('my_enterprises', async (ctx) => {
|
||||
|
||||
if (!truck) {
|
||||
enterpriseButtons.push({ text: `🛻 ID: ${id}`, callback_data: `hire_truck_${id}` });
|
||||
}else{
|
||||
} else {
|
||||
enterpriseButtons.push({ text: `🚛 ID: ${id}`, callback_data: `upgrade_truck_${id}` });
|
||||
}
|
||||
|
||||
@ -586,7 +586,7 @@ bot.action('my_enterprises', async (ctx) => {
|
||||
|
||||
buttons.push(enterpriseButtons);
|
||||
}
|
||||
message += `\n\n📈 - Улучшить\n🛻 - Купить грузовик [~${utils.spaces(metallPrice.price*700)} руб.]\n🚛 - Улучшить грузовик\n💰 - Продать ресурсы с предприятия\n🔄 - Перевезти все на склад`
|
||||
message += `\n\n📈 - Улучшить\n🛻 - Купить грузовик [~${utils.spaces(metallPrice.price * 700)} руб.]\n🚛 - Улучшить грузовик\n💰 - Продать ресурсы с предприятия\n🔄 - Перевезти все на склад`
|
||||
buttons.push([{ text: '⬅️ Назад', callback_data: 'enterprise_menu' }]);
|
||||
|
||||
return await ctx.editMessageText(message, Markup.inlineKeyboard(buttons).resize());
|
||||
@ -605,7 +605,7 @@ bot.action('build_enterprise', async (ctx) => {
|
||||
});
|
||||
|
||||
if (enterprises.length >= 5) {
|
||||
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, 'Вы достигли максимального числа предприятий.', {show_alert: true});
|
||||
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, 'Вы достигли максимального числа предприятий.', { show_alert: true });
|
||||
}
|
||||
|
||||
// Получаем текущие цены из базы данных
|
||||
@ -652,7 +652,7 @@ bot.action(/build_(wood|coal|oil|metall|gold|diamond)/, async (ctx) => {
|
||||
|
||||
// Проверка, есть ли достаточно денег у пользователя
|
||||
if (user.money < price) {
|
||||
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, `У вас недостаточно средств для постройки предприятия. Необходимо ${price} руб.`, {show_alert: true})
|
||||
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, `У вас недостаточно средств для постройки предприятия. Необходимо ${price} руб.`, { show_alert: true })
|
||||
}
|
||||
|
||||
// Строим предприятие
|
||||
@ -784,7 +784,7 @@ bot.action('transfer_resources', async (ctx) => {
|
||||
const warehouse = await WarehouseModel.findOne({ where: { playerId: user.telegram_id } });
|
||||
|
||||
if (!warehouse) {
|
||||
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id,'У вас нет единого склада.');
|
||||
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, 'У вас нет единого склада.');
|
||||
}
|
||||
|
||||
const enterprises = await EnterpriseModel.findAll({
|
||||
@ -1125,10 +1125,10 @@ bot.action(/hire_truck_(\d+)/, async (ctx) => {
|
||||
if (!resourcePrice) {
|
||||
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, 'Не удалось получить цену ресурса.');
|
||||
}
|
||||
if (user.money < resourcePrice.price*700) {
|
||||
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, `Недостаточно средств. Стоимость грузовика: ${utils.spaces(resourcePrice.price*700)} руб.`);
|
||||
if (user.money < resourcePrice.price * 700) {
|
||||
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, `Недостаточно средств. Стоимость грузовика: ${utils.spaces(resourcePrice.price * 700)} руб.`);
|
||||
}
|
||||
await user.update({ money: user.money - (resourcePrice.price*700) })
|
||||
await user.update({ money: user.money - (resourcePrice.price * 700) })
|
||||
// Создаем новый грузовик
|
||||
const newTruck = await TruckModel.create({
|
||||
enterpriseId: enterprise.id,
|
||||
@ -1447,7 +1447,7 @@ const spinSlots = async (ctx, bet, user) => {
|
||||
let resultMessage = `🎰 Итог:\n${finalIcons.join(' | ')}\n\n`;
|
||||
if (winMultiplier > 0) {
|
||||
const winnings = bet * winMultiplier;
|
||||
utils.giveExp(user, winMultiplier*10)
|
||||
utils.giveExp(user, winMultiplier * 10)
|
||||
user.money += winnings;
|
||||
await user.save();
|
||||
console.log(`Win: ${winnings}`)
|
||||
|
130
rpg.js
130
rpg.js
@ -4,7 +4,7 @@ const { faker, fakerRU } = require('@faker-js/faker');
|
||||
// Подключаем необходимые библиотеки
|
||||
const { Op } = require('sequelize');
|
||||
const sequelize = require('./db'); // Подключение базы данных
|
||||
// Подключаем обработчики
|
||||
// Подключаем обработчики
|
||||
const utils = require('./utils');
|
||||
const handlers = require('./handlers');
|
||||
const {
|
||||
@ -33,7 +33,7 @@ const {
|
||||
const rpg = new Composer();
|
||||
|
||||
rpg.use(async (ctx, next) => {
|
||||
if(ctx.update.edited_channel_post) return console.log(`[RPG] Channel post updated`);
|
||||
if (ctx.update.edited_channel_post) return console.log(`[RPG] Channel post updated`);
|
||||
let id = ctx.from.id
|
||||
let username = ctx.from.username;
|
||||
if (username == null) username = ctx.from.id;
|
||||
@ -107,7 +107,7 @@ rpg.action('rpg_profile', async (ctx) => {
|
||||
if (character.firePoints >= 1) {
|
||||
buttons.push([Markup.button.callback('➕ Распределить очки', 'fire_distribute')]);
|
||||
}
|
||||
buttons.push([Markup.button.callback('🔙 В меню', 'crime_menu')]);
|
||||
buttons.push([Markup.button.callback('🔙 В меню', 'crime_menu')]);
|
||||
// Отправляем сообщение
|
||||
ctx.editMessageText(profile.trim(), Markup.inlineKeyboard(buttons));
|
||||
});
|
||||
@ -209,7 +209,7 @@ const usersCrimeNet = new Set();
|
||||
rpg.hears('CampFireGG.Crime', async (ctx) => {
|
||||
const userId = ctx.from.id;
|
||||
const character = await CharacterModel.findOne({ where: { telegram_id: userId } });
|
||||
if (!usersCrimeNet.has(userId) && character.level === 1){
|
||||
if (!usersCrimeNet.has(userId) && character.level === 1) {
|
||||
// Если пользователь вводит команду впервые
|
||||
usersCrimeNet.add(userId);
|
||||
const username = ctx.from.username || 'User';
|
||||
@ -268,7 +268,8 @@ rpg.hears('CampFireGG.Crime', async (ctx) => {
|
||||
undefined,
|
||||
`🚨 Добро пожаловать в CampFireGG.Crime 🚨\n\n`,
|
||||
Markup.inlineKeyboard(buttons)
|
||||
)} else {
|
||||
)
|
||||
} else {
|
||||
// Показываем только меню, если команда уже была введена
|
||||
await ctx.reply(
|
||||
`🚨 Добро пожаловать в CampFireGG.Crime 🚨\n\n`,
|
||||
@ -647,14 +648,14 @@ rpg.action('crime_missions', async (ctx) => {
|
||||
await ctx.answerCbQuery();
|
||||
await ctx.editMessageText(`💼 **Задачи:**\n Для карманных краж тебе не нужно ничего, главное не попадись.\n А вот после ограбления магазина в переулке не спрячешься, без тачки на миссию нельзя.`,
|
||||
Markup.inlineKeyboard([
|
||||
[{text: 'Карманные кражи [1 lvl.]', callback_data: `POCKET_ACTION`}],
|
||||
[{text: 'Магазин [5 lvl.]', callback_data: `SHOP_ACTION`}],
|
||||
[{ text: 'Карманные кражи [1 lvl.]', callback_data: `POCKET_ACTION` }],
|
||||
[{ text: 'Магазин [5 lvl.]', callback_data: `SHOP_ACTION` }],
|
||||
//[{text: 'Банкомат', callback_data: `WIP`}],
|
||||
// [{text: 'Банковское отделение', callback_data: `WIP`}],
|
||||
//[{text: 'Угон', callback_data: `WIP`}],
|
||||
// [{text: 'Ювелирка', callback_data: `WIP`}],
|
||||
//[{text: 'Банк', callback_data: `WIP`}],
|
||||
[{text: '🔙 В меню', callback_data: `crime_menu`}]
|
||||
[{ text: '🔙 В меню', callback_data: `crime_menu` }]
|
||||
]),
|
||||
);
|
||||
});
|
||||
@ -663,8 +664,8 @@ rpg.action(`POCKET_ACTION`, async (ctx) => {
|
||||
let user = await UserModel.findByPk(ctx.from.id)
|
||||
let character = await CharacterModel.findByPk(ctx.from.id);
|
||||
let pocketsteal = character.pocketstealcd
|
||||
if(character.level < 1) return ctx.editMessageText('Доступно с 1 уровня!')
|
||||
if(character.stamina < 10) return ctx.editMessageText('Вы устали!')
|
||||
if (character.level < 1) return ctx.editMessageText('Доступно с 1 уровня!')
|
||||
if (character.stamina < 10) return ctx.editMessageText('Вы устали!')
|
||||
let cooldown = utils.setCooldown(character, 3600, pocketsteal)
|
||||
if (character.pocketstealcd > cooldown.currentTime) return ctx.editMessageText(`📛 Данное действие будет доступно через ${cooldown.timeLeftInMinutes} мин.`);
|
||||
character.pocketstealcd = cooldown.endTime
|
||||
@ -672,20 +673,20 @@ rpg.action(`POCKET_ACTION`, async (ctx) => {
|
||||
character.save()
|
||||
ctx.editMessageText('Выберите объект', Markup.inlineKeyboard([
|
||||
[
|
||||
{text: 'Карман', callback_data: `POCKET_TARGET`},
|
||||
{text: 'Бумажник', callback_data: `POCKET_WALLET`},
|
||||
{text: 'Сумка', callback_data: `POCKET_BAG`}
|
||||
{ text: 'Карман', callback_data: `POCKET_TARGET` },
|
||||
{ text: 'Бумажник', callback_data: `POCKET_WALLET` },
|
||||
{ text: 'Сумка', callback_data: `POCKET_BAG` }
|
||||
]
|
||||
]))
|
||||
]))
|
||||
});
|
||||
|
||||
rpg.action(`POCKET_TARGET`, async (ctx) => {
|
||||
ctx.editMessageText('В кармане обнаружено', Markup.inlineKeyboard([
|
||||
[
|
||||
{text: 'Деньги', callback_data: `MONEY_IN_POCKET`},
|
||||
{text: 'Телефон', callback_data: `PHONE`}
|
||||
{ text: 'Деньги', callback_data: `MONEY_IN_POCKET` },
|
||||
{ text: 'Телефон', callback_data: `PHONE` }
|
||||
]
|
||||
]))
|
||||
]))
|
||||
});
|
||||
|
||||
rpg.action(`MONEY_IN_POCKET`, async (ctx) => {
|
||||
@ -722,13 +723,13 @@ rpg.action(`PHONE`, async (ctx) => {
|
||||
let baseChance = 20; // Базовый шанс
|
||||
let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума".
|
||||
let randomRoll = utils.rand(0, 100); // Случайное число от 0 до 100
|
||||
if(chance < randomRoll) {
|
||||
if (chance < randomRoll) {
|
||||
Exp(ctx, character, 1)
|
||||
return ctx.editMessageText('Вы были замечены во время кражи.')
|
||||
}
|
||||
let randPhone = utils.rand(1,10)
|
||||
let randPhone = utils.rand(1, 10)
|
||||
if (property.mobile.name) {
|
||||
let dirtyMoney = Math.round(phones[randPhone].price/100*70)
|
||||
let dirtyMoney = Math.round(phones[randPhone].price / 100 * 70)
|
||||
Exp(ctx, character, character.intelligence + 10)
|
||||
character.dirtymoney += dirtyMoney
|
||||
return await ctx.reply(`Вы сбыли украденный ${phones[randPhone].name} за Ð${utils.spaces(dirtyMoney)}`)
|
||||
@ -742,10 +743,10 @@ rpg.action(`PHONE`, async (ctx) => {
|
||||
rpg.action(`POCKET_WALLET`, async (ctx) => {
|
||||
ctx.editMessageText('В бумажнике обнаружено', Markup.inlineKeyboard([
|
||||
[
|
||||
{text: 'Деньги', callback_data: `MONEY_IN_WALLET`},
|
||||
{text: 'Карточка', callback_data: `CARD_IN_WALLET`}
|
||||
{ text: 'Деньги', callback_data: `MONEY_IN_WALLET` },
|
||||
{ text: 'Карточка', callback_data: `CARD_IN_WALLET` }
|
||||
]
|
||||
]))
|
||||
]))
|
||||
});
|
||||
|
||||
rpg.action(`MONEY_IN_WALLET`, async (ctx) => {
|
||||
@ -755,7 +756,7 @@ rpg.action(`MONEY_IN_WALLET`, async (ctx) => {
|
||||
let baseChance = 35; // Базовый шанс
|
||||
let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума".
|
||||
let randomRoll = utils.rand(0, 100); // Случайное число от 0 до 100
|
||||
if(chance < randomRoll) {
|
||||
if (chance < randomRoll) {
|
||||
Exp(ctx, character, 1)
|
||||
return ctx.editMessageText('Вы были замечены во время кражи.')
|
||||
}
|
||||
@ -772,7 +773,7 @@ rpg.action(`CARD_IN_WALLET`, async (ctx) => {
|
||||
let baseChance = 20; // Базовый шанс
|
||||
let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума".
|
||||
let randomRoll = utils.rand(0, 100); // Случайное число от 0 до 100
|
||||
if(chance < randomRoll) {
|
||||
if (chance < randomRoll) {
|
||||
Exp(ctx, character, 2)
|
||||
return ctx.editMessageText('Вы были замечены во время кражи.')
|
||||
}
|
||||
@ -788,18 +789,18 @@ rpg.action(`POCKET_BAG`, async (ctx) => {
|
||||
let baseChance = 20; // Базовый шанс
|
||||
let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума".
|
||||
let randomRoll = utils.rand(0, 100); // Случайное число от 0 до 100
|
||||
if(chance < randomRoll) {
|
||||
if (chance < randomRoll) {
|
||||
Exp(ctx, character, 1)
|
||||
return ctx.editMessageText('Вы были замечены во время кражи.')
|
||||
}
|
||||
let times = utils.rand(2,20)
|
||||
let times = utils.rand(2, 20)
|
||||
let moneyIn = 0
|
||||
let text = ``
|
||||
let values = 0
|
||||
|
||||
for(i=1; i<=times; i++){
|
||||
randomize = utils.rand(1,100)
|
||||
switch(randomize) {
|
||||
for (i = 1; i <= times; i++) {
|
||||
randomize = utils.rand(1, 100)
|
||||
switch (randomize) {
|
||||
case 2:
|
||||
values = utils.rand(10000, 50000)
|
||||
moneyIn += values
|
||||
@ -839,9 +840,9 @@ rpg.action('SHOP_ACTION', async (ctx) => {
|
||||
let user = await UserModel.findByPk(ctx.from.id)
|
||||
let character = await CharacterModel.findByPk(ctx.from.id);
|
||||
let property = await PropertyModel.findByPk(ctx.from.id);
|
||||
if(character.level < 5) return ctx.editMessageText('Доступно с 5 уровня!')
|
||||
if(property.car1 == 0) return ctx.editMessageText('Для данного задания нужна тачка.')
|
||||
if(character.stamina < 25) return ctx.editMessageText('Вы устали!')
|
||||
if (character.level < 5) return ctx.editMessageText('Доступно с 5 уровня!')
|
||||
if (property.car1 == 0) return ctx.editMessageText('Для данного задания нужна тачка.')
|
||||
if (character.stamina < 25) return ctx.editMessageText('Вы устали!')
|
||||
let shoprobcd = character.shoprobcd
|
||||
let cooldown = utils.setCooldown(character, 3600, shoprobcd)
|
||||
if (character.shoprobcd > cooldown.currentTime) return ctx.editMessageText(`📛 Данное действие будет доступно через ${cooldown.timeLeftInMinutes} мин.`);
|
||||
@ -849,9 +850,9 @@ rpg.action('SHOP_ACTION', async (ctx) => {
|
||||
character.stamina -= 25
|
||||
character.save()
|
||||
return ctx.editMessageText('Стадии:', Markup.inlineKeyboard([
|
||||
[{text: 'Взлом кассы', callback_data: `SHOP_CASH_BREAK`}],
|
||||
[{text: 'Разбить кассу', callback_data: `SHOP_CASH_SMASH`}]
|
||||
]))
|
||||
[{ text: 'Взлом кассы', callback_data: `SHOP_CASH_BREAK` }],
|
||||
[{ text: 'Разбить кассу', callback_data: `SHOP_CASH_SMASH` }]
|
||||
]))
|
||||
});
|
||||
|
||||
rpg.action(`SHOP_CASH_BREAK`, async (ctx) => {
|
||||
@ -861,28 +862,28 @@ rpg.action(`SHOP_CASH_BREAK`, async (ctx) => {
|
||||
let randomRoll = utils.rand(0, 100); // Случайное число от 0 до 100
|
||||
let cashIn = utils.rand(1000, 10000)
|
||||
let timer = 1000
|
||||
if(chance < randomRoll) {
|
||||
if (chance < randomRoll) {
|
||||
const keyboard = generateKeyboard();
|
||||
ctx.deleteMessage()
|
||||
return ctx.reply('Касса закрыта, вы начали взлом замка:', keyboard);
|
||||
//ctx.editMessageText('Вы начали взлом кассы.');
|
||||
//return ctx.scene.enter('LOCKPICK')
|
||||
}
|
||||
for(i=0; i<utils.rand(character.endurance, character.endurance + 15);i++){
|
||||
for (i = 0; i < utils.rand(character.endurance, character.endurance + 15); i++) {
|
||||
setTimeout(() => {
|
||||
cashIn += utils.rand(1000, 10000)
|
||||
ctx.editMessageText(`⏏️ Вы достали из кассы: Ð${utils.spaces(cashIn)}`)
|
||||
}, timer)
|
||||
timer += 500
|
||||
}
|
||||
setTimeout(() => {
|
||||
setTimeout(() => {
|
||||
Exp(ctx, character, character.intelligence + 25)
|
||||
character.dirtymoney += cashIn
|
||||
character.save()
|
||||
return ctx.editMessageText(`Вы достали из кассы Ð${utils.spaces(cashIn)}, пора валить.`, Markup.inlineKeyboard([
|
||||
[{text: 'Завершить ограбление', callback_data: `SHOP_END`}]
|
||||
]))
|
||||
}, timer+300)
|
||||
return ctx.editMessageText(`Вы достали из кассы Ð${utils.spaces(cashIn)}, пора валить.`, Markup.inlineKeyboard([
|
||||
[{ text: 'Завершить ограбление', callback_data: `SHOP_END` }]
|
||||
]))
|
||||
}, timer + 300)
|
||||
});
|
||||
|
||||
rpg.action(`SHOP_CASH_SMASH`, async (ctx) => {
|
||||
@ -892,26 +893,26 @@ rpg.action(`SHOP_CASH_SMASH`, async (ctx) => {
|
||||
let randomRoll = utils.rand(0, 100); // Случайное число от 0 до 100
|
||||
let cashIn = utils.rand(1000, 10000)
|
||||
let timer = 1000
|
||||
if(chance < randomRoll) {
|
||||
if (chance < randomRoll) {
|
||||
Exp(ctx, character, 1)
|
||||
return ctx.editMessageText('Вы разбили кассовый аппарат, и сработала сигнализация. Вы сбежали.')
|
||||
}
|
||||
ctx.editMessageText('Вы разбили кассовый аппарат, и сработала сигнализация.')
|
||||
for(i=0; i<utils.rand(character.endurance, character.endurance + 8);i++){
|
||||
for (i = 0; i < utils.rand(character.endurance, character.endurance + 8); i++) {
|
||||
setTimeout(() => {
|
||||
cashIn += utils.rand(500, 5000)
|
||||
ctx.editMessageText(`⏏️ Вы в спешке достали из кассы: Ð${utils.spaces(cashIn)}`)
|
||||
}, timer)
|
||||
timer += 500
|
||||
}
|
||||
setTimeout(() => {
|
||||
setTimeout(() => {
|
||||
Exp(ctx, character, character.intelligence + 10)
|
||||
character.dirtymoney += cashIn
|
||||
character.save()
|
||||
return ctx.editMessageText(`Вы в спешке достали из кассы Ð${utils.spaces(cashIn)}, пора валить.`, Markup.inlineKeyboard([
|
||||
[{text: 'Завершить ограбление', callback_data: `SHOP_END`}]
|
||||
]))
|
||||
}, timer+300)
|
||||
return ctx.editMessageText(`Вы в спешке достали из кассы Ð${utils.spaces(cashIn)}, пора валить.`, Markup.inlineKeyboard([
|
||||
[{ text: 'Завершить ограбление', callback_data: `SHOP_END` }]
|
||||
]))
|
||||
}, timer + 300)
|
||||
});
|
||||
|
||||
rpg.action(`SHOP_CASH_BREAK_SUCCESS`, async (ctx) => {
|
||||
@ -920,7 +921,7 @@ rpg.action(`SHOP_CASH_BREAK_SUCCESS`, async (ctx) => {
|
||||
delete attempts[ctx.from.id];
|
||||
let cashIn = utils.rand(1000, 10000)
|
||||
let timer = 100
|
||||
for(i=0; i<utils.rand(character.endurance, character.endurance + 15);i++){
|
||||
for (i = 0; i < utils.rand(character.endurance, character.endurance + 15); i++) {
|
||||
setTimeout(() => {
|
||||
cashIn += utils.rand(3000, 10000)
|
||||
ctx.editMessageText(`⏏️ Вы достали из кассы: Ð${utils.spaces(cashIn)}`)
|
||||
@ -932,9 +933,9 @@ rpg.action(`SHOP_CASH_BREAK_SUCCESS`, async (ctx) => {
|
||||
character.dirtymoney += cashIn
|
||||
character.save()
|
||||
return ctx.editMessageText(`Вы достали из кассы Ð${utils.spaces(cashIn)}, пора валить.`, Markup.inlineKeyboard([
|
||||
[{text: 'Завершить ограбление', callback_data: `SHOP_END`}]
|
||||
]))
|
||||
}, timer+300)
|
||||
[{ text: 'Завершить ограбление', callback_data: `SHOP_END` }]
|
||||
]))
|
||||
}, timer + 300)
|
||||
});
|
||||
|
||||
rpg.action(`SHOP_END`, async (ctx) => {
|
||||
@ -1041,7 +1042,7 @@ rpg.action(/view_item_(\d+)/, async (ctx) => {
|
||||
const buttons = []
|
||||
let message = `ℹ️ ${item.name}\n`
|
||||
message += ` 📜 ${item.description}\n\n 〰️Редкость: ${item.rarity}\n 🔤Тип: ${item.type}`
|
||||
if (!item.equipped){
|
||||
if (!item.equipped) {
|
||||
buttons.push([Markup.button.callback(`🎯 Использовать ${item.name}`, `use_item_${item.id}`)]);
|
||||
}
|
||||
if (item.equipped && item.canBeEquipped) {
|
||||
@ -1076,7 +1077,7 @@ rpg.action(/use_item_(\d+)/, async (ctx) => {
|
||||
// Применяем эффекты предмета
|
||||
if (item.effectData) {
|
||||
const resultMessages = processEffects(character, item.effectData, true);
|
||||
await ctx.answerCbQuery(resultMessages, {show_alert: true});
|
||||
await ctx.answerCbQuery(resultMessages, { show_alert: true });
|
||||
}
|
||||
|
||||
if (item.canBeEquipped && item.type != 'consumable') {
|
||||
@ -1153,7 +1154,7 @@ rpg.action(/buy_item_(\d+)/, async (ctx) => {
|
||||
const inventory = await InventoryModel.findAll({ where: { telegram_id: ctx.from.id } });
|
||||
|
||||
if (inventory.length >= 15) {
|
||||
return ctx.answerCbQuery('Инвентарь полон.', {show_alert: true});
|
||||
return ctx.answerCbQuery('Инвентарь полон.', { show_alert: true });
|
||||
}
|
||||
|
||||
if (!item) {
|
||||
@ -1167,7 +1168,7 @@ rpg.action(/buy_item_(\d+)/, async (ctx) => {
|
||||
}
|
||||
|
||||
if (character.balance < item.price) {
|
||||
return ctx.answerCbQuery('У вас недостаточно средств для покупки этого предмета.', {show_alert: true});
|
||||
return ctx.answerCbQuery('У вас недостаточно средств для покупки этого предмета.', { show_alert: true });
|
||||
}
|
||||
|
||||
// Снимаем деньги с баланса
|
||||
@ -1189,7 +1190,7 @@ rpg.action(/buy_item_(\d+)/, async (ctx) => {
|
||||
});
|
||||
|
||||
await character.save();
|
||||
ctx.answerCbQuery(`Вы успешно купили ${item.name} за ${item.price}₽!`, {show_alert: true});
|
||||
ctx.answerCbQuery(`Вы успешно купили ${item.name} за ${item.price}₽!`, { show_alert: true });
|
||||
});
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -1439,10 +1440,10 @@ const reduceStealedCards = async () => {
|
||||
|
||||
|
||||
async function generateCard(userId, balance) {
|
||||
if(!Number(balance)){
|
||||
balance = faker.finance.amount({dec: 0})*100
|
||||
if (!Number(balance)) {
|
||||
balance = faker.finance.amount({ dec: 0 }) * 100
|
||||
console.log('Random balance: ' + balance)
|
||||
}else{
|
||||
} else {
|
||||
balance = Math.floor(balance);
|
||||
console.log('Set balance: ' + balance)
|
||||
}
|
||||
@ -1469,13 +1470,14 @@ async function Exp(ctx, character, experience) {
|
||||
character.exp += experience
|
||||
await ctx.sendMessage(`❇️ +${experience} exp.`)
|
||||
await character.save()
|
||||
for(i in expToUp){
|
||||
for (i in expToUp) {
|
||||
if (character.exp >= expToUp[character.level]) {
|
||||
character.exp -= expToUp[character.level]
|
||||
character.level += 1
|
||||
character.firePoints += 1
|
||||
await character.save()
|
||||
await ctx.sendMessage(`⤴️ Уровень вашего персонажа повысился до ${character.level}!`)}
|
||||
await ctx.sendMessage(`⤴️ Уровень вашего персонажа повысился до ${character.level}!`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user