Currency Library
In-game currency formatting, display, and management system for the Lilia framework.
Overview
The currency library provides comprehensive functionality for managing in-game currency within the Lilia framework. It handles currency formatting, display, and physical money entity spawning. The library operates on both server and client sides, with the server handling money entity creation and spawning, while the client handles currency display formatting. It includes localization support for currency names and symbols, ensuring proper pluralization and formatting based on amount values. The library integrates with the configuration system to allow customizable currency symbols and names.
get
Purpose
Formats a currency amount with the proper symbol, singular/plural form, and localization.
When Called
When displaying currency amounts in UI, chat messages, or any text output.
Returns
- string Formatted currency string with symbol and proper singular/plural form.
Realm
Shared
Example Usage
Low Complexity:
-- Simple: Format a basic currency amount
local formatted = lia.currency.get(100)
print(formatted) -- "$100 dollars" (example output)
Medium Complexity:
-- Medium: Format currency with conditional display
local playerMoney = 1500
if playerMoney > 0 then
local displayText = "Balance: " .. lia.currency.get(playerMoney)
chat.AddText(Color(255, 255, 255), displayText)
end
High Complexity:
-- High: Format multiple currency amounts with validation
local transactions = {100, 1, 0, -50, 2500}
for _, amount in ipairs(transactions) do
if amount and amount ~= 0 then
local formatted = lia.currency.get(math.abs(amount))
local prefix = amount > 0 and "+" or "-"
print(prefix .. formatted)
end
end
spawn
Purpose
Creates and spawns a physical money entity at the specified position with the given amount.
When Called
When spawning money drops, creating money rewards, or placing currency in the world.
Returns
- Entity The created money entity if successful, nil if parameters are invalid.
Realm
Server
Example Usage
Low Complexity:
-- Simple: Spawn money at player's position
local pos = player:GetPos()
lia.currency.spawn(pos, 100)
Medium Complexity:
-- Medium: Spawn money with specific angle and validation
local dropPos = trace.HitPos
local dropAmount = math.random(50, 200)
if dropPos then
local money = lia.currency.spawn(dropPos, dropAmount, Angle(0, math.random(0, 360), 0))
if money then
print("Money spawned successfully")
end
end
High Complexity:
-- High: Spawn multiple money entities with advanced positioning
local spawnPositions = {
{pos = Vector(100, 200, 50), amount = 500, angle = Angle(0, 45, 0)},
{pos = Vector(-100, 200, 50), amount = 250, angle = Angle(0, 90, 0)},
{pos = Vector(0, 0, 100), amount = 1000, angle = Angle(0, 180, 0)}
}
for _, data in ipairs(spawnPositions) do
local money = lia.currency.spawn(data.pos, data.amount, data.angle)
if money then
money:SetVelocity(Vector(math.random(-50, 50), math.random(-50, 50), 100))
end
end