Voltar para o blog
FiveM19 de junho de 20268 min de leitura

Como criar um script de FiveM do zero com o Claude Code

Um celular estilo iPhone com chat entre jogadores, criado por IA em minutos. O prompt completo, o passo a passo e os cuidados antes de subir na sua cidade.


Já falamos aqui sobre usar IA para corrigir erro no console. Agora vamos um passo além: criar um script inteiro do zero, dentro da sua base, sem escrever uma linha de código.

Para deixar concreto, o exemplo é um celular estilo iPhone que abre na tecla K, com um app de chat onde os jogadores conversam entre si por número, e as mensagens ficam salvas no banco de dados.

E o mais importante: o mesmo método serve para qualquer outro script que você queira.

Prefere assistir? O processo completo está no nosso tutorial em vídeo. O passo a passo escrito continua abaixo.

O que você precisa

Três coisas:

  • Uma assinatura do Claude, com o Claude Code disponível
  • A sua base, acessível no computador onde o Claude Code está instalado
  • Uma VPS para a cidade rodar

Sobre o custo, vale uma comparação honesta: a assinatura sai bem abaixo do que custa contratar um desenvolvedor para um sistema sob medida, que segundo os valores de mercado passa tranquilamente de mil reais. No nosso teste, criar o celular inteiro não chegou perto de estourar o limite do plano.

E a VPS é o primeiro passo, porque é ela que mantém a cidade no ar. Nos planos de FiveM da WyzeHost a máquina já vem com proteção DDoS, cache externo e endereço personalizado inclusos.

1. Abra o Claude Code e crie uma sessão

No aplicativo do Claude, vá até a aba Code e clique em New session.

Aplicativo do Claude na aba Code com a opção New session

É nessa aba que você aponta uma pasta do seu computador e manda o modelo trabalhar dentro dela.

2. Aponte a pasta da sua base

Logo acima do campo de mensagem existe uma linha com o local da sessão e um ícone de pasta. Clique nele para escolher a pasta, ou troque a que já estiver selecionada.

Escolha a pasta principal da base, aquela que contém resources, config e cache.

Janela de seleção de pasta com a pasta da base contendo cache, citizen, config e resources

Esse passo é o que faz toda a diferença. Com a base apontada, o modelo lê os seus resources, descobre sozinho qual framework você usa e escreve o script seguindo os padrões que já existem ali, em vez de devolver um código genérico que não encaixa.

3. Escreva o prompt

Aqui está o coração do processo. Este foi o prompt usado:

Crie um script no meu servidor FiveM. Consulte as framework e as funções
que minha base possui para criar.

A ideia é criar um script de celular. Quero que quando o jogador apertar
a letra "K", venha um celular do lado direito da tela, surgindo debaixo
para cima e parando no canto direito inferior da tela. Nesse celular, eu
quero criar com a cara de um iphone, onde vai ter ali o background de iOS
e um aplicativo de chat, onde os jogadores podem conversar entre si. Ou
seja, cada um terá seu identificador para receber as mensagens, como um
bate-papo normal.

- Crie uma tabela no banco de dados para isso seguindo os padrões das
  demais tabelas que eu tenho;
- Crie um framer de carcaça do celular em volta, para não ficar uma tela
  avulsa;
- Coloque para quando apertar ESC, a tela do celular desça para baixo e
  liberando para o jogador conseguir andar normalmente;
- Quando abrir o celular, faça o jogador ter uma animação pegando um
  celular na mão;
- Faça com que nunca se perca o estado atual de mensagens quando
  reiniciar o servidor;
- A ideia é imitar o WhatsApp, simulando literalmente um iphone e o
  whatsapp dentro dele, mas dentro do meu servidor FiveM.
Prompt enviado no Claude Code e o modelo identificando o framework vRP da base

Repare no que faz esse prompt funcionar, porque é isso que você vai copiar para os seus:

  • A primeira linha manda consultar a base. Sem isso, o modelo chuta padrões em vez de usar os seus.
  • A descrição visual é específica. Não é "faça um celular", é de onde ele surge, onde para e com que cara.
  • A lista separa as regras. Cada linha é um requisito verificável, e é bem mais fácil conferir depois se cada um foi cumprido.
  • O banco entra como requisito. Pedir para seguir o padrão das tabelas existentes evita tabela solta fora do estilo da base.
  • Tem uma frase de intenção no fim. "Imitar o WhatsApp dentro do FiveM" resume o objetivo e ajuda o modelo a decidir os detalhes que você não citou.

Repare também no que aconteceu logo abaixo do prompt: ele explorou a pasta, identificou que a base é vRP e foi estudar os padrões antes de escrever qualquer coisa.

4. Leia o resumo antes de sair testando

Alguns minutos depois vem o relatório do que foi feito.

Resumo do Claude Code listando o resource criado, a tabela no banco e os arquivos de cliente e servidor

Vale ler com atenção, porque é aqui que você confere se ele fez o que você pediu. No exemplo:

  • Resource criado dentro de resources/[Core]/[Player]/unity_phone/, que já sobe pelo ensure existente, sem precisar mexer no resources.cfg
  • Tabela vrp_phone_messages, seguindo o padrão das outras tabelas, criada automaticamente no start
  • Identificador de cada jogador usando o campo phone de vrp_user_identities, que o vRP já gera
  • Cliente e servidor separados, com a tecla K, a animação e o ESC fechando

Note que ele usou o telefone que a base já gerava, em vez de inventar um sistema novo de números. É exatamente esse tipo de decisão que só acontece quando o modelo tem acesso à base.

No fim vem o passo a passo de teste:

Instruções de teste geradas pelo Claude Code

5. Confira os arquivos criados

Se você quiser ver o que foi escrito, abra a pasta num editor. No exemplo o resource ficou com a estrutura completa: client-side, server-side, web-side com index.html, style.css e app.js, mais o config.lua e o fxmanifest.lua.

Editor de código mostrando os arquivos do resource unity_phone criados pelo Claude Code

Não precisa entender cada linha. Mas passar o olho ajuda, principalmente no config.lua, que é onde ficam os valores que você provavelmente vai querer ajustar depois.

6. Suba o script

No console do FXServer, recarregue a lista de resources e inicie o novo:

refresh
ensure unity_phone
Console do FXServer iniciando o resource e confirmando a criação da tabela no banco

Repare na última linha: a tabela foi criada sozinha, sem você precisar importar nenhum .sql.

7. Confirme no banco de dados

Abra o HeidiSQL e atualize. A tabela nova está lá, junto com as outras da base.

HeidiSQL mostrando a tabela vrp_phone_messages criada junto das demais tabelas do vRP

8. Teste no jogo

Entre na cidade e aperte K. No primeiro teste o celular apareceu funcionando, mas abrindo direto na lista de conversas.

Celular aberto no jogo mostrando a lista de conversas vazia

Funciona, mas não é bem um celular. É aqui que entra a parte que mais importa nesse tipo de trabalho: ir ajustando em cima do que já existe.

9. Peça os ajustes

Em vez de recomeçar, descreva o que você quer diferente. No exemplo o pedido foi que o celular abrisse numa tela inicial estilo iOS, com relógio e data, e que o chat só abrisse ao clicar num ícone de WhatsApp.

Resposta do Claude Code listando as mudanças feitas na tela inicial e na navegação

Resultado: home screen com relógio grande e data em português, papel de parede, grade de ícones e dock, com a barrinha inferior voltando para a home, imitando o gesto do iPhone.

Celular no jogo com tela inicial estilo iOS, relógio, data e ícones de aplicativos

Duas conversas depois, o celular ficou com cara de celular. Esse é o ritmo normal: primeiro prompt entrega a estrutura, os seguintes fazem o acabamento.

10. Teste com outro jogador

Script de chat só se prova com duas pessoas. Com um amigo dentro do servidor, basta digitar o número dele e iniciar a conversa.

Conversa funcionando no celular do jogo, com mensagem enviada e resposta recebida

Mensagem enviada, resposta recebida, conversa registrada. E como tudo fica gravado no banco, o histórico sobrevive ao reinício do servidor, que era um dos requisitos do prompt.

Os cuidados antes de colocar na sua cidade

Essa é a parte que separa um teste divertido de um problema em produção.

Faça backup do banco antes. O script cria tabela, e mexer em banco de cidade com jogadores exige rede de segurança. Veja como fazer backup do banco de dados.

Teste fora da cidade principal. O ideal é validar num servidor de teste. Dá para rodar um segundo servidor na mesma máquina, como mostramos em como rodar dois servidores de FiveM na mesma VPS.

Confira a validação no servidor. Todo script que recebe dado do cliente precisa validar no lado do servidor, porque quem trapaceia dispara evento direto. Peça isso explicitamente: "valide no servidor quem pode enviar e para quem, e não confie em nada que vier do cliente".

Olhe o consumo depois. Script novo pode pesar mais do que parece. Depois de alguns dias com gente na cidade, confira no resmon.

Nunca cole chave no chat. Se for mandar trecho de configuração, apague antes a license key, a steam_webApiKey e a senha do banco.

Uma alteração por vez. Se a cidade quebrar depois de cinco mudanças juntas, você não vai saber qual foi.

Não para no celular

O mesmo caminho funciona para praticamente qualquer sistema: painel de configuração, sistema de anúncios estilo OLX, HUD personalizado, sistema de emprego, integração entre resources que você já tem.

E não serve só para criar. Serve também para corrigir bug, otimizar script pesado e adaptar sistema que veio pronto para a sua base. Escrevemos sobre os outros usos em como usar inteligência artificial para crescer o seu servidor.

Se ainda não tem a cidade no ar, comece por aqui: como criar um servidor de FiveM do zero. Com a base rodando numa VPS decente, o resto é conversa.

Pronto para começar o seu projeto?

Encontre o plano certo para o seu projeto e conte com servidores no Brasil, Ryzen 9 e anti-DDoS incluso.

Logo

Olá
como podemos te ajudar?

Suporte via Discord

Normalmente respondemos em 2 min.

Suporte via WhatsApp

Normalmente respondemos em 2 min.

Ver dúvidas comuns