Bot de economia e RP no Discord: como controlar loja, estoque e banco (D&D, DayZ, GTA RP)
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
/shopcom o que um comerciante tem em estoque e a que preço. - Opcionalmente, um comando
/bankcom 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:Decrementregistra uma venda. A staff roda isso quando uma venda acontece no roleplay./shop update row:Bandage stock:20 _mode:Incrementregistra uma reposição./shop update row:Bandage price:30muda o preço./shop query stock:0lista 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:Incrementregistra um depósito./bank update row:Mara loan_owed:100 _mode:Decrementregistra um pagamento./bank leaderboard column:loan_owedranqueia 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
addou 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.