User prompt
Hataları düzelt yada kaldır
User prompt
Envantere ilgili şeyleri 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: 'inv.push(flat);' Line Number: 357
User prompt
Hata veren 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: 'inv.push(safeSkinFlat);' Line Number: 363
User prompt
Please fix the bug: 'invBtn is not defined' in or related to this line: 'game.addChild(invBtn);' Line Number: 279
User prompt
İnventory olayını kaldır çıkan skın otomatik satılsın ekrandaki yazıyıda 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: 'inv.push(safeSkin);' Line Number: 357
User prompt
Çıkan skın otomatik envantere eklensin sell ve close butonu ekle add inventory yazısını kaldır skın çıkınca
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'inv.push(safeSkin);' Line Number: 354
User prompt
İnventory kodu bozuk farklı bir inventory kodu yaz
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'inventory.push(invSkinFlat);' Line Number: 654
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'inventory.push({' Line Number: 648
User prompt
Dell ve add inventory yazısının arasını aç ve skın çıkınca arka planı siyah yap
User prompt
Skin çıktıktan sonra silme butonunu ve balanceyi gösterme çıkan skini ayrı ekranda aç arkadaki butonlara sıklanması add inventory butonu ekle çıkan skini envantere gönderebilelim
User prompt
Hataya sebep olan kodu 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(invSkinLiteral);' Line Number: 478
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: 472
User prompt
Please fix the bug: 'Uncaught ReferenceError: skinPromptContainer is not defined' in or related to this line: 'skinPromptContainer.visible = false;' Line Number: 404
User prompt
İnventory butonunu basılabilir yap çıkan itemler oraya gitsin ve ordan satılabilsin
User prompt
Balance yazısını sağ üste koy collection yazısını kaldır inventory butonunu sol aşşagı al ve alttaki best skın yazısını kaldır
User prompt
Hala bir kutu daha var onuda kaldır
User prompt
Kasanın üstünde kareler kaldı onları kaldır
User prompt
Kasanın üstündeki "Tap to open a case and win" yazısını kaldır
User prompt
Skinlerin nadirliğini gerçek oyundakiyle aynı yap örneğin Asimov kırmızı olmalı
/****
* 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: "legendary",
//{1c} // RED
asset: "skin_asiimov"
}, {
name: "Neon Rider",
rarity: "mythic",
asset: "skin_neon_rider"
}, {
name: "Bloodsport",
rarity: "mythic",
asset: "skin_bloodsport"
}, {
name: "Dragon Lore",
rarity: "ultra",
//{1i} // GOLD
asset: "skin_dragon_lore"
}, {
name: "Howl",
rarity: "legendary",
//{1k} // RED
asset: "skin_howl"
}, {
name: "Medusa",
rarity: "legendary",
//{1m} // RED
asset: "skin_medusa"
}, {
name: "Poseidon",
rarity: "legendary",
//{1o} // RED
asset: "skin_poseidon"
}, {
name: "Gungnir",
rarity: "ultra",
//{1q} // GOLD
asset: "skin_gungnir"
}, {
name: "The Prince",
rarity: "ultra",
//{1s} // GOLD
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 button (bottom left)
var invBtn = new Text2("INVENTORY", {
size: 60,
fill: 0xFFFFFF
});
invBtn.anchor.set(0, 1);
invBtn.x = 40;
invBtn.y = 2732 - 40;
// Inventory popup container (hidden by default)
var invPopup = new Container();
invPopup.visible = false;
invPopup.x = 2048 / 2;
invPopup.y = 1400;
// Inventory grid container (for both popup and main grid)
var invGrid = new Container();
invGrid.x = 0;
invGrid.y = 0;
// Add a close button to inventory popup
var invCloseBtn = new Text2("CLOSE", {
size: 48,
fill: 0xFF3B3B
});
invCloseBtn.anchor.set(1, 0);
invCloseBtn.x = 700 / 2 - 30;
invCloseBtn.y = -120;
invPopup.addChild(invCloseBtn);
// Add inventory grid to popup
invPopup.addChild(invGrid);
// Add popup to game (hidden by default)
game.addChild(invPopup);
// Inventory button opens popup
invBtn.down = function () {
invPopup.visible = true;
updateInventory();
};
// Close button closes popup
invCloseBtn.down = function () {
invPopup.visible = false;
};
// (Best skin display removed)
// Balance text (moved to top right)
var balanceTxt = new Text2("Balance: 0₺", {
size: 48,
fill: 0xF1C40F
});
balanceTxt.anchor.set(1, 0); // top right
balanceTxt.x = 2048 - 40;
balanceTxt.y = 40;
// Add to game
game.addChild(caseNode);
game.addChild(openBtn);
game.addChild(invBtn);
game.addChild(invGrid);
game.addChild(balanceTxt);
// --- Skin Prompt UI ---
// Removed skinPromptContainer and skinPromptBg as requested
// --- 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 for popup
(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();
// Hide popup after selling
if (invPopup.visible) invPopup.visible = false;
};
})(skin, node);
invGrid.addChild(node);
}
// Show balance at top right
if (typeof window.balance === "undefined") window.balance = 0;
if (!updateInventory.balanceTxt) {
updateInventory.balanceTxt = balanceTxt;
game.addChild(updateInventory.balanceTxt);
}
updateInventory.balanceTxt.setText("Balance: " + window.balance + "₺");
// Removed skinPromptIcon update logic as prompt icon is no longer shown
}
// Update best skin display
function updateBestSkin() {
// (best skin display removed)
}
// Start case opening animation
function startCaseOpening() {
if (isOpening) return;
isOpening = true;
// skinPromptContainer.visible = false; // removed, no longer exists
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];
}
}
}
// --- Add to inventory and update UI ---
var invSkin = {
name: "" + skin.name,
rarity: "" + skin.rarity,
asset: "" + skin.asset
};
inventory.push(invSkin);
storage.inventory = inventory;
var best = getBestSkin(inventory);
storage.best = best;
updateInventory();
// 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; // removed, no longer exists
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();
balanceTxt.setText("Balance: " + window.balance + "₺");
// Remove popup and allow opening again
if (popup.parent) popup.parent.removeChild(popup);
isOpening = false;
// skinPromptContainer.visible = true; // removed, no longer exists
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; // removed, no longer exists
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();
// --- No update loop needed, all is event-driven --- ===================================================================
--- original.js
+++ change.js
@@ -347,9 +347,9 @@
// Start case opening animation
function startCaseOpening() {
if (isOpening) return;
isOpening = true;
- skinPromptContainer.visible = false;
+ // skinPromptContainer.visible = false; // removed, no longer exists
openBtn.setText("OPENING...");
LK.getSound('case_open').play();
// Remove old carousel
while (carouselContainer.children.length) carouselContainer.removeChild(carouselContainer.children[0]);
@@ -508,9 +508,9 @@
}
});
// Pause opening until popup is closed
isOpening = true;
- skinPromptContainer.visible = false;
+ // skinPromptContainer.visible = false; // removed, no longer exists
openBtn.setText("OPEN CASE");
// Sell button logic
sellBtn.down = function () {
// Remove the skin from inventory (remove first matching)
@@ -528,9 +528,9 @@
balanceTxt.setText("Balance: " + window.balance + "₺");
// Remove popup and allow opening again
if (popup.parent) popup.parent.removeChild(popup);
isOpening = false;
- skinPromptContainer.visible = true;
+ // skinPromptContainer.visible = true; // removed, no longer exists
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 = [];
@@ -540,9 +540,9 @@
// If tap is not on sellBtn, just close
if (obj !== sellBtn) {
if (popup.parent) popup.parent.removeChild(popup);
isOpening = false;
- skinPromptContainer.visible = true;
+ // skinPromptContainer.visible = true; // removed, no longer exists
openBtn.setText("OPEN CASE");
while (carouselContainer.children.length) carouselContainer.removeChild(carouselContainer.children[0]);
carouselSkins = [];
}
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