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
****/
// 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_common"
}, {
name: "Sand Spray",
rarity: "common",
asset: "skin_common"
}, {
name: "Forest Leaves",
rarity: "common",
asset: "skin_common"
}, {
name: "Blue Streak",
rarity: "rare",
asset: "skin_rare"
}, {
name: "Redline",
rarity: "rare",
asset: "skin_rare"
}, {
name: "Hyper Beast",
rarity: "mythic",
asset: "skin_mythic"
}, {
name: "Asiimov",
rarity: "mythic",
asset: "skin_mythic"
}, {
name: "Dragon Lore",
rarity: "legendary",
asset: "skin_legendary"
}, {
name: "Howl",
rarity: "legendary",
asset: "skin_legendary"
}, {
name: "Gungnir",
rarity: "ultra",
asset: "skin_ultra"
}];
// 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);
// --- 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;
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");
}
// 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;
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 position 12
var winner = getRandomSkin();
var skins = [];
for (var i = 0; i < 20; i++) {
if (i === 12) {
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 - 12) * 400;
node.y = 0;
carouselContainer.addChild(node);
carouselSkins.push(node);
}
// Animate: scroll left so winner lands in center
var duration = 2200 + Math.random() * 400; // 2.2-2.6s
var startX = carouselContainer.x;
var endOffset = -400 * 12;
var startTime = LK.ticks;
var totalMove = 400 * (skins.length - 13);
var startPos = 0;
var endPos = -totalMove;
// Animate with tween
tween(carouselContainer, {
x: 2048 / 2 + endPos
}, {
duration: duration,
easing: tween.cubicOut,
onFinish: function onFinish() {
// Winner lands in center
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;
for (var i = 0; i < carouselSkins.length; i++) {
if (carouselSkins[i].skinData.name === skin.name && Math.abs(carouselSkins[i].x) < 10) {
winnerNode = carouselSkins[i];
break;
}
}
if (winnerNode) {
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
});
}
});
}
// Add to inventory
inventory.push({
name: skin.name,
rarity: skin.rarity,
asset: skin.asset
});
storage.inventory = inventory;
// Update best
var best = getBestSkin(inventory);
storage.best = best;
updateInventory();
updateBestSkin();
// After short delay, allow opening again
LK.setTimeout(function () {
isOpening = false;
openBtn.setText("OPEN CASE");
// Remove carousel after a while
LK.setTimeout(function () {
while (carouselContainer.children.length) carouselContainer.removeChild(carouselContainer.children[0]);
}, 600);
}, 900);
}
// --- 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 --- /****
* 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
****/
// 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_common"
}, {
name: "Sand Spray",
rarity: "common",
asset: "skin_common"
}, {
name: "Forest Leaves",
rarity: "common",
asset: "skin_common"
}, {
name: "Blue Streak",
rarity: "rare",
asset: "skin_rare"
}, {
name: "Redline",
rarity: "rare",
asset: "skin_rare"
}, {
name: "Hyper Beast",
rarity: "mythic",
asset: "skin_mythic"
}, {
name: "Asiimov",
rarity: "mythic",
asset: "skin_mythic"
}, {
name: "Dragon Lore",
rarity: "legendary",
asset: "skin_legendary"
}, {
name: "Howl",
rarity: "legendary",
asset: "skin_legendary"
}, {
name: "Gungnir",
rarity: "ultra",
asset: "skin_ultra"
}];
// 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);
// --- 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;
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");
}
// 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;
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 position 12
var winner = getRandomSkin();
var skins = [];
for (var i = 0; i < 20; i++) {
if (i === 12) {
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 - 12) * 400;
node.y = 0;
carouselContainer.addChild(node);
carouselSkins.push(node);
}
// Animate: scroll left so winner lands in center
var duration = 2200 + Math.random() * 400; // 2.2-2.6s
var startX = carouselContainer.x;
var endOffset = -400 * 12;
var startTime = LK.ticks;
var totalMove = 400 * (skins.length - 13);
var startPos = 0;
var endPos = -totalMove;
// Animate with tween
tween(carouselContainer, {
x: 2048 / 2 + endPos
}, {
duration: duration,
easing: tween.cubicOut,
onFinish: function onFinish() {
// Winner lands in center
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;
for (var i = 0; i < carouselSkins.length; i++) {
if (carouselSkins[i].skinData.name === skin.name && Math.abs(carouselSkins[i].x) < 10) {
winnerNode = carouselSkins[i];
break;
}
}
if (winnerNode) {
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
});
}
});
}
// Add to inventory
inventory.push({
name: skin.name,
rarity: skin.rarity,
asset: skin.asset
});
storage.inventory = inventory;
// Update best
var best = getBestSkin(inventory);
storage.best = best;
updateInventory();
updateBestSkin();
// After short delay, allow opening again
LK.setTimeout(function () {
isOpening = false;
openBtn.setText("OPEN CASE");
// Remove carousel after a while
LK.setTimeout(function () {
while (carouselContainer.children.length) carouselContainer.removeChild(carouselContainer.children[0]);
}, 600);
}, 900);
}
// --- 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 ---
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