176 lines
6.8 KiB
JavaScript
176 lines
6.8 KiB
JavaScript
const {
|
||
Telegraf,
|
||
Scenes,
|
||
Markup
|
||
} = require('telegraf')
|
||
const bot = new Telegraf(process.env.BOT_TOKEN)
|
||
const {
|
||
slots,
|
||
phones,
|
||
UserModel,
|
||
CharacterModel,
|
||
WorldModel,
|
||
SkillsModel,
|
||
PropertyModel
|
||
} = global.config
|
||
const {
|
||
spaces,
|
||
getSlot,
|
||
giveExp,
|
||
rand,
|
||
random,
|
||
setCooldown
|
||
} = global.utils;
|
||
const steal = new Scenes.BaseScene('POCKET_STEAL');
|
||
|
||
steal.enter(async (ctx) => {
|
||
let user = await UserModel.findByPk(ctx.from.id)
|
||
let pocketsteal = user.pocketstealcd
|
||
if(user.level < 7) return ctx.editMessageText('Доступно с 7 уровня!')
|
||
let cooldown = setCooldown(user, 3600, pocketsteal)
|
||
if (user.pocketstealcd > cooldown.currentTime) return ctx.editMessageText(`📛 Данное действие будет доступно через ${cooldown.timeLeftInMinutes} мин.`);
|
||
user.pocketstealcd = cooldown.endTime
|
||
user.save()
|
||
ctx.editMessageText('Выберите объект', Markup.inlineKeyboard([
|
||
[
|
||
{text: 'Карман', callback_data: `POCKET_TARGET`},
|
||
{text: 'Бумажник', callback_data: `POCKET_WALLET`},
|
||
{text: 'Сумка', callback_data: `POCKET_BAG`}
|
||
]
|
||
]))
|
||
});
|
||
|
||
steal.action(`POCKET_TARGET`, async (ctx) => {
|
||
ctx.editMessageText('В кармане обнаружено', Markup.inlineKeyboard([
|
||
[
|
||
{text: 'Деньги', callback_data: `MONEY_IN_POCKET`},
|
||
{text: 'Телефон', callback_data: `PHONE`}
|
||
]
|
||
]))
|
||
});
|
||
|
||
steal.action(`MONEY_IN_POCKET`, async (ctx) => {
|
||
// Получаем пользователя и его персонажа
|
||
//let user = await UserModel.findByPk(ctx.from.id);
|
||
let character = await CharacterModel.findByPk(ctx.from.id);
|
||
|
||
if (!character) {
|
||
return ctx.editMessageText('У вас нет персонажа. Создайте его перед началом.');
|
||
}
|
||
|
||
// Расчёт шанса на успешную кражу
|
||
let baseChance = 20; // Базовый шанс
|
||
let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума".
|
||
|
||
let randomRoll = rand(0, 100); // Случайное число от 0 до 100
|
||
if (randomRoll > chance) {
|
||
return ctx.editMessageText('Вы были замечены во время кражи.');
|
||
}
|
||
|
||
// Успешная кража
|
||
let moneyIn = rand(5, 1000);
|
||
character.dirtymoney += moneyIn;
|
||
await character.save();
|
||
|
||
return ctx.editMessageText(`Вы успешно украли Ð${spaces(moneyIn)} из кармана.`);
|
||
});
|
||
|
||
|
||
steal.action(`PHONE`, async (ctx) => {
|
||
let character = await CharacterModel.findByPk(ctx.from.id);
|
||
//let user = await UserModel.findByPk(ctx.from.id)
|
||
let property = await PropertyModel.findByPk(ctx.from.id);
|
||
// Расчёт шанса на успешную кражу
|
||
let baseChance = 20; // Базовый шанс
|
||
let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума".
|
||
let randomRoll = rand(0, 100); // Случайное число от 0 до 100
|
||
if(chance < randomRoll) return ctx.editMessageText('Вы были замечены во время кражи.');
|
||
let randPhone = rand(1,10)
|
||
if (property.mobile.name) {
|
||
let dirtyMoney = Math.round(phones[randPhone].price/100*70)
|
||
character.dirtymoney += dirtyMoney
|
||
return await ctx.reply(`Вы сбыли украденный ${phones[randPhone].name} за Ð${dirtyMoney}`)
|
||
}
|
||
property.mobile = phones[randPhone]
|
||
await character.save()
|
||
await property.save()
|
||
return ctx.editMessageText(`Вы успешно украли ${phones[randPhone].name} из кармана.`)
|
||
});
|
||
|
||
steal.action(`POCKET_WALLET`, async (ctx) => {
|
||
ctx.editMessageText('В бумажнике обнаружено', Markup.inlineKeyboard([
|
||
[
|
||
{text: 'Деньги', callback_data: `MONEY_IN_WALLET`},
|
||
{text: 'Карточка', callback_data: `CARD_IN_WALLET`}
|
||
]
|
||
]))
|
||
});
|
||
|
||
steal.action(`MONEY_IN_WALLET`, async (ctx) => {
|
||
//let user = await UserModel.findByPk(ctx.from.id)
|
||
let character = await CharacterModel.findByPk(ctx.from.id);
|
||
// Расчёт шанса на успешную кражу
|
||
let baseChance = 20; // Базовый шанс
|
||
let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума".
|
||
let randomRoll = rand(0, 100); // Случайное число от 0 до 100
|
||
if(chance < randomRoll) return ctx.editMessageText('Вы были замечены во время кражи.');
|
||
let moneyIn = rand(1000, 10000)
|
||
character.dirtymoney += moneyIn
|
||
character.save()
|
||
return ctx.editMessageText(`Вы успешно украли Ð${spaces(moneyIn)} из бумажника.`)
|
||
});
|
||
|
||
steal.action(`CARD_IN_WALLET`, async (ctx) => {
|
||
//let user = await UserModel.findByPk(ctx.from.id)
|
||
let character = await CharacterModel.findByPk(ctx.from.id);
|
||
let baseChance = 20; // Базовый шанс
|
||
let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума".
|
||
let randomRoll = rand(0, 100); // Случайное число от 0 до 100
|
||
if(chance < randomRoll) return ctx.editMessageText('Вы были замечены во время кражи.');
|
||
character.stealedcards += 1
|
||
character.save()
|
||
return ctx.editMessageText(`Вы успешно украли 💳 из бумажника.`)
|
||
});
|
||
|
||
steal.action(`POCKET_BAG`, async (ctx) => {
|
||
//let user = await UserModel.findByPk(ctx.from.id)
|
||
let character = await CharacterModel.findByPk(ctx.from.id);
|
||
let baseChance = 20; // Базовый шанс
|
||
let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума".
|
||
let randomRoll = rand(0, 100); // Случайное число от 0 до 100
|
||
if(chance < randomRoll) return ctx.editMessageText('Вы были замечены во время кражи.');
|
||
let times = rand(2,20)
|
||
let moneyIn = 0
|
||
let text = ``
|
||
let values = 0
|
||
|
||
for(i=1; i<=times; i++){
|
||
randomize = rand(1,100)
|
||
switch(randomize) {
|
||
case 2:
|
||
values = rand(10000, 50000)
|
||
moneyIn += values
|
||
text += `+ Ð${spaces(values)}\n`
|
||
break;
|
||
case 7:
|
||
values = rand(10000, 100000)
|
||
moneyIn += values
|
||
text += `+ Ð${spaces(values)}\n`
|
||
break;
|
||
default:
|
||
values = rand(100, 3000)
|
||
moneyIn += values
|
||
text += `+ Ð${spaces(values)}\n`
|
||
break;
|
||
}
|
||
}
|
||
character.dirtymoney += moneyIn
|
||
character.save()
|
||
return ctx.editMessageText(`Вы успешно украли сумку и сбыли все ценности из нее:\n${text}\nОбщий куш: Ð${spaces(moneyIn)}`)
|
||
});
|
||
|
||
steal.leave((ctx) => {
|
||
console.log('Завершено');
|
||
});
|
||
|
||
module.exports = steal |