function Cashier:ScanItem(item) self.totalBill = self.totalBill + item.price self.itemsScanned = self.itemsScanned + 1 game.ReplicatedStorage.Events.UpdateBill:FireAllClients(self.totalBill)
| UI Element | Data Source | Update Frequency | |---|---|---| | Current Money | Module D | Real-time | | Daily Customers | Module C | Per spawn/leave | | Stock Alerts | Module B | When shelf < 20% | | Customer Thoughts | Module C | Floating text above head | | Day / Time | System clock | Every 60 sec | supermarket simulator script
| Function Name | Parameters | Description | |---|---|---| | AddDailyIncome(amount) | Money earned | Updates bank balance. | | PayDailyExpenses() | None | Deducts rent, salaries, electricity. | | UpgradeCashierSpeed(cost) | Upgrade cost | Reduces scan time per item. | | UnlockNewProduct(productID, cost) | Product ID, cost | Adds new item to supplier list. | | ExpandStoreArea(areaID, cost) | Area ID, cost | Unlocks new shelves and floor space. | | GetDailyReport() | None | Shows profit/loss, customer count, top selling item. | function Cashier:ScanItem(item) self
| Function Name | Parameters | Description | |---|---|---| | StartTransaction(customer) | Customer object | Opens the checkout UI, scans items one by one. | | ScanItem(item) | Item ID, price | Adds item to current bill, updates total. | | CalculateTotal() | None | Returns total price + tax. | | ProcessPayment(paymentMethod) | "cash" or "card" | Checks if customer has enough money; handles change. | | BagItems() | None | Animates bagging, removes items from counter. | | CompleteTransaction() | None | Gives receipt, spawns next customer in line. | | | UnlockNewProduct(productID, cost) | Product ID, cost
Purpose: Spawns, navigates, decides purchases, and reacts to prices.
function Cashier:ProcessPayment() if self.currentCustomer.money >= self.totalBill then self.currentCustomer.money = self.currentCustomer.money - self.totalBill game.ReplicatedStorage.Events.AddMoney:FireServer(self.totalBill) self:CompleteTransaction() else print("Customer cannot afford – leaving angry") self.currentCustomer.happiness = 0 self.currentCustomer:LeaveStore() end end
Shelf = id = "A1", product = "Milk", maxCapacity = 12, currentStock = 5, restockPrice = 4.50, shelfPosition = Vector3.new(10, 2, 15)