Habilidade Roblox com Mana, Cooldown e Segurança Server-Side
Gere uma implementação profissional de habilidade especial para Roblox, incluindo consumo de mana ou energia, tempo de recarga, bloqueio de spam e feedback visual para o jogador. O prompt foi estruturado para produzir código seguro, modular e pronto para adaptação ao seu projeto.
A solução exige arquitetura cliente-servidor: o cliente captura a tecla/botão e exibe a interface, enquanto o servidor valida integralmente recursos, cooldown, estado do personagem e efeitos da habilidade. Ideal para RPGs, jogos de combate, arenas, simuladores e experiências com skills.
Antes de gerar o código, basta colar os nomes reais dos objetos do seu Explorer, RemoteEvents disponíveis, estrutura de atributos/valores de mana e detalhes do efeito desejado. O resultado incluirá scripts completos, comentados e instruções práticas para testar no Roblox Studio.
Atue como um desenvolvedor Roblox sênior, especialista em Luau, arquitetura cliente-servidor, combate seguro e sistemas de habilidades escaláveis. Crie uma implementação completa de uma habilidade especial com custo de mana/energia e cooldown, pronta para eu adaptar e colar no Roblox Studio. Antes de escrever o código, use o contexto abaixo. Se algum dado estiver ausente, não invente nomes de objetos críticos: declare uma seção curta chamada "Premissas adotadas" e use nomes-padrão fáceis de substituir. Não faça perguntas de retorno; entregue uma solução funcional com essas premissas. Meu contexto do jogo é: - Nome da habilidade e descrição do efeito: [COLE AQUI] - Tecla, botão mobile ou ação de controle para ativar: [COLE AQUI] - Custo de mana/energia por uso: [COLE AQUI] - Cooldown em segundos: [COLE AQUI] - Onde mana/energia é armazenada (Attribute, NumberValue, leaderstats, pasta etc.): [COLE AQUI] - Valor máximo e regras de regeneração de mana/energia: [COLE AQUI] - RemoteEvents/RemoteFunctions já existentes, com seus caminhos no Explorer: [COLE AQUI] - Objetos de UI existentes (ScreenGui, botão, barra, labels), se houver: [COLE AQUI] - Efeito da habilidade (dano, dash, projétil, cura, área, buff etc.) e parâmetros: [COLE AQUI] - Estrutura relevante do Explorer e nomes exatos de pastas/modelos: [COLE AQUI] - Regras extras, como times permitidos, tool obrigatória, level mínimo ou estados que bloqueiam uso: [COLE AQUI] Implemente obrigatoriamente uma arquitetura com os seguintes arquivos, identificando claramente o TIPO e o local de cada um no Explorer: 1. Um ModuleScript de configuração em ReplicatedStorage/Shared/AbilityConfig (ou caminho equivalente informado por mim), contendo custo, cooldown, alcance, nomes/IDs e parâmetros ajustáveis da habilidade. 2. Um Script servidor em ServerScriptService, responsável pela lógica autoritativa. Ele deve criar ou localizar o RemoteEvent de ativação de forma segura, controlar cooldown por UserId no servidor, validar Player, Character, Humanoid, HumanoidRootPart, estado de vida, custo de recurso, regras extras e todos os argumentos enviados pelo cliente. O servidor deve descontar mana/energia somente após as validações e executar o efeito real da habilidade. Nunca confie no cliente para informar dano, alvo válido, posição, direção, custo, cooldown, moeda, inventário ou resultado de colisão. 3. Um LocalScript em StarterPlayer/StarterPlayerScripts ou StarterGui, conforme a UI informada, para capturar input via ContextActionService ou UserInputService, impedir spam local, solicitar a ativação via RemoteEvent e atualizar feedback de cooldown/mana. O cliente deve tratar a experiência visual, mas não decidir o resultado da habilidade. Para habilidades com alvo, raycast ou área, a validação final deve ocorrer no servidor. Use Workspace:Raycast com RaycastParams quando aplicável, limite alcance e direção com base na posição real do HumanoidRootPart e aplique dano exclusivamente com Humanoid:TakeDamage no servidor. Adicione rate limiting além do cooldown quando fizer sentido, proteja contra personagens removidos/respawn, desconecte conexões temporárias e evite memory leaks. Não use loadstring, HttpService, código ofuscado, waits imprecisos quando task.wait for apropriado, nem loops infinitos desnecessários. Entregue a resposta exatamente nesta organização: primeiro, uma visão rápida da arquitetura e das premissas; depois, uma seção para cada arquivo com seu caminho no Explorer, tipo de script e código Luau completo. Todo código deve estar dentro de blocos markdown identificados como ```lua, ser completo, executável e extensamente comentado em português do Brasil. Não forneça pseudocódigo, trechos incompletos ou comentários como "adicione sua lógica aqui" sem uma implementação padrão funcional. Inclua tratamento de erros com warn apenas quando útil, validação de referências com WaitForChild usando timeout onde adequado, e uma estratégia clara para atributos ou NumberValues de mana/energia. Se eu não especificar a UI, implemente feedback mínimo por notificações/prints controlados e deixe pontos de integração documentados. Ao final, inclua uma seção objetiva "Como testar no Roblox Studio", explicando a montagem no Explorer, configuração dos valores, teste com Play e Start Server/Start Player, cenários de teste de mana insuficiente, cooldown, spam de RemoteEvent, morte/respawn e validação multiplayer.