Code edit (1 edits merged)
Please save this source code
User prompt
center all buttons below the screen. increase horizontal space between rig boost and power boost buttons
User prompt
Increase the distance between the buttons below with the button next to it
User prompt
Bring the text and button of the settings button to the same level as the upgrade buttons and text. and space out all the buttons below
User prompt
increase the text and buttons of the upgrade buttons
User prompt
When we buy a power upgrade, the power will increase by 1 instead of 0.5
User prompt
Let our total power return to its original state after gaining prestige ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Show bitcoin value in more detail. Total power should be at most 50. Total power should increase by 0.5 with each purchase.
User prompt
add unlimited money option to settings screen
User prompt
add an admin panel and admin button to the game. have unlimited money option in the admin panel
User prompt
add an admin panel to the game. have unlimited money option in the admin panel
User prompt
Purchase a maximum of 100 rigs. After purchasing 100 rigs, the entire prestige screen will open. And after pressing the prestige button, the game will reset. Increase the prestige point by 1. Each prestige point will give 1.2x bitcoin earnings. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Make bitcoin earnings harder
User prompt
The settings screen should be in the middle of the home screen.
User prompt
settings screen not working
User prompt
Basic rig price should be 10 times more expensive
User prompt
The screen that opens on the settings page should appear on the top layer of the entire game. Make the buttons and text larger.
User prompt
Let there be 1 type of rig available for purchase. Let there be only one type of rig sold.
User prompt
Let the power meter be a little lower
User prompt
Reduce the gain of rigs, increase their effect on total power by 10 times.
User prompt
Increase the power values of rigs by 10 times
User prompt
The game is going very fast. Slow down the game to earn money and level up.
User prompt
Upgrades are a bit more expensive
User prompt
Bitcoin rigs' purchase prices and earnings should be a little more proportional
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'storage.rigCount = undefined;' Line Number: 536
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var BitcoinParticle = Container.expand(function () { var self = Container.call(this); var particle = self.attachAsset('bitcoinIcon', { anchorX: 0.5, anchorY: 0.5 }); self.startY = 0; self.targetY = 0; self.animate = function (startY, targetY) { self.y = startY; self.startY = startY; self.targetY = targetY; tween(self, { y: targetY, alpha: 0 }, { duration: 2000, easing: tween.easeOut, onFinish: function onFinish() { self.destroy(); } }); }; return self; }); var MiningRig = Container.expand(function (rigType) { var self = Container.call(this); // Rig properties based on type var rigStats = { basic: { hashRate: 0.05, powerCost: 0.05, price: 250 }, advanced: { hashRate: 0.4, powerCost: 0.15, price: 1500 }, professional: { hashRate: 2.25, powerCost: 0.5, price: 7500 } }; self.rigType = rigType || 'basic'; self.stats = rigStats[self.rigType]; self.lastMineTime = Date.now(); var rigGraphics = self.attachAsset('miningRig', { anchorX: 0.5, anchorY: 0.5 }); // Add visual indicator for rig type if (self.rigType === 'advanced') { rigGraphics.tint = 0x8e44ad; } else if (self.rigType === 'professional') { rigGraphics.tint = 0xe67e22; } // Mining animation self.animate = function () { tween(rigGraphics, { scaleX: 1.1, scaleY: 1.1 }, { duration: 500, easing: tween.easeInOut, onFinish: function onFinish() { tween(rigGraphics, { scaleX: 1.0, scaleY: 1.0 }, { duration: 500, easing: tween.easeInOut }); } }); }; self.update = function () { var currentTime = Date.now(); if (currentTime - self.lastMineTime >= 5000) { // Mine every 5 seconds self.lastMineTime = currentTime; self.animate(); // Generate bitcoin based on hash rate bitcoin += self.stats.hashRate; // Power usage is calculated globally, not per rig // Play mining sound occasionally if (Math.random() < 0.1 && settings.effectsEnabled) { LK.getSound('mining').play(); } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a1a }); /**** * Game Code ****/ // Game state variables var bitcoin = storage.bitcoin || 0; var cash = storage.cash || 1000; var miningRigs = []; var powerCapacity = storage.powerCapacity || 10; var coolingCapacity = storage.coolingCapacity || 10; var powerUsage = 0; var bitcoinPrice = 45000 + Math.random() * 10000; // Starting price between 45k-55k var lastPriceUpdate = Date.now(); // UI Elements var bitcoinDisplay = new Text2('₿ 0.00', { size: 50, fill: 0xF39C12 }); bitcoinDisplay.anchor.set(0, 0); bitcoinDisplay.x = 150; bitcoinDisplay.y = 50; LK.gui.topLeft.addChild(bitcoinDisplay); var cashDisplay = new Text2('$ 1,000', { size: 50, fill: 0x27AE60 }); cashDisplay.anchor.set(0, 0); cashDisplay.x = 150; cashDisplay.y = 120; LK.gui.topLeft.addChild(cashDisplay); var priceDisplay = new Text2('BTC: $45,000', { size: 40, fill: 0xFFFFFF }); priceDisplay.anchor.set(1, 0); LK.gui.topRight.addChild(priceDisplay); var powerDisplay = new Text2('Power: 0/10', { size: 35, fill: 0xE74C3C }); powerDisplay.anchor.set(0.5, 0); powerDisplay.y = 50; LK.gui.top.addChild(powerDisplay); // Power meter visual var powerMeterBg = LK.getAsset('powerMeter', { anchorX: 0.5, anchorY: 0.5 }); powerMeterBg.tint = 0x34495e; powerMeterBg.x = 1024; powerMeterBg.y = 120; game.addChild(powerMeterBg); var powerMeterFill = LK.getAsset('powerMeter', { anchorX: 0, anchorY: 0.5, scaleX: 0 }); powerMeterFill.x = powerMeterBg.x - powerMeterBg.width / 2; powerMeterFill.y = powerMeterBg.y; game.addChild(powerMeterFill); // Upgrade buttons var rigUpgradeButton = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5 }); rigUpgradeButton.x = 300; rigUpgradeButton.y = 2500; game.addChild(rigUpgradeButton); var rigUpgradeText = new Text2('Buy Mining Rig - $100', { size: 35, fill: 0xFFFFFF }); rigUpgradeText.anchor.set(0.5, 0.5); rigUpgradeText.x = rigUpgradeButton.x; rigUpgradeText.y = rigUpgradeButton.y; game.addChild(rigUpgradeText); var powerUpgradeButton = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5 }); powerUpgradeButton.x = 700; powerUpgradeButton.y = 2500; game.addChild(powerUpgradeButton); var powerUpgradeText = new Text2('Upgrade Power - $200', { size: 35, fill: 0xFFFFFF }); powerUpgradeText.anchor.set(0.5, 0.5); powerUpgradeText.x = powerUpgradeButton.x; powerUpgradeText.y = powerUpgradeButton.y; game.addChild(powerUpgradeText); var sellButton = LK.getAsset('sellButton', { anchorX: 0.5, anchorY: 0.5 }); sellButton.x = 1100; sellButton.y = 2500; game.addChild(sellButton); var sellButtonText = new Text2('Sell Bitcoin', { size: 35, fill: 0xFFFFFF }); sellButtonText.anchor.set(0.5, 0.5); sellButtonText.x = sellButton.x; sellButtonText.y = sellButton.y; game.addChild(sellButtonText); // Mining rig types and costs var rigTypes = ['basic', 'advanced', 'professional']; var currentRigType = 0; // Starting mining rigs if (storage.rigCount === undefined) { var startingRig = new MiningRig('basic'); startingRig.x = 400; startingRig.y = 400; game.addChild(startingRig); miningRigs.push(startingRig); storage.rigCount = 1; storage.rigTypes = ['basic']; } else { // Restore saved rigs var savedRigTypes = storage.rigTypes || []; for (var i = 0; i < storage.rigCount; i++) { var rigType = savedRigTypes[i] || 'basic'; var rig = new MiningRig(rigType); rig.x = 400 + i % 10 * 140; rig.y = 400 + Math.floor(i / 10) * 120; game.addChild(rig); miningRigs.push(rig); } } // Number formatting utility function formatNumber(num) { if (num < 1000) { return num.toFixed(0); } else if (num < 1000000) { return (num / 1000).toFixed(1) + 'K'; } else if (num < 1000000000) { return (num / 1000000).toFixed(1) + 'M'; } else if (num < 1000000000000) { return (num / 1000000000).toFixed(1) + 'B'; } else if (num < 1000000000000000) { return (num / 1000000000000).toFixed(1) + 'T'; } else if (num < 1000000000000000000) { return (num / 1000000000000000).toFixed(1) + 'Qa'; } else { return (num / 1000000000000000000).toFixed(1) + 'Qi'; } } // Utility functions function updateUI() { bitcoinDisplay.setText(texts[settings.language].bitcoin + ' ' + bitcoin.toFixed(2)); cashDisplay.setText(texts[settings.language].cash + ' ' + formatNumber(cash)); priceDisplay.setText(texts[settings.language].btcPrice + formatNumber(bitcoinPrice)); powerDisplay.setText(texts[settings.language].power + powerUsage.toFixed(1) + '/' + powerCapacity); // Update power meter var powerRatio = Math.min(powerUsage / powerCapacity, 1); powerMeterFill.scaleX = powerRatio; if (powerRatio > 0.9) { powerMeterFill.tint = 0xe74c3c; // Red when near capacity } else if (powerRatio > 0.7) { powerMeterFill.tint = 0xf39c12; // Orange when high } else { powerMeterFill.tint = 0x27ae60; // Green when safe } // Update upgrade button costs var rigType = rigTypes[currentRigType]; var baseCost = rigType === 'basic' ? 250 : rigType === 'advanced' ? 1500 : 7500; var rigCost = baseCost * Math.pow(1.3, Math.floor(miningRigs.length / 3)); var rigName = rigType.charAt(0).toUpperCase() + rigType.slice(1); rigUpgradeText.setText(texts[settings.language].buyRig + rigName + texts[settings.language].rig + formatNumber(rigCost)); var powerCost = 500 * Math.pow(1.5, (powerCapacity - 10) / 5); powerUpgradeText.setText(texts[settings.language].upgradePower + formatNumber(powerCost)); } function spawnBitcoinParticle() { if (Math.random() < 0.01) { // 1% chance per frame when mining var particle = new BitcoinParticle(); particle.x = 400 + Math.random() * 800; particle.animate(300, 150); game.addChild(particle); } } // Function to calculate total power requirement function calculateTotalPowerUsage() { var totalPower = 0; for (var i = 0; i < miningRigs.length; i++) { totalPower += miningRigs[i].stats.powerCost; } return totalPower; } // Settings state var settings = storage.settings || { musicEnabled: true, effectsEnabled: true, language: 'en' }; var showingSettings = false; // Language texts var texts = { en: { bitcoin: '₿', cash: '$', btcPrice: 'BTC: $', power: 'Power: ', buyRig: 'Buy ', rig: ' Rig - $', upgradePower: 'Upgrade Power - $', sellBitcoin: 'Sell Bitcoin', settings: 'Settings', music: 'Music', effects: 'Effects', language: 'Language', reset: 'Reset Game', on: 'ON', off: 'OFF', english: 'English', turkish: 'Turkish', close: 'Close' }, tr: { bitcoin: '₿', cash: '$', btcPrice: 'BTC: $', power: 'Güç: ', buyRig: 'Al ', rig: ' Cihaz - $', upgradePower: 'Güç Yükselt - $', sellBitcoin: 'Bitcoin Sat', settings: 'Ayarlar', music: 'Müzik', effects: 'Efektler', language: 'Dil', reset: 'Oyunu Sıfırla', on: 'AÇIK', off: 'KAPALI', english: 'İngilizce', turkish: 'Türkçe', close: 'Kapat' } }; // Settings button var settingsButton = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.8, scaleY: 0.8 }); settingsButton.x = 1400; settingsButton.y = 2500; game.addChild(settingsButton); var settingsButtonText = new Text2(texts[settings.language].settings, { size: 30, fill: 0xFFFFFF }); settingsButtonText.anchor.set(0.5, 0.5); settingsButtonText.x = settingsButton.x; settingsButtonText.y = settingsButton.y; game.addChild(settingsButtonText); // Settings panel var settingsPanel = new Container(); settingsPanel.visible = false; var panelBg = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5, scaleX: 4, scaleY: 8 }); panelBg.tint = 0x2c3e50; panelBg.x = 1024; panelBg.y = 1366; settingsPanel.addChild(panelBg); // Music toggle var musicToggle = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 0.8 }); musicToggle.x = 1024; musicToggle.y = 1100; settingsPanel.addChild(musicToggle); var musicText = new Text2(texts[settings.language].music + ': ' + (settings.musicEnabled ? texts[settings.language].on : texts[settings.language].off), { size: 40, fill: 0xFFFFFF }); musicText.anchor.set(0.5, 0.5); musicText.x = musicToggle.x; musicText.y = musicToggle.y; settingsPanel.addChild(musicText); // Effects toggle var effectsToggle = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 0.8 }); effectsToggle.x = 1024; effectsToggle.y = 1250; settingsPanel.addChild(effectsToggle); var effectsText = new Text2(texts[settings.language].effects + ': ' + (settings.effectsEnabled ? texts[settings.language].on : texts[settings.language].off), { size: 40, fill: 0xFFFFFF }); effectsText.anchor.set(0.5, 0.5); effectsText.x = effectsToggle.x; effectsText.y = effectsToggle.y; settingsPanel.addChild(effectsText); // Language toggle var languageToggle = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 0.8 }); languageToggle.x = 1024; languageToggle.y = 1400; settingsPanel.addChild(languageToggle); var languageText = new Text2(texts[settings.language].language + ': ' + (settings.language === 'en' ? texts[settings.language].english : texts[settings.language].turkish), { size: 40, fill: 0xFFFFFF }); languageText.anchor.set(0.5, 0.5); languageText.x = languageToggle.x; languageText.y = languageToggle.y; settingsPanel.addChild(languageText); // Reset button var resetButton = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 0.8 }); resetButton.tint = 0xe74c3c; resetButton.x = 1024; resetButton.y = 1550; settingsPanel.addChild(resetButton); var resetText = new Text2(texts[settings.language].reset, { size: 40, fill: 0xFFFFFF }); resetText.anchor.set(0.5, 0.5); resetText.x = resetButton.x; resetText.y = resetButton.y; settingsPanel.addChild(resetText); // Close button var closeButton = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 0.8 }); closeButton.x = 1024; closeButton.y = 1700; settingsPanel.addChild(closeButton); var closeText = new Text2(texts[settings.language].close, { size: 40, fill: 0xFFFFFF }); closeText.anchor.set(0.5, 0.5); closeText.x = closeButton.x; closeText.y = closeButton.y; settingsPanel.addChild(closeText); game.addChild(settingsPanel); // Function to update language texts function updateLanguageTexts() { settingsButtonText.setText(texts[settings.language].settings); musicText.setText(texts[settings.language].music + ': ' + (settings.musicEnabled ? texts[settings.language].on : texts[settings.language].off)); effectsText.setText(texts[settings.language].effects + ': ' + (settings.effectsEnabled ? texts[settings.language].on : texts[settings.language].off)); languageText.setText(texts[settings.language].language + ': ' + (settings.language === 'en' ? texts[settings.language].english : texts[settings.language].turkish)); resetText.setText(texts[settings.language].reset); closeText.setText(texts[settings.language].close); sellButtonText.setText(texts[settings.language].sellBitcoin); } // Settings button handler settingsButton.down = function (x, y, obj) { showingSettings = !showingSettings; settingsPanel.visible = showingSettings; if (settings.effectsEnabled) { LK.effects.flashObject(settingsButton, 0x3498db, 300); } }; // Music toggle handler musicToggle.down = function (x, y, obj) { settings.musicEnabled = !settings.musicEnabled; storage.settings = settings; updateLanguageTexts(); if (settings.effectsEnabled) { LK.effects.flashObject(musicToggle, 0x27ae60, 300); } }; // Effects toggle handler effectsToggle.down = function (x, y, obj) { settings.effectsEnabled = !settings.effectsEnabled; storage.settings = settings; updateLanguageTexts(); LK.effects.flashObject(effectsToggle, 0x27ae60, 300); }; // Language toggle handler languageToggle.down = function (x, y, obj) { settings.language = settings.language === 'en' ? 'tr' : 'en'; storage.settings = settings; updateLanguageTexts(); if (settings.effectsEnabled) { LK.effects.flashObject(languageToggle, 0x27ae60, 300); } }; // Reset button handler resetButton.down = function (x, y, obj) { // Clear all storage storage.bitcoin = 0; storage.cash = 1000; storage.powerCapacity = 10; delete storage.rigCount; delete storage.rigTypes; storage.settings = { musicEnabled: true, effectsEnabled: true, language: 'en' }; if (settings.effectsEnabled) { LK.effects.flashObject(resetButton, 0xe74c3c, 500); } // Show game over to restart LK.setTimeout(function () { LK.showGameOver(); }, 600); }; // Close button handler closeButton.down = function (x, y, obj) { showingSettings = false; settingsPanel.visible = false; if (settings.effectsEnabled) { LK.effects.flashObject(closeButton, 0x95a5a6, 300); } }; // Event handlers rigUpgradeButton.down = function (x, y, obj) { var rigType = rigTypes[currentRigType]; var baseCost = rigType === 'basic' ? 250 : rigType === 'advanced' ? 1500 : 7500; var rigCost = baseCost * Math.pow(1.3, Math.floor(miningRigs.length / 3)); var powerRequired = rigType === 'basic' ? 0.05 : rigType === 'advanced' ? 0.15 : 0.5; var currentTotalPower = calculateTotalPowerUsage(); if (cash >= rigCost && currentTotalPower + powerRequired <= powerCapacity) { cash -= rigCost; var newRig = new MiningRig(rigType); newRig.x = 400 + miningRigs.length % 10 * 140; newRig.y = 400 + Math.floor(miningRigs.length / 10) * 120; game.addChild(newRig); miningRigs.push(newRig); // Save rig types if (!storage.rigTypes) storage.rigTypes = []; storage.rigTypes.push(rigType); storage.rigCount = miningRigs.length; // Cycle to next rig type currentRigType = (currentRigType + 1) % rigTypes.length; if (settings.effectsEnabled) { LK.getSound('purchase').play(); // Flash effect LK.effects.flashObject(rigUpgradeButton, 0x27ae60, 300); } } }; powerUpgradeButton.down = function (x, y, obj) { var powerCost = 500 * Math.pow(1.5, (powerCapacity - 10) / 5); if (cash >= powerCost) { cash -= powerCost; powerCapacity += 5; storage.powerCapacity = powerCapacity; if (settings.effectsEnabled) { LK.getSound('purchase').play(); // Flash effect LK.effects.flashObject(powerUpgradeButton, 0x27ae60, 300); } } }; sellButton.down = function (x, y, obj) { if (bitcoin >= 0.01) { var sellAmount = bitcoin; var earnings = sellAmount * bitcoinPrice; cash += earnings; bitcoin = 0; if (settings.effectsEnabled) { LK.getSound('coin').play(); // Flash effect LK.effects.flashObject(sellButton, 0xf39c12, 500); } // Show earnings popup var earningsText = new Text2('+$' + formatNumber(earnings), { size: 60, fill: 0xF39C12 }); earningsText.anchor.set(0.5, 0.5); earningsText.x = sellButton.x; earningsText.y = sellButton.y - 100; game.addChild(earningsText); tween(earningsText, { y: earningsText.y - 100, alpha: 0 }, { duration: 2000, easing: tween.easeOut, onFinish: function onFinish() { earningsText.destroy(); } }); } }; game.update = function () { powerUsage = calculateTotalPowerUsage(); // Calculate total power usage from all rigs // Update bitcoin price periodically if (Date.now() - lastPriceUpdate > 5000) { // Every 5 seconds lastPriceUpdate = Date.now(); var priceChange = (Math.random() - 0.5) * 0.1; // ±5% change bitcoinPrice = Math.max(10000, bitcoinPrice * (1 + priceChange)); } // Spawn bitcoin particles when mining if (miningRigs.length > 0) { spawnBitcoinParticle(); } updateUI(); // Save progress periodically if (LK.ticks % 300 === 0) { // Every 5 seconds storage.bitcoin = bitcoin; storage.cash = cash; storage.powerCapacity = powerCapacity; storage.rigCount = miningRigs.length; // Save rig types var rigTypesToSave = []; for (var i = 0; i < miningRigs.length; i++) { rigTypesToSave.push(miningRigs[i].rigType); } storage.rigTypes = rigTypesToSave; } };
===================================================================
--- original.js
+++ change.js
@@ -36,19 +36,19 @@
var self = Container.call(this);
// Rig properties based on type
var rigStats = {
basic: {
- hashRate: 0.25,
+ hashRate: 0.05,
powerCost: 0.05,
price: 250
},
advanced: {
- hashRate: 2.0,
+ hashRate: 0.4,
powerCost: 0.15,
price: 1500
},
professional: {
- hashRate: 11.25,
+ hashRate: 2.25,
powerCost: 0.5,
price: 7500
}
};
@@ -85,10 +85,10 @@
});
};
self.update = function () {
var currentTime = Date.now();
- if (currentTime - self.lastMineTime >= 1000) {
- // Mine every second
+ if (currentTime - self.lastMineTime >= 5000) {
+ // Mine every 5 seconds
self.lastMineTime = currentTime;
self.animate();
// Generate bitcoin based on hash rate
bitcoin += self.stats.hashRate;
@@ -281,10 +281,10 @@
var powerCost = 500 * Math.pow(1.5, (powerCapacity - 10) / 5);
powerUpgradeText.setText(texts[settings.language].upgradePower + formatNumber(powerCost));
}
function spawnBitcoinParticle() {
- if (Math.random() < 0.05) {
- // 5% chance per frame when mining
+ if (Math.random() < 0.01) {
+ // 1% chance per frame when mining
var particle = new BitcoinParticle();
particle.x = 400 + Math.random() * 800;
particle.animate(300, 150);
game.addChild(particle);