Comandos#
Trading Cards registra un único comando. Todo lo que hacen los jugadores pasa por ítems y NPC, y todo lo que hacen los administradores pasa por la ventana que abre.
Comando | Dónde | Descripción |
|---|---|---|
| En el juego | Abre y cierra el creador: Peds, Card Creator, Rarities y Customize theme. Solo para jugadores con el ace |
Config.CardCreator = {
command = 'cardcreator', -- the chat command
permission = 'command.cardcreator', -- the ace that grants it
adminGroups = { 'admin', 'superadmin', 'god' },
}Cada acción del creador se vuelve a comprobar en el servidor, así que un jugador que fuerce la apertura de la ventana sin permiso no puede guardar, eliminar ni entregar nada.
Exports del cliente#
Para abrir las ventanas del script desde tus propios recursos — un menú radial, una app de teléfono, un prop de portátil.
OpenBoosterPack
Reproduce la apertura de un sobre que tiene el jugador. El servidor retira un sobre del inventario y entrega las cartas, exactamente igual que al usar el ítem — un jugador que no tiene ese sobre recibe un error y nada más.
exports['qs-tradingcards']:OpenBoosterPack({ name = 'tradingcard_booster_pack' })OpenInterationMenu
Abre el panel Card Interaction (ver, mostrar, guardar en el álbum) para un ítem de carta. Pasa la entrada del inventario de la carta, con sus metadatos en info o metadata.
local item = exports.ox_inventory:GetSlot(slot) -- or your inventory's equivalent
exports['qs-tradingcards']:OpenInterationMenu(item)OpenCreator
Abre el creador para un jugador con acceso — lo mismo que escribir /cardcreator. Llamarlo de nuevo lo cierra.
exports['qs-tradingcards']:OpenCreator()Exports del servidor#
useItem (standalone)
Sin framework, ejecuta la acción registrada para cualquiera de los ítems del script, tras comprobar que el jugador lo tiene. Es a lo que apunta un ítem con ox_inventory, y se puede llamar directamente:
-- ox_inventory/data/items.lua
server = { export = 'qs-tradingcards.useItem' },
-- from another resource
exports['qs-tradingcards']:useItem(source, 'tradingcard_stash', slot)OpenInterationMenu y openAlbum (ox_inventory)
Handlers con la forma que ox_inventory espera para el server.export de un ítem, para servidores que prefieren enrutar así los ítems de carta y álbum:
['tradingcard_basic'] = {
label = 'Basic Card',
stack = false,
server = { export = 'qs-tradingcards.OpenInterationMenu' },
},
['tradingcard_stash'] = {
label = 'Card Album',
stack = false,
server = { export = 'qs-tradingcards.openAlbum' },
},Con ESX o QBCore los ítems ya son usables a través del framework, así que bastan las definiciones simples de Instalación.
Eventos#
Eventos de servidor a cliente que escucha el script. Lánzalos desde tu propio código de servidor para abrir una ventana a un jugador:
-- Open the card menu for a card item the player holds
TriggerClientEvent('tradingcards:client:openCardInteractionMenu', source, item)
-- Open an album, given the album item's metadata
TriggerClientEvent('tradingcards:client:OpenAlbum', source, item.metadata)
-- Open a booster pack (the server still checks the player holds it)
TriggerClientEvent('tradingcards:client:OpenBoosterPack', source, { name = 'tradingcard_booster_legends' })Dar cartas y sobres desde tus scripts#
Los sobres y los álbumes son ítems normales: entrégalos con la función AddItem de tu propio inventario, desde una recompensa, una tabla de botín, un trabajo o una apertura de cajas.
Una carta es el ítem de su rareza con los datos de la carta como metadatos. Para entregar una carta concreta, léela de qs_tradingcards_cards y pasa estos campos:
local card = MySQL.single.await('SELECT * FROM qs_tradingcards_cards WHERE id = ?', { 5 })
exports.ox_inventory:AddItem(source, 'tradingcard_legendary', 1, {
cardId = card.id,
label = card.label,
rarity = card.rarity,
cardImage = card.image, -- the artwork; keep it out of `image`, which inventories use as the icon
term = card.term,
description = card.description,
health = card.health,
attack = card.attack,
height = card.height,
weight = card.weight,
quality = card.quality,
booster = card.booster,
theme = card.theme,
graded = false,
})Usa el ítem que corresponde a la rareza de la carta (el Inventory item de su rareza en el creador). Un administrador también puede entregar cualquier carta a cualquier jugador conectado desde el botón Give del creador, sin nada de código.



