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.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) => {
|
||||
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//////////////////////////////////////////////////
|
||||
|
||||
/////////////////////////////////////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//////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
@ -19,6 +19,7 @@ module.exports = async (ctx) => {
|
||||
let world = await WorldModel.findByPk(1)
|
||||
let text = ``;
|
||||
let money = [100, 200, 300, 400, 500, 1000].random();
|
||||
money *= user.level
|
||||
if (user.level >= 5) {
|
||||
money += money;
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ module.exports = async (ctx) => {
|
||||
return await ctx.reply('🏯 Добро пожаловать в казино "杜明"\n', Markup
|
||||
.keyboard([
|
||||
['🎰 Слоты'],
|
||||
['🎰 Рулетка'],
|
||||
['▶️ Меню']
|
||||
])
|
||||
.resize()
|
||||
|
@ -26,15 +26,15 @@ module.exports = async (ctx) => {
|
||||
switch (user.job) {
|
||||
case 1:
|
||||
if (user.jobcheck >= 4) {
|
||||
let paydayfee = job.salary / 100 * world.transactionfee
|
||||
let payday = job.salary - paydayfee
|
||||
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||
let payday = job.salary * user.level - paydayfee
|
||||
world.balance -= payday
|
||||
user.money += payday
|
||||
giveExp(user, jobExp)
|
||||
user.jobcheck = 0
|
||||
user.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 {
|
||||
user.save()
|
||||
return ctx.reply(`👔 Вы подмели дворы. \n⏳ Отработано часов: ${user.jobcheck}/4`)
|
||||
@ -42,15 +42,15 @@ module.exports = async (ctx) => {
|
||||
break;
|
||||
case 2:
|
||||
if (user.jobcheck >= 2) {
|
||||
let paydayfee = job.salary / 100 * world.transactionfee
|
||||
let payday = job.salary - paydayfee
|
||||
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||
let payday = job.salary * user.level - paydayfee
|
||||
world.balance -= payday
|
||||
user.money += payday
|
||||
giveExp(user, jobExp)
|
||||
user.jobcheck = 0
|
||||
user.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 {
|
||||
user.save()
|
||||
return ctx.reply(`👔 Вы раздавали листовки целый час. \n⏳ Отработано часов: ${user.jobcheck}/2`)
|
||||
@ -58,8 +58,8 @@ module.exports = async (ctx) => {
|
||||
break;
|
||||
case 3:
|
||||
if (user.jobcheck >= 4) {
|
||||
let paydayfee = job.salary / 100 * world.transactionfee
|
||||
let payday = job.salary - paydayfee
|
||||
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||
let payday = job.salary * user.level - paydayfee
|
||||
world.balance -= payday
|
||||
let tips = [50, 100, 200, 500, 1000].random()
|
||||
user.money += tips
|
||||
@ -68,7 +68,7 @@ module.exports = async (ctx) => {
|
||||
user.jobcheck = 0
|
||||
user.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 {
|
||||
let tips = [50, 100, 200, 500, 1000].random()
|
||||
user.money += tips
|
||||
@ -78,8 +78,8 @@ module.exports = async (ctx) => {
|
||||
break;
|
||||
case 4:
|
||||
if (user.jobcheck >= 5) {
|
||||
let paydayfee = job.salary / 100 * world.transactionfee
|
||||
let payday = job.salary - paydayfee
|
||||
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||
let payday = job.salary * user.level - paydayfee
|
||||
world.balance -= payday
|
||||
let tips = [50, 100, 200, 300, 500, 1000, 2000].random()
|
||||
world.balance -= tips
|
||||
@ -89,7 +89,7 @@ module.exports = async (ctx) => {
|
||||
user.jobcheck = 0
|
||||
user.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 {
|
||||
let tips = [50, 100, 200, 300, 500, 1000, 2000].random()
|
||||
world.balance -= tips
|
||||
@ -101,15 +101,15 @@ module.exports = async (ctx) => {
|
||||
break;
|
||||
case 5:
|
||||
if (user.jobcheck >= 5) {
|
||||
let paydayfee = job.salary / 100 * world.transactionfee
|
||||
let payday = job.salary - paydayfee
|
||||
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||
let payday = job.salary * user.level - paydayfee
|
||||
world.balance -= payday
|
||||
user.money += payday
|
||||
giveExp(user, jobExp)
|
||||
user.jobcheck = 0
|
||||
user.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 {
|
||||
user.save()
|
||||
return ctx.reply(`👔 Вы целый час обслуживали покупателей и кричали: "Гаааляяя, отмена!". \n⏳ Отработано часов: ${user.jobcheck}/5`)
|
||||
@ -117,8 +117,8 @@ module.exports = async (ctx) => {
|
||||
break;
|
||||
case 6:
|
||||
if (user.jobcheck >= 6) {
|
||||
let paydayfee = job.salary / 100 * world.transactionfee
|
||||
let payday = job.salary - paydayfee
|
||||
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||
let payday = job.salary * user.level - paydayfee
|
||||
let stealed = [{
|
||||
name: "Помада",
|
||||
price: 200
|
||||
@ -167,7 +167,7 @@ module.exports = async (ctx) => {
|
||||
user.jobcheck = 0
|
||||
user.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 {
|
||||
user.save()
|
||||
return ctx.reply(`👔 Вы целый час выдавали заказы в Диких Ягодах. \n⏳ Отработано часов: ${user.jobcheck}/6`)
|
||||
@ -175,15 +175,15 @@ module.exports = async (ctx) => {
|
||||
break;
|
||||
case 7:
|
||||
if (user.jobcheck >= 6) {
|
||||
let paydayfee = job.salary / 100 * world.transactionfee
|
||||
let payday = job.salary - paydayfee
|
||||
let paydayfee = job.salary * user.level / 100 * world.transactionfee
|
||||
let payday = job.salary * user.level - paydayfee
|
||||
world.balance -= payday
|
||||
user.money += payday
|
||||
giveExp(user, jobExp)
|
||||
user.jobcheck = 0
|
||||
user.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 {
|
||||
user.save()
|
||||
return ctx.reply(`👔 Вы целый час работали на заводе, вы молодец! \n⏳ Отработано часов: ${user.jobcheck}/6`)
|
||||
|
@ -27,6 +27,19 @@ module.exports = {
|
||||
mainChat : -1001895132127,
|
||||
adminList : [275416286],
|
||||
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️⃣', '🔟', '🌫️', '🌫️', '🌫️', '🌫️', '🌫️'],
|
||||
}
|
@ -27,7 +27,8 @@ const User = sequelize.define('user', {
|
||||
worktime: {type: DataTypes.INTEGER, defaultValue: 0},
|
||||
slottime: {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;
|
||||
|
Loading…
Reference in New Issue
Block a user