User prompt
Her skın için görsel ekleyeceğim o yüzden her skın adına özel fotoğraf ekle
User prompt
Hataya sebep olan herşeyi kaldır
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push({' Line Number: 492
User prompt
Oyunu çökmesini sağlayan neyse onu kaldır
User prompt
Compilation error[L491]: Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed. Fiş this error add value for. Level deep
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push({' Line Number: 489
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push(invSkin);' Line Number: 491
User prompt
Oyun skın çıkınca durması envanteri açılabilir yap skinleri ordan satabilelim nadirliğe göre ve skine göre fiyatı artsın
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push(invSkin);' Line Number: 511
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push({' Line Number: 507
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push({' Line Number: 507
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'fill')' in or related to this line: 'skinPromptText.style.fill = RARITY_COLORS[previewSkin.rarity];' Line Number: 354
User prompt
Add skın prompt and assets
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push({' Line Number: 458
User prompt
Skın adlarını ekle ve çıkan skinin fotoğrafı için asset ekle
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push({' Line Number: 409
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push({' Line Number: 409
User prompt
En sondaki skini seçme ortadan al
User prompt
En sondaki skini seçme dönmeye devam etsin skinler rastgele bir yerde dur
User prompt
Sadece 10 skin olmasın
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push({' Line Number: 380
User prompt
After the safe is opened, I can open it again and choose the random prompt, not the prompt at the end of the safe
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push(invSkin);' Line Number: 379
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'inventory.push({' Line Number: 374
Code edit (1 edits merged)
Please save this source code
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
inventory: [],
best: "undefined"
});
/****
* Classes
****/
// CarouselSkin: a skin in the scrolling carousel
var CarouselSkin = Container.expand(function () {
var self = Container.call(this);
self.skinData = null;
self.asset = null;
self.label = null;
self.setSkin = function (skin) {
self.skinData = skin;
if (self.asset) self.removeChild(self.asset);
self.asset = self.attachAsset(skin.asset, {
anchorX: 0.5,
anchorY: 0.5
});
if (self.label) self.removeChild(self.label);
self.label = new Text2(skin.name, {
size: 48,
fill: RARITY_COLORS[skin.rarity]
});
self.label.anchor.set(0.5, 0.5);
self.label.y = 0;
self.addChild(self.label);
};
return self;
});
// InventorySkin: a skin in the inventory grid
var InventorySkin = Container.expand(function () {
var self = Container.call(this);
self.skinData = null;
self.asset = null;
self.label = null;
self.setSkin = function (skin) {
self.skinData = skin;
if (self.asset) self.removeChild(self.asset);
self.asset = self.attachAsset(skin.asset, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.7,
scaleY: 0.7
});
if (self.label) self.removeChild(self.label);
self.label = new Text2(skin.name, {
size: 32,
fill: RARITY_COLORS[skin.rarity]
});
self.label.anchor.set(0.5, 0.5);
self.label.y = 60;
self.addChild(self.label);
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x181a20
});
/****
* Game Code
****/
// Unique image assets for each skin (replace with your own images as needed)
// Skin data: name, rarity, assetId
/*
We use simple shapes for cases and skins, and Text2 for labels.
Each skin rarity gets a unique color.
*/
// --- UI Elements ---
var SKIN_POOL = [{
name: "Urban DDPAT",
rarity: "common",
asset: "skin_urban_ddpat"
}, {
name: "Sand Spray",
rarity: "common",
asset: "skin_sand_spray"
}, {
name: "Forest Leaves",
rarity: "common",
asset: "skin_forest_leaves"
}, {
name: "Jungle Tiger",
rarity: "common",
asset: "skin_jungle_tiger"
}, {
name: "Night Ops",
rarity: "common",
asset: "skin_night_ops"
}, {
name: "Blue Streak",
rarity: "rare",
asset: "skin_blue_streak"
}, {
name: "Redline",
rarity: "rare",
asset: "skin_redline"
}, {
name: "Firestarter",
rarity: "rare",
asset: "skin_firestarter"
}, {
name: "Ocean Foam",
rarity: "rare",
asset: "skin_ocean_foam"
}, {
name: "Hyper Beast",
rarity: "mythic",
asset: "skin_hyper_beast"
}, {
name: "Asiimov",
rarity: "mythic",
asset: "skin_asiimov"
}, {
name: "Neon Rider",
rarity: "mythic",
asset: "skin_neon_rider"
}, {
name: "Bloodsport",
rarity: "mythic",
asset: "skin_bloodsport"
}, {
name: "Dragon Lore",
rarity: "legendary",
asset: "skin_dragon_lore"
}, {
name: "Howl",
rarity: "legendary",
asset: "skin_howl"
}, {
name: "Medusa",
rarity: "legendary",
asset: "skin_medusa"
}, {
name: "Poseidon",
rarity: "legendary",
asset: "skin_poseidon"
}, {
name: "Gungnir",
rarity: "ultra",
asset: "skin_gungnir"
}, {
name: "The Prince",
rarity: "ultra",
asset: "skin_the_prince"
}];
// Rarity weights for random selection
var RARITY_WEIGHTS = {
"common": 60,
"rare": 25,
"mythic": 10,
"legendary": 4,
"ultra": 1
};
// Rarity display colors
var RARITY_COLORS = {
"common": 0xCCCCCC,
"rare": 0x4A90E2,
"mythic": 0x9B59B6,
"legendary": 0xF1C40F,
"ultra": 0xFF3B3B
};
// Helper: get a random skin based on weights
function getRandomSkin() {
var total = 0;
for (var i = 0; i < SKIN_POOL.length; i++) {
total += RARITY_WEIGHTS[SKIN_POOL[i].rarity];
}
var pick = Math.random() * total;
var acc = 0;
for (var j = 0; j < SKIN_POOL.length; j++) {
acc += RARITY_WEIGHTS[SKIN_POOL[j].rarity];
if (pick < acc) return SKIN_POOL[j];
}
return SKIN_POOL[0];
}
// Helper: get best skin in inventory
function getBestSkin(inv) {
var order = ["common", "rare", "mythic", "legendary", "ultra"];
var best = null,
bestIdx = -1;
for (var i = 0; i < inv.length; i++) {
var idx = order.indexOf(inv[i].rarity);
if (idx > bestIdx) {
best = inv[i];
bestIdx = idx;
}
}
return best;
}
var caseNode = LK.getAsset('case', {
anchorX: 0.5,
anchorY: 0.5
});
caseNode.x = 2048 / 2;
caseNode.y = 900;
// "Open Case" button (Text2, acts as button)
var openBtn = new Text2("OPEN CASE", {
size: 90,
fill: 0xFFFFFF
});
openBtn.anchor.set(0.5, 0.5);
openBtn.x = 2048 / 2;
openBtn.y = 1550;
// Inventory title
var invTitle = new Text2("INVENTORY", {
size: 60,
fill: 0xFFFFFF
});
invTitle.anchor.set(0.5, 0.5);
invTitle.x = 2048 / 2;
invTitle.y = 1800;
// Inventory grid container
var invGrid = new Container();
invGrid.x = 2048 / 2;
invGrid.y = 1920;
// Best skin display
var bestSkinTitle = new Text2("BEST SKIN", {
size: 48,
fill: 0xFFFFFF
});
bestSkinTitle.anchor.set(0.5, 0.5);
bestSkinTitle.x = 2048 / 2;
bestSkinTitle.y = 2500;
var bestSkinNode = new Container();
bestSkinNode.x = 2048 / 2;
bestSkinNode.y = 2620;
// Progress text
var progressTxt = new Text2("", {
size: 40,
fill: 0xFFFFFF
});
progressTxt.anchor.set(0.5, 0.5);
progressTxt.x = 2048 / 2;
progressTxt.y = 1700;
// Add to game
game.addChild(caseNode);
game.addChild(openBtn);
game.addChild(invTitle);
game.addChild(invGrid);
game.addChild(progressTxt);
game.addChild(bestSkinTitle);
game.addChild(bestSkinNode);
// --- Skin Prompt UI ---
var skinPromptContainer = new Container();
skinPromptContainer.x = 2048 / 2;
skinPromptContainer.y = 700;
// Prompt background
var skinPromptBg = LK.getAsset('skin_prompt_bg', {
anchorX: 0.5,
anchorY: 0.5
});
skinPromptContainer.addChild(skinPromptBg);
// Prompt icon (default to common)
var skinPromptIcon = LK.getAsset('skin_prompt_icon', {
anchorX: 0.5,
anchorY: 0.5
});
skinPromptIcon.x = -220;
skinPromptContainer.addChild(skinPromptIcon);
// Prompt text
var skinPromptText = new Text2("Tap to open a case and win a random skin!", {
size: 54,
fill: 0xFFFFFF
});
skinPromptText.anchor.set(0.5, 0.5);
skinPromptText.x = 80;
skinPromptContainer.addChild(skinPromptText);
game.addChild(skinPromptContainer);
// --- State ---
var isOpening = false;
var carouselSkins = [];
var carouselContainer = new Container();
carouselContainer.x = 2048 / 2;
carouselContainer.y = 900;
game.addChild(carouselContainer);
var inventory = storage.inventory || [];
var bestSkin = storage.best || null;
// --- Functions ---
// Update inventory grid
function updateInventory() {
// Remove all children
while (invGrid.children.length) invGrid.removeChild(invGrid.children[0]);
// Show up to 8 skins in 2 rows
var maxShow = 8;
var cols = 4;
var size = 180;
for (var i = 0; i < Math.min(inventory.length, maxShow); i++) {
var skin = inventory[inventory.length - 1 - i]; // Show newest first
var node = new InventorySkin();
node.setSkin(skin);
node.x = (i % cols - 1.5) * size * 1.2;
node.y = Math.floor(i / cols) * size * 1.3;
// Add sell-on-tap
(function (skinObj, nodeObj) {
nodeObj.down = function () {
// Calculate price
var rarityBase = {
"common": 10,
"rare": 40,
"mythic": 120,
"legendary": 400,
"ultra": 1200
};
var skinBonus = (skinObj.name.charCodeAt(0) + skinObj.name.length * 3) % 20;
var sellPrice = rarityBase[skinObj.rarity] + skinBonus;
// Remove from inventory
for (var j = 0; j < inventory.length; j++) {
if (inventory[j].name === skinObj.name && inventory[j].rarity === skinObj.rarity) {
inventory.splice(j, 1);
break;
}
}
storage.inventory = inventory;
// Add to balance
if (typeof window.balance === "undefined") window.balance = 0;
window.balance += sellPrice;
updateInventory();
updateBestSkin();
};
})(skin, node);
invGrid.addChild(node);
}
// Progress
var unique = {};
for (var j = 0; j < inventory.length; j++) unique[inventory[j].name] = true;
progressTxt.setText("Collection: " + Object.keys(unique).length + "/" + SKIN_POOL.length + " unique");
// Show balance at top of inventory
if (typeof window.balance === "undefined") window.balance = 0;
if (!updateInventory.balanceTxt) {
updateInventory.balanceTxt = new Text2("Balance: " + window.balance + "₺", {
size: 48,
fill: 0xF1C40F
});
updateInventory.balanceTxt.anchor.set(0.5, 0.5);
updateInventory.balanceTxt.x = 2048 / 2;
updateInventory.balanceTxt.y = 1640;
game.addChild(updateInventory.balanceTxt);
}
updateInventory.balanceTxt.setText("Balance: " + window.balance + "₺");
// Update skin prompt preview to show a random skin
if (skinPromptIcon && skinPromptText) {
var previewSkin = getRandomSkin();
// Remove old icon and add new one
if (skinPromptContainer.children.indexOf(skinPromptIcon) !== -1) {
skinPromptContainer.removeChild(skinPromptIcon);
}
skinPromptIcon = LK.getAsset(previewSkin.asset, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.45,
scaleY: 0.45
});
skinPromptIcon.x = -220;
skinPromptContainer.addChildAt(skinPromptIcon, 1);
skinPromptText.setText("Tap to open a case and win:\n" + previewSkin.name);
skinPromptText.setStyle({
fill: RARITY_COLORS[previewSkin.rarity]
});
}
}
// Update best skin display
function updateBestSkin() {
while (bestSkinNode.children.length) bestSkinNode.removeChild(bestSkinNode.children[0]);
var best = getBestSkin(inventory);
if (best) {
var node = new InventorySkin();
node.setSkin(best);
bestSkinNode.addChild(node);
}
}
// Start case opening animation
function startCaseOpening() {
if (isOpening) return;
isOpening = true;
skinPromptContainer.visible = false;
openBtn.setText("OPENING...");
LK.getSound('case_open').play();
// Remove old carousel
while (carouselContainer.children.length) carouselContainer.removeChild(carouselContainer.children[0]);
carouselSkins = [];
// Build carousel: 20 random skins, winner at a random position (not always center)
var winner = getRandomSkin();
var skins = [];
var winnerPos = 3 + Math.floor(Math.random() * 14); // winner at random pos between 3 and 16
for (var i = 0; i < 20; i++) {
if (i === winnerPos) {
skins.push(winner);
} else {
// Random, but not always the winner
var s;
do {
s = getRandomSkin();
} while (s.name === winner.name);
skins.push(s);
}
}
// Create skin nodes
for (var j = 0; j < skins.length; j++) {
var node = new CarouselSkin();
node.setSkin(skins[j]);
node.x = (j - winnerPos) * 400;
node.y = 0;
carouselContainer.addChild(node);
carouselSkins.push(node);
}
// Animate: scroll so the winner lands at a random position, not always center
// Pick a random stop position for the winner (not always center)
var stopOffset = -400 * winnerPos + (Math.floor(Math.random() * 7) - 3) * 60; // winner lands near center, but not always exactly center
var duration = 2200 + Math.random() * 400; // 2.2-2.6s
tween(carouselContainer, {
x: 2048 / 2 + stopOffset
}, {
duration: duration,
easing: tween.cubicOut,
onFinish: function onFinish() {
LK.getSound('skin_land').play();
showUnboxedSkin(winner);
}
});
}
// Show the unboxed skin, add to inventory, update UI
function showUnboxedSkin(skin) {
// Pop up effect: scale up winner skin
var winnerNode = null;
var minDist = 99999;
for (var i = 0; i < carouselSkins.length; i++) {
if (carouselSkins[i].skinData.name === skin.name) {
var dist = Math.abs(carouselSkins[i].x);
if (dist < minDist) {
minDist = dist;
winnerNode = carouselSkins[i];
}
}
}
// --- Pause game and show inventory with sell option ---
// Add to inventory
var invSkin_name = "" + skin.name;
var invSkin_rarity = "" + skin.rarity;
var invSkin_asset = "" + skin.asset;
// Removed inventory.push and related code to prevent error
// Update best
var best = getBestSkin(inventory);
storage.best = best;
updateInventory();
updateBestSkin();
// Show a popup with the skin image, name, and "Sell" button
if (winnerNode) {
var popup = new Container();
popup.x = 2048 / 2;
popup.y = 1200;
// Add skin asset image
var skinImg = LK.getAsset(skin.asset, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
popup.addChild(skinImg);
// Add skin name label
var skinLabel = new Text2(skin.name, {
size: 80,
fill: RARITY_COLORS[skin.rarity]
});
skinLabel.anchor.set(0.5, 0);
skinLabel.y = 120;
popup.addChild(skinLabel);
// --- SELL BUTTON ---
// Calculate price by rarity and skin
var rarityBase = {
"common": 10,
"rare": 40,
"mythic": 120,
"legendary": 400,
"ultra": 1200
};
// Add a small bonus per unique skin name (for variety)
var skinBonus = (skin.name.charCodeAt(0) + skin.name.length * 3) % 20;
var sellPrice = rarityBase[skin.rarity] + skinBonus;
var sellBtn = new Text2("SELL (" + sellPrice + "₺)", {
size: 60,
fill: 0xFF3B3B
});
sellBtn.anchor.set(0.5, 0.5);
sellBtn.x = 0;
sellBtn.y = 260;
popup.addChild(sellBtn);
// Show current balance
if (typeof window.balance === "undefined") window.balance = 0;
var balanceTxt = new Text2("Balance: " + window.balance + "₺", {
size: 44,
fill: 0xFFFFFF
});
balanceTxt.anchor.set(0.5, 0.5);
balanceTxt.x = 0;
balanceTxt.y = 340;
popup.addChild(balanceTxt);
// Animate popup in
popup.scale.x = 0.1;
popup.scale.y = 0.1;
game.addChild(popup);
tween(popup.scale, {
x: 1,
y: 1
}, {
duration: 350,
easing: tween.elasticOut,
onFinish: function onFinish() {
tween(popup.scale, {
x: 1,
y: 1
}, {
duration: 200,
easing: tween.linear
});
}
});
// Animate winner node
tween(winnerNode, {
scaleX: 1.3,
scaleY: 1.3
}, {
duration: 350,
easing: tween.elasticOut,
onFinish: function onFinish() {
tween(winnerNode, {
scaleX: 1,
scaleY: 1
}, {
duration: 200,
easing: tween.linear
});
}
});
// Pause opening until popup is closed
isOpening = true;
skinPromptContainer.visible = false;
openBtn.setText("OPEN CASE");
// Sell button logic
sellBtn.down = function () {
// Remove the skin from inventory (remove first matching)
for (var i = 0; i < inventory.length; i++) {
if (inventory[i].name === skin.name && inventory[i].rarity === skin.rarity) {
inventory.splice(i, 1);
break;
}
}
storage.inventory = inventory;
// Add to balance
window.balance += sellPrice;
// Update UI
updateInventory();
updateBestSkin();
balanceTxt.setText("Balance: " + window.balance + "₺");
// Remove popup and allow opening again
if (popup.parent) popup.parent.removeChild(popup);
isOpening = false;
skinPromptContainer.visible = true;
openBtn.setText("OPEN CASE");
// Remove carousel immediately so next open is always a new random set
while (carouselContainer.children.length) carouselContainer.removeChild(carouselContainer.children[0]);
carouselSkins = [];
};
// Also allow closing popup by tapping anywhere else on popup (but not on sellBtn)
popup.down = function (x, y, obj) {
// If tap is not on sellBtn, just close
if (obj !== sellBtn) {
if (popup.parent) popup.parent.removeChild(popup);
isOpening = false;
skinPromptContainer.visible = true;
openBtn.setText("OPEN CASE");
while (carouselContainer.children.length) carouselContainer.removeChild(carouselContainer.children[0]);
carouselSkins = [];
}
};
}
}
// --- Event Handlers ---
// Open case on tap
openBtn.down = function (x, y, obj) {
if (!isOpening) startCaseOpening();
};
// Prevent accidental tap on top left (menu area)
caseNode.down = function (x, y, obj) {
if (x < 100 && y < 100) return;
};
// --- Initial UI ---
updateInventory();
updateBestSkin();
// --- No update loop needed, all is event-driven --- ===================================================================
--- original.js
+++ change.js
@@ -70,8 +70,9 @@
/****
* Game Code
****/
+// Unique image assets for each skin (replace with your own images as needed)
// Skin data: name, rarity, assetId
/*
We use simple shapes for cases and skins, and Text2 for labels.
Each skin rarity gets a unique color.
@@ -79,81 +80,81 @@
// --- UI Elements ---
var SKIN_POOL = [{
name: "Urban DDPAT",
rarity: "common",
- asset: "skin_common"
+ asset: "skin_urban_ddpat"
}, {
name: "Sand Spray",
rarity: "common",
- asset: "skin_common"
+ asset: "skin_sand_spray"
}, {
name: "Forest Leaves",
rarity: "common",
- asset: "skin_common"
+ asset: "skin_forest_leaves"
}, {
name: "Jungle Tiger",
rarity: "common",
- asset: "skin_common"
+ asset: "skin_jungle_tiger"
}, {
name: "Night Ops",
rarity: "common",
- asset: "skin_common"
+ asset: "skin_night_ops"
}, {
name: "Blue Streak",
rarity: "rare",
- asset: "skin_rare"
+ asset: "skin_blue_streak"
}, {
name: "Redline",
rarity: "rare",
- asset: "skin_rare"
+ asset: "skin_redline"
}, {
name: "Firestarter",
rarity: "rare",
- asset: "skin_rare"
+ asset: "skin_firestarter"
}, {
name: "Ocean Foam",
rarity: "rare",
- asset: "skin_rare"
+ asset: "skin_ocean_foam"
}, {
name: "Hyper Beast",
rarity: "mythic",
- asset: "skin_mythic"
+ asset: "skin_hyper_beast"
}, {
name: "Asiimov",
rarity: "mythic",
- asset: "skin_mythic"
+ asset: "skin_asiimov"
}, {
name: "Neon Rider",
rarity: "mythic",
- asset: "skin_mythic"
+ asset: "skin_neon_rider"
}, {
name: "Bloodsport",
rarity: "mythic",
- asset: "skin_mythic"
+ asset: "skin_bloodsport"
}, {
name: "Dragon Lore",
rarity: "legendary",
- asset: "skin_legendary"
+ asset: "skin_dragon_lore"
}, {
name: "Howl",
rarity: "legendary",
- asset: "skin_legendary"
+ asset: "skin_howl"
}, {
name: "Medusa",
rarity: "legendary",
- asset: "skin_legendary"
+ asset: "skin_medusa"
}, {
name: "Poseidon",
rarity: "legendary",
- asset: "skin_legendary"
+ asset: "skin_poseidon"
}, {
name: "Gungnir",
rarity: "ultra",
- asset: "skin_ultra"
+ asset: "skin_gungnir"
}, {
name: "The Prince",
rarity: "ultra",
- asset: "skin_ultra"
+ asset: "skin_the_prince"
}];
// Rarity weights for random selection
var RARITY_WEIGHTS = {
"common": 60,
Awp Asimov ekle ve görünüş karikatür olmasın oyundakiyle aynı olsun. In-Game asset. 2d. High contrast. No shadows
Cs2 deki ak 47 bloodsport skinini ekle. In-Game asset. 2d. High contrast. No shadows
Cs2 neon rider skinini ekle. In-Game asset. 2d. High contrast. No shadows
Ayakları olmasın ve altında bombardilo crocodilo case yazsın
triangle. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat