Todos los artículos

Cómo llevar la tienda, el stock y el banco de un servidor de rol en Discord (D&D, DayZ, GTA RP)

Equipo de CordBase

Para un servidor de D&D o de rol, usa una tabla de CordBase para los inventarios de los jugadores (una fila por objeto, con su propietario) y otra para el stock de la tienda (una fila por objeto, con una cantidad). Los jugadores consultan con comandos de barra (slash commands) y el staff cambia las cantidades con /shop update ... _mode:Decrement. Es un bot de inventario y de tienda para rol que registra el stock; no lleva la tienda por ti.

La mayoría de los servidores empiezan con un mensaje fijado, una hoja de cálculo o un bot de economía. El mensaje fijado se rompe cuando dos personas lo editan a la vez, la hoja de cálculo vive fuera de Discord y los bots de economía están pensados para comprar cosas con puntos. Esta guía monta registros sencillos dentro de Discord, usando CordBase, que desarrollamos nosotros. El inventario y la tienda llevan unos diez minutos.

Si tus jugadores también necesitan fichas de personaje, la plantilla de ficha de personaje gratuita te da fichas para copiar y pegar de D&D 5e, rol, fantasía y ciencia ficción.

Lo que tendrás al final

  • Un comando /inventory (add, query, view, update, delete, leaderboard) con lo que lleva cada personaje.
  • Un comando /shop con lo que tiene en stock un comerciante y a qué precio.
  • Opcionalmente, un comando /bank con depósitos y préstamos por miembro, como números sin más.
  • Permisos por rol para que los jugadores puedan consultar y solo el staff cambie las cantidades.

Paso 1: Configura el inventario por personaje

La parte del inventario se configura igual que en la guía del banco del gremio: instala la plantilla Control de inventario (objeto, cantidad, propietario, rareza, notas), cambia el slug a inventory, da a los jugadores Lectura y a tu rol de máster o de staff Escritura. Hay dos cosas que importan más en un servidor de rol que en un banco del gremio.

Primero, comandos como update y view te hacen elegir una fila de una lista que solo muestra la primera columna de texto de la tabla. Si Mara y Joss tienen las dos una Healing Potion, verás dos líneas idénticas, así que pon el propietario en el nombre del objeto: Healing Potion (Mara). La columna del propietario sigue filtrando por miembro.

Segundo, el permiso de Escritura cubre todas las filas, no solo las de cada jugador, así que un jugador con Escritura puede editar el inventario de cualquiera. Reserva Escritura para el staff y da a los jugadores Lectura.

/inventory add item:Healing Potion (Mara) quantity:3 owner:@Mara rarity:Common

/inventory update row:Healing Potion (Mara) quantity:1 _mode:Decrement

/inventory query owner:@Mara lista todo lo que tiene Mara. Query muestra primero las filas más nuevas (10 por defecto, hasta 25 con limit) y solo las cuatro primeras columnas, así que pon delante las importantes. Sumar añade, Restar quita y Establecer (la opción por defecto) reemplaza el valor.

Paso 2: Añade una tabla de stock de la tienda

El plan Free incluye dos tablas, así que el inventario y la tienda caben. En el panel, crea una tabla llamada Shop con estas columnas: item (texto, obligatoria), stock (número, obligatoria), price (número), category (opción, con tus propias opciones, como Weapons, Ammo, Medical) y notes (texto). El tipo de una columna no se puede cambiar después de crearla, así que haz que las cantidades y los precios sean números.

  • /shop add item:Bandage stock:40 price:25 category:Medical
  • /shop update row:Bandage stock:1 _mode:Decrement registra una venta. El staff lo ejecuta cuando hay una venta en el rol.
  • /shop update row:Bandage stock:20 _mode:Increment registra una reposición.
  • /shop update row:Bandage price:30 cambia el precio.
  • /shop query stock:0 lista los objetos agotados (una coincidencia exacta, no "menos que").

_mode se aplica a todos los números que pases en un mismo comando. Si envías stock y price juntos con Restar, bajan los dos. Cámbialos en comandos separados.

Para un concesionario de vehículos, usa la misma estructura con vehículo, stock, precio y una columna de vendedor (tipo miembro), y entonces /shop query dealer:@Kade muestra el inventario de un vendedor.

El stock puede bajar de cero. Nada detiene una resta en 0, así que revisa la cantidad si te importa.

Paso 3: Banco y préstamos como registros simples (opcional)

Crea una tabla llamada Bank con account (texto, obligatoria, la primera para que el selector de filas la muestre), member (miembro), balance (número), loan_owed (número) y notes (texto). El inventario y la tienda ya usan las dos tablas gratuitas, así que esta tercera necesita Pro.

  • /bank add account:Mara member:@Mara balance:500 loan_owed:0
  • /bank update row:Mara balance:200 _mode:Increment registra un depósito.
  • /bank update row:Mara loan_owed:100 _mode:Decrement registra un pago del préstamo.
  • /bank leaderboard column:loan_owed ordena las deudas de mayor a menor.

No hay intereses, ni fechas de vencimiento, ni transferencias automáticas. El staff escribe los números. Tampoco hay historial de cambios: view muestra quién creó una fila y cuándo cambió por última vez, no los valores anteriores. Si necesitas un rastro, añade una tabla Transactions (cuenta, importe, tipo, fecha) y añade una fila por cada movimiento. Para un fondo común del gremio, consulta la guía del banco del gremio.

Cuándo encaja mejor otra cosa

CordBase no tiene caja de la tienda, ni una moneda que los jugadores ganen o gasten, ni pagos entre miembros. Los comandos son siempre el nombre de la tabla más una de las acciones fijas, así que no puedes crear un /withdraw personalizado. No lee mensajes, así que escribir "-100 flechas" en el chat no hace nada. Si quieres una economía virtual donde los miembros ganen monedas y compren en una tienda, usa un bot de economía como UnbelievaBoat. Si quieres reglas y dados, usa un bot de rol de mesa como Avrae (consulta la guía de fichas de personaje). Una hoja de cálculo es mejor si necesitas fórmulas.

Límites que conviene conocer

  • Free: 2 tablas, 100 filas cada una. Pro (8 US$ al mes): tablas ilimitadas, 10 000 filas por tabla y ediciones masivas. Max (15 US$ al mes): 50 000 filas. La exportación a CSV y JSON está en todos los planes. Consulta los precios.
  • Hasta 25 columnas por tabla. Las tablas se diseñan en la web, no desde Discord.
  • Cada miembro puede ejecutar 5 comandos cada 10 segundos.
  • Hoy no hay importación de CSV, así que las listas que ya tengas se meten con add o desde el panel.
  • Consulta la referencia de comandos para ver todas las opciones.

Lo que la gente pregunta

¿Puedo tener un comando /withdraw o dejar que los jugadores compren objetos ellos mismos?

No. Cada tabla recibe las acciones fijas add, query, view, update, delete y leaderboard bajo su propio nombre. Lo más parecido es /shop update row:... stock:1 _mode:Decrement, que puede ejecutar cualquiera con acceso de escritura. No se le cobra nada al jugador ni se mueve ninguna moneda.

¿Puede cada jugador ver o editar solo su propio inventario?

No como permiso. Cualquiera con acceso de lectura puede consultar la tabla entera, y cualquiera con acceso de escritura puede cambiar cualquier fila. Los miembros pueden filtrar sus propios objetos con /inventory query owner:@yourname.

¿Cabe en el plan gratuito?

Las tablas de inventario y de tienda sí, porque Free permite 2 tablas con 100 filas cada una. Una tercera tabla, como un banco, necesita Pro por 8 US$ al mes.