v0.3
Новая игра в казино Переделаны слоты, установлено ограничение на клики Максимальный уровень увеличен до 100 К бонусу добавлен множитель уровня К работе добавлен множитель уровня
This commit is contained in:
parent
e02402a394
commit
4eb6b83f36
250
bot.js
250
bot.js
@ -319,8 +319,7 @@ bot.action(/{"type": "business_invite_(accept|refuse)"*/, commands.inviteAction)
|
|||||||
bot.command('report', commands.report)
|
bot.command('report', commands.report)
|
||||||
|
|
||||||
bot.hears('🎰 Слоты', commands.slotsMenu)
|
bot.hears('🎰 Слоты', commands.slotsMenu)
|
||||||
|
// bot.action(/slots(1000|5000|25000|50000|100000)/, commands.slotsRun)
|
||||||
bot.action(/slots(1000|5000|25000|50000|100000)/, commands.slotsRun)
|
|
||||||
|
|
||||||
bot.hears('Помощь', async (ctx) => {
|
bot.hears('Помощь', async (ctx) => {
|
||||||
return await ctx.replyWithMarkdownV2(`• [Функционал](https://telegra.ph/CampFire-Bot-Info-09-25)\n• [Правила](https://telegra.ph/PRAVILA-BOTA-09-25)`, {
|
return await ctx.replyWithMarkdownV2(`• [Функционал](https://telegra.ph/CampFire-Bot-Info-09-25)\n• [Правила](https://telegra.ph/PRAVILA-BOTA-09-25)`, {
|
||||||
@ -1326,6 +1325,253 @@ bot.command('force_mat', async (ctx) => {
|
|||||||
})
|
})
|
||||||
/////////////////////////////////////Enterprise Update end//////////////////////////////////////////////////
|
/////////////////////////////////////Enterprise Update end//////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/////////////////////////////////////Casino Update//////////////////////////////////////////////////
|
||||||
|
const spinSlots = async (ctx, bet, user) => {
|
||||||
|
const slotIcons = ['🔥', '⚡', '⭐', '💀']; // Иконки для слотов
|
||||||
|
const spinSpeed = 500; // Скорость анимации (мс)
|
||||||
|
const spinRounds = 8; // Количество вращений
|
||||||
|
|
||||||
|
let slotMessage = await ctx.reply('🎰 Слот-машина крутится...');
|
||||||
|
|
||||||
|
// Генерация случайного отображения для анимации
|
||||||
|
const getRandomIcons = () => {
|
||||||
|
return `${slotIcons[Math.floor(Math.random() * slotIcons.length)]} | ${slotIcons[Math.floor(Math.random() * slotIcons.length)]} | ${slotIcons[Math.floor(Math.random() * slotIcons.length)]}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Анимация вращения
|
||||||
|
for (let i = 0; i < spinRounds; i++) {
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, spinSpeed));
|
||||||
|
const uniqueTag = `[${Date.now()}]`; // Уникальный тег для предотвращения ошибок Telegram
|
||||||
|
await ctx.telegram.editMessageText(ctx.chat.id, slotMessage.message_id, null, `🎰 ${getRandomIcons()} ${uniqueTag}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Определяем результат игры
|
||||||
|
const winMultiplier = determineWin();
|
||||||
|
const finalIcons = generateVisualResult(winMultiplier, slotIcons);
|
||||||
|
|
||||||
|
// Вычисляем выигрыш/проигрыш
|
||||||
|
let resultMessage = `🎰 Итог:\n${finalIcons.join(' | ')}\n\n`;
|
||||||
|
if (winMultiplier > 0) {
|
||||||
|
const winnings = bet * winMultiplier;
|
||||||
|
user.money += winnings;
|
||||||
|
await user.save();
|
||||||
|
resultMessage += `🎉 Вы выиграли ₽${spaces(winnings)}! Множитель: x${winMultiplier}`;
|
||||||
|
} else {
|
||||||
|
user.money -= bet;
|
||||||
|
await user.save();
|
||||||
|
resultMessage += `💔 Вы проиграли ₽${spaces(bet)}. Попробуйте ещё раз!`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Финальный результат
|
||||||
|
await ctx.telegram.editMessageText(ctx.chat.id, slotMessage.message_id, null, resultMessage);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Функция для определения выигрыша
|
||||||
|
const determineWin = () => {
|
||||||
|
const probabilities = {
|
||||||
|
25: 0.01, // 1% шанс на x25
|
||||||
|
10: 0.03, // 3% шанс на x10
|
||||||
|
5: 0.06, // 6% шанс на x5
|
||||||
|
2: 0.1, // 10% шанс на x2
|
||||||
|
0: 0.8, // 80% шанс на проигрыш
|
||||||
|
};
|
||||||
|
|
||||||
|
const random = Math.random();
|
||||||
|
let cumulativeProbability = 0;
|
||||||
|
|
||||||
|
for (const [multiplier, probability] of Object.entries(probabilities)) {
|
||||||
|
cumulativeProbability += probability;
|
||||||
|
if (random < cumulativeProbability) {
|
||||||
|
return parseInt(multiplier, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0; // По умолчанию проигрыш
|
||||||
|
};
|
||||||
|
|
||||||
|
// Генерация визуального результата на основе выигрыша
|
||||||
|
const generateVisualResult = (multiplier, slotIcons) => {
|
||||||
|
if (multiplier === 25) return ['🔥', '🔥', '🔥'];
|
||||||
|
if (multiplier === 10) return ['⚡', '⚡', '⚡'];
|
||||||
|
if (multiplier === 5) return ['⭐', '⭐', '⭐'];
|
||||||
|
if (multiplier === 2) return ['💀', '💀', '💀'];
|
||||||
|
return [
|
||||||
|
slotIcons[Math.floor(Math.random() * slotIcons.length)],
|
||||||
|
slotIcons[Math.floor(Math.random() * slotIcons.length)],
|
||||||
|
slotIcons[Math.floor(Math.random() * slotIcons.length)],
|
||||||
|
]; // Проигрыш: случайные иконки
|
||||||
|
};
|
||||||
|
|
||||||
|
// Основная команда слотов
|
||||||
|
bot.action(/slots\d+/, async (ctx) => {
|
||||||
|
try {
|
||||||
|
const data = ctx.update.callback_query.data;
|
||||||
|
const bet = parseInt(data.replace('slots', ''), 10);
|
||||||
|
|
||||||
|
const user = await UserModel.findByPk(ctx.from.id);
|
||||||
|
|
||||||
|
// Проверка на текущую игру
|
||||||
|
if (user.isPlayingCasino) {
|
||||||
|
return ctx.answerCbQuery('⏳ Ваша ставка уже обрабатывается. Подождите!', { show_alert: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!user || user.money < bet) {
|
||||||
|
return ctx.answerCbQuery('💸 У вас недостаточно средств для ставки.', { show_alert: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
const timer = user.slottime;
|
||||||
|
const cooldown = utils.setCooldown(user, 10, timer);
|
||||||
|
if (user.slottime > cooldown.currentTime) {
|
||||||
|
return ctx.answerCbQuery('📛 Слоты будут доступны через пару секунд.', { show_alert: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Установить флаг игры
|
||||||
|
user.isPlayingCasino = true;
|
||||||
|
user.slottime = cooldown.endTime;
|
||||||
|
await user.save();
|
||||||
|
|
||||||
|
// Запуск игры
|
||||||
|
await spinSlots(ctx, bet, user);
|
||||||
|
|
||||||
|
// Сброс флага игры
|
||||||
|
user.isPlayingCasino = false;
|
||||||
|
await user.save();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Ошибка при игре в слоты:', error);
|
||||||
|
return ctx.reply('Произошла ошибка. Попробуйте снова.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Функция для форматирования чисел
|
||||||
|
const spaces = (number) => {
|
||||||
|
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bot.hears('🎰 Рулетка', async (ctx) => {
|
||||||
|
const user = await UserModel.findByPk(ctx.from.id);
|
||||||
|
if (user.money <= 0) {
|
||||||
|
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, `У вас недостаточно средств для игры.`, { show_alert: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Инициализация ставки через ctx.session
|
||||||
|
if (!ctx.session.betAmount) {
|
||||||
|
ctx.session.betAmount = 10000; // Начальная ставка
|
||||||
|
}
|
||||||
|
|
||||||
|
// Вспомогательная функция для генерации случайного числа рулетки
|
||||||
|
const spinRoulette = () => {
|
||||||
|
// Все нечетные числа (красные)
|
||||||
|
const redNumbers = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35];
|
||||||
|
// Все четные числа (черные)
|
||||||
|
const blackNumbers = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36];
|
||||||
|
|
||||||
|
// Рулетка: делаем случайный выбор
|
||||||
|
const randomIndex = Math.floor(Math.random() * 37); // от 0 до 36
|
||||||
|
return randomIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Кнопки для выбора ставки
|
||||||
|
const buttons = [
|
||||||
|
[{ text: 'Красный', callback_data: 'red' }],
|
||||||
|
[{ text: 'Черный', callback_data: 'black' }],
|
||||||
|
[{ text: 'Выбрать номер', callback_data: 'choose_number' }],
|
||||||
|
[{ text: `Ставка: ₽${ctx.session.betAmount}`, callback_data: 'no_action' }],
|
||||||
|
[
|
||||||
|
{ text: '⬆️ Повысить ставку', callback_data: 'increase_bet' },
|
||||||
|
{ text: '⬇️ Понизить ставку', callback_data: 'decrease_bet' }
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
const message = `🎰 Добро пожаловать в рулетку!\nВыберите ставку: Красный, Черный или Номер (0-36).`;
|
||||||
|
|
||||||
|
await ctx.reply(message, Markup.inlineKeyboard(buttons));
|
||||||
|
|
||||||
|
// Обработчик для изменения ставки
|
||||||
|
bot.action('increase_bet', async (ctx) => {
|
||||||
|
if (ctx.session.betAmount < 50000) {
|
||||||
|
ctx.session.betAmount += 10000; // Увеличиваем ставку на 10000
|
||||||
|
const buttons = [
|
||||||
|
[{ text: 'Красный', callback_data: 'red' }],
|
||||||
|
[{ text: 'Черный', callback_data: 'black' }],
|
||||||
|
[{ text: 'Выбрать номер', callback_data: 'choose_number' }],
|
||||||
|
[{ text: `Ставка: ₽${ctx.session.betAmount}`, callback_data: 'no_action' }],
|
||||||
|
[
|
||||||
|
{ text: '⬆️ Повысить ставку', callback_data: 'increase_bet' },
|
||||||
|
{ text: '⬇️ Понизить ставку', callback_data: 'decrease_bet' }
|
||||||
|
]
|
||||||
|
];
|
||||||
|
await ctx.editMessageText(`🎰 Добро пожаловать в рулетку!\nВыберите ставку: Красный, Черный или Номер (0-36).`, Markup.inlineKeyboard(buttons));
|
||||||
|
} else {
|
||||||
|
await ctx.reply('Максимальная ставка - ₽50000');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
bot.action('decrease_bet', async (ctx) => {
|
||||||
|
if (ctx.session.betAmount > 10000) {
|
||||||
|
ctx.session.betAmount -= 10000; // Уменьшаем ставку на 10000
|
||||||
|
const buttons = [
|
||||||
|
[{ text: 'Красный', callback_data: 'red' }],
|
||||||
|
[{ text: 'Черный', callback_data: 'black' }],
|
||||||
|
[{ text: 'Выбрать номер', callback_data: 'choose_number' }],
|
||||||
|
[{ text: `Ставка: ₽${ctx.session.betAmount}`, callback_data: 'no_action' }],
|
||||||
|
[
|
||||||
|
{ text: '⬆️ Повысить ставку', callback_data: 'increase_bet' },
|
||||||
|
{ text: '⬇️ Понизить ставку', callback_data: 'decrease_bet' }
|
||||||
|
]
|
||||||
|
];
|
||||||
|
await ctx.editMessageText(`🎰 Добро пожаловать в рулетку!\nВыберите ставку: Красный, Черный или Номер (0-36).`, Markup.inlineKeyboard(buttons));
|
||||||
|
} else {
|
||||||
|
await ctx.reply('Минимальная ставка - ₽10000');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
bot.action(['red', 'black', 'choose_number'], async (ctx) => {
|
||||||
|
const data = ctx.update.callback_query.data;
|
||||||
|
if (user.money < ctx.session.betAmount) {
|
||||||
|
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, `У вас недостаточно средств для этой ставки.`, { show_alert: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
let winMultiplier = 0;
|
||||||
|
let betResult = '';
|
||||||
|
const spinResult = spinRoulette();
|
||||||
|
|
||||||
|
if (data === 'red') {
|
||||||
|
if ([1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35].includes(spinResult)) {
|
||||||
|
winMultiplier = 2;
|
||||||
|
betResult = `Вы выиграли! 🎉 Красный! Множитель: 2x`;
|
||||||
|
} else {
|
||||||
|
betResult = `Вы проиграли. Черный номер. 😢`;
|
||||||
|
}
|
||||||
|
} else if (data === 'black') {
|
||||||
|
if ([0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36].includes(spinResult)) {
|
||||||
|
winMultiplier = 2;
|
||||||
|
betResult = `Вы выиграли! 🎉 Черный! Множитель: 2x`;
|
||||||
|
} else {
|
||||||
|
betResult = `Вы проиграли. Красный номер. 😢`;
|
||||||
|
}
|
||||||
|
} else if (data === 'choose_number') {
|
||||||
|
const number = Math.floor(Math.random() * 37); // Игрок выбирает случайное число
|
||||||
|
if (spinResult === number) {
|
||||||
|
winMultiplier = 35; // Огромный выигрыш для точного угадывания
|
||||||
|
betResult = `Вы угадали номер! 🎉 Номер ${number}! Множитель: 35x`;
|
||||||
|
} else {
|
||||||
|
betResult = `Вы не угадали номер. Выпал номер ${spinResult}. 😢`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Считаем выигрыш
|
||||||
|
let prize = ctx.session.betAmount * winMultiplier;
|
||||||
|
user.money += prize - ctx.session.betAmount; // Вычитаем ставку, если выиграли
|
||||||
|
await user.save();
|
||||||
|
|
||||||
|
// Отправляем результат
|
||||||
|
return await ctx.telegram.answerCbQuery(ctx.callbackQuery.id, betResult, { show_alert: true });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////Casino Update end//////////////////////////////////////////////////////
|
||||||
|
|
||||||
/////////////////////////////////////Admin Commands//////////////////////////////////////////////////
|
/////////////////////////////////////Admin Commands//////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ module.exports = async (ctx) => {
|
|||||||
let world = await WorldModel.findByPk(1)
|
let world = await WorldModel.findByPk(1)
|
||||||
let text = ``;
|
let text = ``;
|
||||||
let money = [100, 200, 300, 400, 500, 1000].random();
|
let money = [100, 200, 300, 400, 500, 1000].random();
|
||||||
|
money *= user.level
|
||||||
if (user.level >= 5) {
|
if (user.level >= 5) {
|
||||||
money += money;
|
money += money;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ module.exports = async (ctx) => {
|
|||||||
return await ctx.reply('🏯 Добро пожаловать в казино "杜明"\n', Markup
|
return await ctx.reply('🏯 Добро пожаловать в казино "杜明"\n', Markup
|
||||||
.keyboard([
|
.keyboard([
|
||||||
['🎰 Слоты'],
|
['🎰 Слоты'],
|
||||||
|
['🎰 Рулетка'],
|
||||||
['▶️ Меню']
|
['▶️ Меню']
|
||||||
])
|
])
|
||||||
.resize()
|
.resize()
|
||||||
|
@ -26,15 +26,15 @@ module.exports = async (ctx) => {
|
|||||||
switch (user.job) {
|
switch (user.job) {
|
||||||
case 1:
|
case 1:
|
||||||
if (user.jobcheck >= 4) {
|
if (user.jobcheck >= 4) {
|
||||||
let paydayfee = job.salary / 100 * world.transactionfee
|
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||||
let payday = job.salary - paydayfee
|
let payday = job.salary * user.level - paydayfee
|
||||||
world.balance -= payday
|
world.balance -= payday
|
||||||
user.money += payday
|
user.money += payday
|
||||||
giveExp(user, jobExp)
|
giveExp(user, jobExp)
|
||||||
user.jobcheck = 0
|
user.jobcheck = 0
|
||||||
user.save()
|
user.save()
|
||||||
world.save()
|
world.save()
|
||||||
return ctx.reply(`👔 Вы отработали смену дворника. \n🧾 Расчетный лист: \n⏳ Отработано часов: 4/4 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
|
return ctx.reply(`👔 Вы отработали смену дворника. \n🧾 Расчетный лист: \n⏳ Отработано часов: 4/4 \n💸 Оклад: ₽${job.salary * user.level} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
|
||||||
} else {
|
} else {
|
||||||
user.save()
|
user.save()
|
||||||
return ctx.reply(`👔 Вы подмели дворы. \n⏳ Отработано часов: ${user.jobcheck}/4`)
|
return ctx.reply(`👔 Вы подмели дворы. \n⏳ Отработано часов: ${user.jobcheck}/4`)
|
||||||
@ -42,15 +42,15 @@ module.exports = async (ctx) => {
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (user.jobcheck >= 2) {
|
if (user.jobcheck >= 2) {
|
||||||
let paydayfee = job.salary / 100 * world.transactionfee
|
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||||
let payday = job.salary - paydayfee
|
let payday = job.salary * user.level - paydayfee
|
||||||
world.balance -= payday
|
world.balance -= payday
|
||||||
user.money += payday
|
user.money += payday
|
||||||
giveExp(user, jobExp)
|
giveExp(user, jobExp)
|
||||||
user.jobcheck = 0
|
user.jobcheck = 0
|
||||||
user.save()
|
user.save()
|
||||||
world.save()
|
world.save()
|
||||||
return ctx.reply(`👔 Вы отработали смену промоутера. \n🧾 Расчетный лист: \n⏳ Отработано часов: 2/2 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
|
return ctx.reply(`👔 Вы отработали смену промоутера. \n🧾 Расчетный лист: \n⏳ Отработано часов: 2/2 \n💸 Оклад: ₽${job.salary * user.level} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
|
||||||
} else {
|
} else {
|
||||||
user.save()
|
user.save()
|
||||||
return ctx.reply(`👔 Вы раздавали листовки целый час. \n⏳ Отработано часов: ${user.jobcheck}/2`)
|
return ctx.reply(`👔 Вы раздавали листовки целый час. \n⏳ Отработано часов: ${user.jobcheck}/2`)
|
||||||
@ -58,8 +58,8 @@ module.exports = async (ctx) => {
|
|||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (user.jobcheck >= 4) {
|
if (user.jobcheck >= 4) {
|
||||||
let paydayfee = job.salary / 100 * world.transactionfee
|
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||||
let payday = job.salary - paydayfee
|
let payday = job.salary * user.level - paydayfee
|
||||||
world.balance -= payday
|
world.balance -= payday
|
||||||
let tips = [50, 100, 200, 500, 1000].random()
|
let tips = [50, 100, 200, 500, 1000].random()
|
||||||
user.money += tips
|
user.money += tips
|
||||||
@ -68,7 +68,7 @@ module.exports = async (ctx) => {
|
|||||||
user.jobcheck = 0
|
user.jobcheck = 0
|
||||||
user.save()
|
user.save()
|
||||||
world.save()
|
world.save()
|
||||||
return ctx.reply(`👔 Вы отработали смену официанта. \n🧾 Расчетный лист: \n⏳ Отработано часов: 4/4 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday} \n💰 Получено чаевых: ₽${tips}`)
|
return ctx.reply(`👔 Вы отработали смену официанта. \n🧾 Расчетный лист: \n⏳ Отработано часов: 4/4 \n💸 Оклад: ₽${job.salary * user.level} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday} \n💰 Получено чаевых: ₽${tips}`)
|
||||||
} else {
|
} else {
|
||||||
let tips = [50, 100, 200, 500, 1000].random()
|
let tips = [50, 100, 200, 500, 1000].random()
|
||||||
user.money += tips
|
user.money += tips
|
||||||
@ -78,8 +78,8 @@ module.exports = async (ctx) => {
|
|||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (user.jobcheck >= 5) {
|
if (user.jobcheck >= 5) {
|
||||||
let paydayfee = job.salary / 100 * world.transactionfee
|
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||||
let payday = job.salary - paydayfee
|
let payday = job.salary * user.level - paydayfee
|
||||||
world.balance -= payday
|
world.balance -= payday
|
||||||
let tips = [50, 100, 200, 300, 500, 1000, 2000].random()
|
let tips = [50, 100, 200, 300, 500, 1000, 2000].random()
|
||||||
world.balance -= tips
|
world.balance -= tips
|
||||||
@ -89,7 +89,7 @@ module.exports = async (ctx) => {
|
|||||||
user.jobcheck = 0
|
user.jobcheck = 0
|
||||||
user.save()
|
user.save()
|
||||||
world.save()
|
world.save()
|
||||||
return ctx.reply(`👔 Вы отработали смену бармена. \n🧾 Расчетный лист: \n⏳ Отработано часов: 5/5 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday} \n💰 Получено чаевых: ₽${tips}`)
|
return ctx.reply(`👔 Вы отработали смену бармена. \n🧾 Расчетный лист: \n⏳ Отработано часов: 5/5 \n💸 Оклад: ₽${job.salary * user.level} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday} \n💰 Получено чаевых: ₽${tips}`)
|
||||||
} else {
|
} else {
|
||||||
let tips = [50, 100, 200, 300, 500, 1000, 2000].random()
|
let tips = [50, 100, 200, 300, 500, 1000, 2000].random()
|
||||||
world.balance -= tips
|
world.balance -= tips
|
||||||
@ -101,15 +101,15 @@ module.exports = async (ctx) => {
|
|||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (user.jobcheck >= 5) {
|
if (user.jobcheck >= 5) {
|
||||||
let paydayfee = job.salary / 100 * world.transactionfee
|
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||||
let payday = job.salary - paydayfee
|
let payday = job.salary * user.level - paydayfee
|
||||||
world.balance -= payday
|
world.balance -= payday
|
||||||
user.money += payday
|
user.money += payday
|
||||||
giveExp(user, jobExp)
|
giveExp(user, jobExp)
|
||||||
user.jobcheck = 0
|
user.jobcheck = 0
|
||||||
user.save()
|
user.save()
|
||||||
world.save()
|
world.save()
|
||||||
return ctx.reply(`👔 Вы отработали смену кассира. \n🧾 Расчетный лист: \n⏳ Отработано часов: 5/5 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
|
return ctx.reply(`👔 Вы отработали смену кассира. \n🧾 Расчетный лист: \n⏳ Отработано часов: 5/5 \n💸 Оклад: ₽${job.salary * user.level} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
|
||||||
} else {
|
} else {
|
||||||
user.save()
|
user.save()
|
||||||
return ctx.reply(`👔 Вы целый час обслуживали покупателей и кричали: "Гаааляяя, отмена!". \n⏳ Отработано часов: ${user.jobcheck}/5`)
|
return ctx.reply(`👔 Вы целый час обслуживали покупателей и кричали: "Гаааляяя, отмена!". \n⏳ Отработано часов: ${user.jobcheck}/5`)
|
||||||
@ -117,8 +117,8 @@ module.exports = async (ctx) => {
|
|||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
if (user.jobcheck >= 6) {
|
if (user.jobcheck >= 6) {
|
||||||
let paydayfee = job.salary / 100 * world.transactionfee
|
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||||
let payday = job.salary - paydayfee
|
let payday = job.salary * user.level - paydayfee
|
||||||
let stealed = [{
|
let stealed = [{
|
||||||
name: "Помада",
|
name: "Помада",
|
||||||
price: 200
|
price: 200
|
||||||
@ -167,7 +167,7 @@ module.exports = async (ctx) => {
|
|||||||
user.jobcheck = 0
|
user.jobcheck = 0
|
||||||
user.save()
|
user.save()
|
||||||
world.save()
|
world.save()
|
||||||
return ctx.reply(`👔 Вы отработали смену в Диких Ягодах. \n🧾 Расчетный лист: \n⏳ Отработано часов: 6/6 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday} \n💰 Вы украли и продали со склада: ${stealed.name} (₽${stealed.price})`)
|
return ctx.reply(`👔 Вы отработали смену в Диких Ягодах. \n🧾 Расчетный лист: \n⏳ Отработано часов: 6/6 \n💸 Оклад: ₽${job.salary * user.level} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday} \n💰 Вы украли и продали со склада: ${stealed.name} (₽${stealed.price})`)
|
||||||
} else {
|
} else {
|
||||||
user.save()
|
user.save()
|
||||||
return ctx.reply(`👔 Вы целый час выдавали заказы в Диких Ягодах. \n⏳ Отработано часов: ${user.jobcheck}/6`)
|
return ctx.reply(`👔 Вы целый час выдавали заказы в Диких Ягодах. \n⏳ Отработано часов: ${user.jobcheck}/6`)
|
||||||
@ -175,15 +175,15 @@ module.exports = async (ctx) => {
|
|||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
if (user.jobcheck >= 6) {
|
if (user.jobcheck >= 6) {
|
||||||
let paydayfee = job.salary / 100 * world.transactionfee
|
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||||
let payday = job.salary - paydayfee
|
let payday = job.salary * user.level - paydayfee
|
||||||
world.balance -= payday
|
world.balance -= payday
|
||||||
user.money += payday
|
user.money += payday
|
||||||
giveExp(user, jobExp)
|
giveExp(user, jobExp)
|
||||||
user.jobcheck = 0
|
user.jobcheck = 0
|
||||||
user.save()
|
user.save()
|
||||||
world.save()
|
world.save()
|
||||||
return ctx.reply(`👔 Вы отработали смену слесарем. \n🧾 Расчетный лист: \n⏳ Отработано часов: 6/6 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
|
return ctx.reply(`👔 Вы отработали смену слесарем. \n🧾 Расчетный лист: \n⏳ Отработано часов: 6/6 \n💸 Оклад: ₽${job.salary * user.level} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
|
||||||
} else {
|
} else {
|
||||||
user.save()
|
user.save()
|
||||||
return ctx.reply(`👔 Вы целый час работали на заводе, вы молодец! \n⏳ Отработано часов: ${user.jobcheck}/6`)
|
return ctx.reply(`👔 Вы целый час работали на заводе, вы молодец! \n⏳ Отработано часов: ${user.jobcheck}/6`)
|
||||||
|
@ -27,6 +27,19 @@ module.exports = {
|
|||||||
mainChat : -1001895132127,
|
mainChat : -1001895132127,
|
||||||
adminList : [275416286],
|
adminList : [275416286],
|
||||||
promoTopicId: 1807,
|
promoTopicId: 1807,
|
||||||
expToUp : [0, 10, 20, 40, 60, 100, 250, 370, 450, 575, 666, 777, 860, 999, 1000, 1177, 1234, 1350, 1488, 1515, 1610],
|
expToUp: [
|
||||||
|
0, 10, 25, 50, 85, 130, 200, 300, 420, 560, 720, 910, 1130, 1380, 1670, 2000,
|
||||||
|
2370, 2790, 3250, 3750, 4300, 4900, 5550, 6250, 7000, 7800, 8650, 9550, 10500,
|
||||||
|
11500, 12550, 13650, 14800, 16000, 17350, 18750, 20200, 21700, 23250, 24850,
|
||||||
|
26500, 28200, 29950, 31750, 33600, 35500, 37450, 39450, 41500, 43600, 45750,
|
||||||
|
47950, 50200, 52500, 54850, 57250, 59700, 62200, 64750, 67350, 70000, 72700,
|
||||||
|
75450, 78250, 81100, 84000, 86950, 89950, 93000, 96100, 99250, 102450, 105700,
|
||||||
|
109000, 112350, 115750, 119200, 122700, 126250, 129850, 133500, 137200, 141000,
|
||||||
|
144850, 148750, 152700, 156700, 160750, 164850, 169000, 173200, 177450, 181750,
|
||||||
|
186100, 190500, 195000, 199550, 204150, 208800, 213500, 218250, 223050, 228000,
|
||||||
|
233000, 238050, 243150, 248300, 253500, 258750, 264050, 269400, 274800, 280250,
|
||||||
|
285750, 291300, 296900, 302550, 308250, 314000, 319800, 325650, 331550, 337500,
|
||||||
|
343500, 349550, 355650, 361800, 368000
|
||||||
|
],
|
||||||
topSym : ['🥇', '🥈', '🥉', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣', '🔟', '🌫️', '🌫️', '🌫️', '🌫️', '🌫️'],
|
topSym : ['🥇', '🥈', '🥉', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣', '🔟', '🌫️', '🌫️', '🌫️', '🌫️', '🌫️'],
|
||||||
}
|
}
|
@ -27,7 +27,8 @@ const User = sequelize.define('user', {
|
|||||||
worktime: {type: DataTypes.INTEGER, defaultValue: 0},
|
worktime: {type: DataTypes.INTEGER, defaultValue: 0},
|
||||||
slottime: {type: DataTypes.INTEGER, defaultValue: 0},
|
slottime: {type: DataTypes.INTEGER, defaultValue: 0},
|
||||||
shoprobcd: {type: DataTypes.INTEGER, defaultValue: 0},
|
shoprobcd: {type: DataTypes.INTEGER, defaultValue: 0},
|
||||||
pocketstealcd: {type: DataTypes.INTEGER, defaultValue: 0}
|
pocketstealcd: {type: DataTypes.INTEGER, defaultValue: 0},
|
||||||
|
isPlayingCasino: {type: DataTypes.BOOLEAN, defaultValue: false}
|
||||||
})
|
})
|
||||||
|
|
||||||
module.exports = User;
|
module.exports = User;
|
||||||
|
Loading…
Reference in New Issue
Block a user