Achivement System

This commit is contained in:
2025-09-05 17:56:23 +02:00
parent a78a8dc3ce
commit 61d5ef2e6f
11 changed files with 2195 additions and 7 deletions

86
scripts/setup_cron.js Normal file
View File

@@ -0,0 +1,86 @@
const { exec } = require('child_process');
const path = require('path');
// Cron job setup for daily achievements
const cronJob = {
// Run daily at 23:59 (end of day)
schedule: '59 23 * * *',
command: `cd ${__dirname} && node daily_achievements.js >> /var/log/ninjaserver_achievements.log 2>&1`,
description: 'Daily achievement check for Ninja Cross Parkour'
};
function setupCronJob() {
console.log('🕐 Setting up daily achievement cron job...');
// Create cron job entry
const cronEntry = `${cronJob.schedule} ${cronJob.command}`;
// Add to crontab
exec(`(crontab -l 2>/dev/null; echo "${cronEntry}") | crontab -`, (error, stdout, stderr) => {
if (error) {
console.error('❌ Error setting up cron job:', error);
return;
}
if (stderr) {
console.error('⚠️ Cron job warning:', stderr);
}
console.log('✅ Cron job setup successfully!');
console.log(`📅 Schedule: ${cronJob.schedule}`);
console.log(`🔧 Command: ${cronJob.command}`);
console.log('📝 Logs will be written to: /var/log/ninjaserver_achievements.log');
// Show current crontab
exec('crontab -l', (error, stdout, stderr) => {
if (!error) {
console.log('\n📋 Current crontab:');
console.log(stdout);
}
});
});
}
function removeCronJob() {
console.log('🗑️ Removing daily achievement cron job...');
exec('crontab -l | grep -v "daily_achievements.js" | crontab -', (error, stdout, stderr) => {
if (error) {
console.error('❌ Error removing cron job:', error);
return;
}
console.log('✅ Cron job removed successfully!');
});
}
// Command line interface
if (require.main === module) {
const command = process.argv[2];
switch (command) {
case 'setup':
setupCronJob();
break;
case 'remove':
removeCronJob();
break;
case 'status':
exec('crontab -l | grep daily_achievements', (error, stdout, stderr) => {
if (stdout) {
console.log('✅ Cron job is active:');
console.log(stdout);
} else {
console.log('❌ No cron job found');
}
});
break;
default:
console.log('Usage: node setup_cron.js [setup|remove|status]');
console.log(' setup - Add daily achievement cron job');
console.log(' remove - Remove daily achievement cron job');
console.log(' status - Check if cron job is active');
}
}
module.exports = { setupCronJob, removeCronJob };