Todos os posts

Bot de economia e RP no Discord: como controlar loja, estoque e banco (D&D, DayZ, GTA RP)

Equipe CordBase

Para um servidor de D&D ou de roleplay, mantenha uma tabela do CordBase para os inventários dos jogadores (uma linha por item, com o dono) e outra para o estoque da loja (uma linha por item, com a quantidade). Os jogadores consultam com comandos de barra (slash commands), e a staff muda as quantidades com /shop update ... _mode:Decrement. Ele registra o estoque; ele não roda uma loja.

A maioria dos servidores começa com uma mensagem fixada, uma planilha ou um bot de economia. A mensagem fixada quebra quando duas pessoas editam ao mesmo tempo, a planilha fica fora do Discord, e os bots de economia são feitos em torno de comprar coisas com pontos. Este guia monta registros simples dentro do Discord, usando o CordBase, que é feito por nós. O inventário e a loja levam uns dez minutos.

Se os seus jogadores também precisam de fichas de personagem, o template de ficha de personagem grátis te dá fichas para copiar e colar de D&D 5e, roleplay, fantasia e ficção científica.

O que você vai ter no final

  • Um comando /inventory (add, query, view, update, delete, leaderboard) com o que cada personagem carrega.
  • Um comando /shop com o que um comerciante tem em estoque e a que preço.
  • Opcionalmente, um comando /bank com depósitos e empréstimos por membro, como números simples.
  • Permissões por cargo para que os jogadores consultem e só a staff mude as quantidades.

Passo 1: monte o inventário por personagem

A parte do inventário é a mesma configuração do guia do banco da guilda: instale o template Controle de inventário (item, quantity, owner, rarity, notes), renomeie o slug para inventory, dê aos jogadores leitura e ao cargo do mestre ou da staff escrita. Duas coisas importam mais num servidor de roleplay do que num banco da guilda.

Primeiro, comandos como update e view fazem você escolher uma linha de uma lista que mostra só a primeira coluna de texto da tabela. Se a Mara e o Joss têm uma Healing Potion cada, aparecem duas linhas idênticas, então coloque o dono no nome do item: Healing Potion (Mara). A coluna owner continua filtrando por membro.

Segundo, a permissão de escrita vale para todas as linhas, não só as do próprio jogador, então um jogador com escrita pode editar o inventário de qualquer pessoa. Deixe a escrita para a staff e dê leitura aos jogadores.

/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 tudo o que está com a Mara. O query mostra as linhas mais novas primeiro (10 por padrão, até 25 com limit) e só as quatro primeiras colunas, então deixe as importantes na frente. Somar adiciona, Subtrair tira e Definir (o padrão) substitui o valor.

Passo 2: adicione uma tabela de estoque da loja

O plano Free inclui duas tabelas, então inventário mais loja cabe. No painel, crie uma tabela chamada Shop com estas colunas: item (texto, obrigatória), stock (número, obrigatória), price (número), category (opção, com as suas próprias opções, como Weapons, Ammo, Medical) e notes (texto). Os tipos de coluna não podem ser mudados depois da criação, então deixe quantidades e preços como números.

  • /shop add item:Bandage stock:40 price:25 category:Medical
  • /shop update row:Bandage stock:1 _mode:Decrement registra uma venda. A staff roda isso quando uma venda acontece no roleplay.
  • /shop update row:Bandage stock:20 _mode:Increment registra uma reposição.
  • /shop update row:Bandage price:30 muda o preço.
  • /shop query stock:0 lista os itens esgotados (valor exato, não "menor que").

O _mode vale para todos os números que você passa num comando. Se você mandar stock e price juntos com Subtrair, os dois diminuem. Mude cada um num comando separado.

Para uma concessionária de veículos, use o mesmo formato com vehicle, stock, price e uma coluna dealer (tipo membro), e aí /shop query dealer:@Kade mostra o estoque de um vendedor.

O estoque pode ficar negativo. Nada impede subtrair quando já está em 0, então confira a quantidade se isso importar para você.

Passo 3: banco e empréstimos como registros simples (opcional)

Crie uma tabela chamada Bank com account (texto, obrigatória, primeiro para que o seletor de linhas mostre essa coluna), member (membro), balance (número), loan_owed (número) e notes (texto). Inventário e loja já usam as duas tabelas grátis, então esta terceira precisa do Pro.

  • /bank add account:Mara member:@Mara balance:500 loan_owed:0
  • /bank update row:Mara balance:200 _mode:Increment registra um depósito.
  • /bank update row:Mara loan_owed:100 _mode:Decrement registra um pagamento.
  • /bank leaderboard column:loan_owed ranqueia as maiores dívidas primeiro.

Não há juros, vencimento nem transferência automática. A staff digita os números. Também não há histórico de alterações: o view mostra quem criou a linha e quando ela mudou pela última vez, não os valores antigos. Se você precisa de um rastro, adicione uma tabela Transactions (account, amount, kind, date) e registre uma linha para cada movimentação. Para um estoque compartilhado da guilda, veja o guia do banco da guilda.

Quando outra coisa funciona melhor

O CordBase não tem checkout de loja, nem moeda que os jogadores ganham ou gastam, nem pagamentos entre membros. Os comandos são sempre o nome da tabela mais uma das ações fixas, então não dá para criar um /withdraw personalizado. Ele não lê mensagens, então "-100 flechas" digitado no chat não faz nada. Se você quer uma economia virtual em que os membros ganham moedas e compram numa loja, use um bot de economia como o UnbelievaBoat. Se você quer regras e dados, use um bot de RPG de mesa como o Avrae (veja o guia de fichas de personagem). Uma planilha é melhor se você precisa de fórmulas.

Limites que vale conhecer

  • Free: 2 tabelas, 100 linhas cada. Pro (US$ 8/mês): tabelas ilimitadas, 10.000 linhas por tabela e edições em massa. Max (US$ 15/mês): 50.000 linhas. Exportação em CSV e JSON está em todos os planos. Veja os preços.
  • Até 25 colunas por tabela. As tabelas são criadas na web, não pelo Discord.
  • Cada membro pode rodar 5 comandos a cada 10 segundos.
  • Hoje não há importação de CSV, então listas existentes entram com add ou pelo painel.
  • Veja a referência de comandos para todas as opções.

Perguntas frequentes

Posso ter um comando /withdraw ou deixar os jogadores comprarem itens sozinhos?

Não. Cada tabela recebe as ações fixas add, query, view, update, delete e leaderboard com o nome dela. O mais próximo disso é /shop update row:... stock:1 _mode:Decrement, que qualquer pessoa com acesso de escrita pode rodar. Nada é cobrado do jogador e nenhuma moeda se move.

Cada jogador pode ver ou editar só o próprio inventário?

Não como permissão. Quem tem acesso de leitura pode consultar a tabela inteira, e quem tem acesso de escrita pode mudar qualquer linha. Os membros podem filtrar os próprios itens com /inventory query owner:@yourname.

Isso cabe no plano grátis?

As tabelas de inventário e de loja cabem, já que o Free permite 2 tabelas com 100 linhas cada. Uma terceira tabela, como um banco, precisa do Pro, por US$ 8/mês.