heres my free friday post for the last few fridays

Written By :

Category :

Uncategorized

Posted On :

Share This :

PS S:\CSGO> & “C:/Program Files (x86)/Python313/python.exe” s:/CSGO/csgo_game.py
Enter your username: LOGAN
Owner privileges enabled.

===== CS:GO CASE GAME V3 =====
[OWNER] [Money: $0.00] [Level: 1] [XP: 0/100]

  1. Open Case
  2. View Inventory
  3. Jackpot Gamble
  4. Offer Trade
  5. Accept Trade
  6. Decline Trade
  7. Clicker Mode
  8. View Profile
  9. Exit Game

all of these work and i had help from the ai but i still understood most of it

import random

import time

# =========================

# CONFIGURATION

# =========================

OWNER = “LOGAN”  # Only ALL-CAPS LOGAN is the owner

# Harsher base rarities

RARITIES = {

    “Common”: 0.80,

    “Uncommon”: 0.15,

    “Rare”: 0.04,

    “Epic”: 0.009,

    “Gold”: 0.001

}

WEAR = {

    “Factory New”: 1.5,

    “Minimal Wear”: 1.3,

    “Field-Tested”: 1.0,

    “Well-Worn”: 0.8,

    “Battle-Scarred”: 0.6

}

ITEMS = {

    “AK-47”: {

        “skins”: {

            “Redline”: {“rarity”: “Rare”, “base_price”: 120},

            “Vulcan”: {“rarity”: “Epic”, “base_price”: 300},

            “Safari Mesh”: {“rarity”: “Common”, “base_price”: 5}

        }

    },

    “M4A1-S”: {

        “skins”: {

            “Golden Coil”: {“rarity”: “Epic”, “base_price”: 250},

            “Decimator”: {“rarity”: “Rare”, “base_price”: 110},

            “Basilisk”: {“rarity”: “Uncommon”, “base_price”: 25}

        }

    },

    “Knife”: {

        “skins”: {

            “Karambit Fade”: {“rarity”: “Gold”, “base_price”: 1500},

            “Karambit Doppler”: {“rarity”: “Gold”, “base_price”: 2000},

            “Rust Coat”: {“rarity”: “Rare”, “base_price”: 200}

        }

    },

    “Gloves”: {

        “skins”: {

            “Crimson Weave”: {“rarity”: “Epic”, “base_price”: 600},

            “Pandora’s Box”: {“rarity”: “Gold”, “base_price”: 3000},

            “Snakebite”: {“rarity”: “Rare”, “base_price”: 150}

        }

    },

    “OwnerKnife”: {

        “skins”: {

            “Dragon Emperor”: {“rarity”: “Mythic”, “base_price”: 5000}

        }

    }

}

CASES = {

    “Mil-Spec Case”: {

        “weapons”: [“AK-47”, “M4A1-S”],

        “roll_speed”: 0.03,

        “owner_only”: False,

        “min_level”: 1

    },

    “Knife Case”: {

        “weapons”: [“Knife”, “Gloves”],

        “roll_speed”: 0.03,

        “owner_only”: False,

        “min_level”: 5

    },

    “Owner Exclusive Case”: {

        “weapons”: [“OwnerKnife”],

        “roll_speed”: 0.03,

        “owner_only”: True,

        “min_level”: 10

    },

    “Budget Case”: {

        “weapons”: [“AK-47”, “M4A1-S”],

        “roll_speed”: 0.02,

        “owner_only”: False,

        “min_level”: 1

    },

    “High Roller Case”: {

        “weapons”: [“Knife”, “Gloves”, “OwnerKnife”],

        “roll_speed”: 0.04,

        “owner_only”: False,

        “min_level”: 8

    }

}

# =========================

# PLAYER SYSTEM

# =========================

INVENTORIES = {}  # username -> list of items

PLAYERS = {}      # username -> {“money”: float, “level”: int, “xp”: int}

def get_player(username):

    if username not in PLAYERS:

        PLAYERS[username] = {“money”: 0.0, “level”: 1, “xp”: 0}

    return PLAYERS[username]

def add_xp(username, amount):

    player = get_player(username)

    player[“xp”] += amount

    while player[“xp”] >= 100:

        player[“xp”] -= 100

        player[“level”] += 1

        print(f“\n{username} leveled up! Now level {player[‘level’]}.\n”)

def hud(username, jackpot_chance=None):

    player = get_player(username)

    money = player[“money”]

    level = player[“level”]

    xp = player[“xp”]

    if username == OWNER:

        if jackpot_chance is not None:

            print(f“[OWNER] [Money: ${money:.2f}] [Level: {level}] [XP: {xp}/100] [JP Chance: {int(jackpot_chance*100)}%]”)

        else:

            print(f“[OWNER] [Money: ${money:.2f}] [Level: {level}] [XP: {xp}/100]”)

    else:

        print(f“[Money: ${money:.2f}] [Level: {level}] [XP: {xp}/100]”)

def show_profile(username):

    print()

    hud(username)

    print()

def clicker_mode(username):

    print(“\n=== CLICKER MODE ===”)

    print(“Press ENTER to click. Type ‘exit’ and press ENTER to stop.\n”)

    while True:

        hud(username)

        cmd = input()

        if cmd.strip().lower() == “exit”:

            print(“\nExiting clicker mode.\n”)

            break

        player = get_player(username)

        gain_money = 1.0

        gain_xp = 5

        if username == OWNER:

            gain_money = 2.0

            gain_xp = 8

        player[“money”] += gain_money

        add_xp(username, gain_xp)

# =========================

# CORE ROLL LOGIC

# =========================

def roll_rarity():

    r = random.random()

    cumulative = 0

    for rarity, chance in RARITIES.items():

        cumulative += chance

        if r <= cumulative:

            return rarity

    return “Common”

def roll_rarity_for_user(username):

    rarity = roll_rarity()

    if username == OWNER:

        if rarity == “Common” and random.random() < 0.2:

            rarity = “Uncommon”

        elif rarity == “Uncommon” and random.random() < 0.15:

            rarity = “Rare”

        elif rarity == “Rare” and random.random() < 0.1:

            rarity = “Epic”

        elif rarity == “Epic” and random.random() < 0.05:

            rarity = “Gold”

    return rarity

def roll_wear():

    return random.choice(list(WEAR.keys()))

def roll_skin(weapon, rarity):

    skins = ITEMS[weapon][“skins”]

    matching = [s for s, d in skins.items() if d[“rarity”] == rarity]

    if not matching:

        matching = list(skins.keys())

    return random.choice(matching)

def calculate_price(weapon, skin, wear):

    base = ITEMS[weapon][“skins”][skin][“base_price”]

    return round(base * WEAR[wear], 2)

def owner_bonus_roll(username, weapon, rarity):

    if weapon not in [“Knife”, “Gloves”]:

        return weapon, rarity

    if username == OWNER:

        if random.random() < 0.50:

            return “OwnerKnife”, “Mythic”

    else:

        if random.random() < 0.001:

            return “OwnerKnife”, “Mythic”

    return weapon, rarity

# =========================

# INVENTORY SYSTEM

# =========================

def add_to_inventory(username, weapon, skin, wear, price, rarity):

    if username not in INVENTORIES:

        INVENTORIES[username] = []

    INVENTORIES[username].append({

        “weapon”: weapon,

        “skin”: skin,

        “wear”: wear,

        “price”: price,

        “rarity”: rarity

    })

def show_inventory(username):

    items = INVENTORIES.get(username, [])

    if not items:

        print(“\nYour inventory is empty.\n”)

        return

    print(f“\nInventory of {username}:”)

    for i, item in enumerate(items, start=1):

        print(f“{i}. [{item[‘rarity’]}] {item[‘weapon’]} | {item[‘skin’]} ({item[‘wear’]}) – ${item[‘price’]}”)

    print()

# =========================

# SCROLLING CASE ANIMATION

# =========================

last_open_time = 0

COOLDOWN = 1.5  # seconds between case opens

def can_open_case():

    global last_open_time

    now = time.time()

    if now – last_open_time < COOLDOWN:

        wait = round(COOLDOWN – (now – last_open_time), 2)

        print(f“Slow down! Wait {wait} seconds.\n”)

        return False

    last_open_time = now

    return True

def format_item_for_strip(item):

    return f“[{item[‘rarity’]}] {item[‘weapon’]} | {item[‘skin’]}”

def build_roll_strip(case_name, username):

    case = CASES[case_name]

    weapons = case[“weapons”]

    rarity = roll_rarity_for_user(username)

    weapon = random.choice(weapons)

    weapon, rarity = owner_bonus_roll(username, weapon, rarity)

    skin = roll_skin(weapon, rarity)

    wear = roll_wear()

    price = calculate_price(weapon, skin, wear)

    winning_item = {

        “weapon”: weapon,

        “skin”: skin,

        “rarity”: rarity,

        “wear”: wear,

        “price”: price

    }

    strip = []

    for _ in range(20):

        r = roll_rarity()

        w = random.choice(weapons)

        w, r2 = owner_bonus_roll(username, w, r)

        s = roll_skin(w, r2)

        wr = roll_wear()

        p = calculate_price(w, s, wr)

        strip.append({

            “weapon”: w,

            “skin”: s,

            “rarity”: r2,

            “wear”: wr,

            “price”: p

        })

    insert_index = random.randint(len(strip) – 5, len(strip) – 1)

    strip[insert_index] = winning_item

    return strip, winning_item

def play_scroll_animation(strip):

    print(“\nRolling case…\n”)

    for item in strip:

        line = format_item_for_strip(item)

        print(f“| {line} |”)

        time.sleep(0.05)

# =========================

# OPEN CASE FUNCTION

# =========================

def open_case(case_name, username):

    if case_name not in CASES:

        print(“Invalid case name.”)

        return

    player = get_player(username)

    case = CASES[case_name]

    if player[“level”] < case.get(“min_level”, 1):

        print(f“You must be at least level {case[‘min_level’]} to open this case.\n”)

        return

    if case[“owner_only”] and username != OWNER:

        print(“You are not allowed to open this case.\n”)

        return

    if not can_open_case():

        return

    hud(username)

    strip, winning_item = build_roll_strip(case_name, username)

    play_scroll_animation(strip)

    weapon = winning_item[“weapon”]

    skin = winning_item[“skin”]

    rarity = winning_item[“rarity”]

    wear = winning_item[“wear”]

    price = winning_item[“price”]

    print(“\nYou unboxed:”)

    print(f”  Weapon: {weapon}”)

    print(f”  Skin:   {skin}”)

    print(f”  Rarity: {rarity}”)

    print(f”  Wear:   {wear}”)

    print(f”  Value:  ${price}\n”)

    add_to_inventory(username, weapon, skin, wear, price, rarity)

    choice = input(“Do you want to sell this item for its value? (y/n): “).strip().lower()

    if choice == “y”:

        player[“money”] += price

        INVENTORIES[username].pop()

        print(f“Item sold for ${price}. New balance: ${player[‘money’]:.2f}\n”)

    else:

        print(“Item kept in inventory.\n”)

    add_xp(username, 10)

# =========================

# JACKPOT SYSTEM (PER-ITEM GAMBLE)

# =========================

def compute_jackpot_chance(username, price):

    chance = 0.50  # base 50/50

    if price > 500:

        chance += 0.05

    if price > 1500:

        chance += 0.10

    if price > 3000:

        chance += 0.15

    if username == OWNER:

        chance += 0.10

    chance -= 0.30  # brutal penalty

    chance = max(0.05, min(chance, 0.90))

    return chance

def jackpot_gamble(username):

    items = INVENTORIES.get(username, [])

    if not items:

        print(“\nYou have no items to gamble.\n”)

        return

    show_inventory(username)

    try:

        idx = int(input(“Choose an item number to gamble: “)) – 1

    except:

        print(“Invalid input.\n”)

        return

    if idx < 0 or idx >= len(items):

        print(“Invalid item selection.\n”)

        return

    item = items[idx]

    price = item[“price”]

    chance = compute_jackpot_chance(username, price)

    print(“\n=== JACKPOT GAMBLE ===”)

    if username == OWNER:

        hud(username, jackpot_chance=chance)

    else:

        hud(username)

    print(f“Gambling: [{item[‘rarity’]}] {item[‘weapon’]} | {item[‘skin’]} (${item[‘price’]})”)

    roll = random.random()

    time.sleep(0.8)

    if roll <= chance:

        print(“\nYOU WON THE JACKPOT!\n”)

        item[“price”] += 500

        print(f“Item value increased by 500. New value: ${item[‘price’]:.2f}”)

        if random.random() < 0.10:

            knife_weapon = “Knife”

            knife_skin = “Karambit Fade”

            knife_rarity = “Gold”

            knife_wear = “Factory New”

            knife_price = calculate_price(knife_weapon, knife_skin, knife_wear)

            add_to_inventory(username, knife_weapon, knife_skin, knife_wear, knife_price, knife_rarity)

            print(f“Bonus knife awarded: {knife_weapon} | {knife_skin} (${knife_price})”)

        print()

    else:

        print(“\nYou lost the jackpot.\n”)

        item[“price”] -= 1000

        if item[“price”] < 0:

            item[“price”] = 0

        print(f“Item value decreased by 1000. New value: ${item[‘price’]:.2f}”)

        if random.random() < 0.05:

            removed = INVENTORIES[username].pop(idx)

            print(f“The item was lost completely: {removed[‘weapon’]} | {removed[‘skin’]}”)

        print()

# =========================

# TRADING SYSTEM (to improve later)

# =========================

PENDING_TRADES = {}

def offer_trade(sender, receiver, s_index, r_index):

    if sender not in INVENTORIES or receiver not in INVENTORIES:

        print(“Both players must have inventories.”)

        return

    if s_index >= len(INVENTORIES[sender]) or s_index < 0:

        print(“Invalid sender item index.”)

        return

    if r_index >= len(INVENTORIES[receiver]) or r_index < 0:

        print(“Invalid receiver item index.”)

        return

    trade = {

        “sender”: sender,

        “receiver”: receiver,

        “sender_item”: INVENTORIES[sender][s_index],

        “receiver_item”: INVENTORIES[receiver][r_index]

    }

    PENDING_TRADES[receiver] = trade

    print(f“\n{sender} offered a trade to {receiver}:”)

    print(f”  {sender} gives:   {trade[‘sender_item’][‘weapon’]} | {trade[‘sender_item’][‘skin’]}”)

    print(f”  {receiver} gives: {trade[‘receiver_item’][‘weapon’]} | {trade[‘receiver_item’][‘skin’]}\n”)

def accept_trade(receiver):

    if receiver not in PENDING_TRADES:

        print(“No trade offer to accept.”)

        return

    trade = PENDING_TRADES.pop(receiver)

    sender = trade[“sender”]

    INVENTORIES[sender].remove(trade[“sender_item”])

    INVENTORIES[receiver].remove(trade[“receiver_item”])

    INVENTORIES[sender].append(trade[“receiver_item”])

    INVENTORIES[receiver].append(trade[“sender_item”])

    print(f“\n{receiver} accepted the trade! Items swapped.\n”)

def decline_trade(receiver):

    if receiver not in PENDING_TRADES:

        print(“No trade offer to decline.”)

        return

    del PENDING_TRADES[receiver]

    print(f“\n{receiver} declined the trade.\n”)

# =========================

# CASE NAME NORMALIZER

# =========================

def normalize_case_name(user_input):

    cleaned = user_input.strip().lower().replace(“-“, “”).replace(” “, “”)

    for case in CASES:

        key = case.lower().replace(“-“, “”).replace(” “, “”)

        if cleaned in key:

            return case

    best_match = None

    best_score = 0

    for case in CASES:

        key = case.lower().replace(“-“, “”).replace(” “, “”)

        score = sum(1 for c in cleaned if c in key)

        if score > best_score:

            best_score = score

            best_match = case

    if best_score >= 3:

        print(f“\nDid you mean: {best_match}?”)

        return best_match

    return None

# =========================

# MAIN MENU

# =========================

def main_menu(username):

    while True:

        print(“\n===== CS:GO CASE GAME V3 =====”)

        hud(username)

        print(“1. Open Case”)

        print(“2. View Inventory”)

        print(“3. Jackpot Gamble”)

        print(“4. Offer Trade”)

        print(“5. Accept Trade”)

        print(“6. Decline Trade”)

        print(“7. Clicker Mode”)

        print(“8. View Profile”)

        print(“9. Exit Game”)

        choice = input(“\nChoose an option: “)

        if choice == “1”:

            print(“\nAvailable Cases:”)

            for case in CASES:

                print(f“- {case}”)

            case_input = input(“Enter case name: “)

            case_name = normalize_case_name(case_input)

            if not case_name:

                print(“\nInvalid case name. Available cases:”)

                for case in CASES:

                    print(f“- {case}”)

                print()

            else:

                open_case(case_name, username)

        elif choice == “2”:

            show_inventory(username)

        elif choice == “3”:

            jackpot_gamble(username)

        elif choice == “4”:

            receiver = input(“Enter the username to trade with: “)

            show_inventory(username)

            try:

                s_index = int(input(“Your item number: “)) – 1

                show_inventory(receiver)

                r_index = int(input(“Their item number: “)) – 1

                offer_trade(username, receiver, s_index, r_index)

            except:

                print(“Invalid input.”)

        elif choice == “5”:

            accept_trade(username)

        elif choice == “6”:

            decline_trade(username)

        elif choice == “7”:

            clicker_mode(username)

        elif choice == “8”:

            show_profile(username)

        elif choice == “9”:

            print(“\nExiting game…\n”)

            break

        else:

            print(“Invalid choice.”)

# =========================

# ENTRY POINT

# =========================

if __name__ == “__main__”:

    username = input(“Enter your username: “)

    if username == OWNER:

        print(“Owner privileges enabled.”)

    else:

        print(“Standard player mode.”)

    if username not in INVENTORIES:

        INVENTORIES[username] = []

    get_player(username)

    main_menu(username)