Sistema Roblox de Morte, Respawn e Drop de Itens Seguro
Gere um sistema robusto de morte para Roblox no qual o servidor detecta a eliminação do jogador, seleciona itens elegíveis do inventário, cria drops físicos no mundo e controla o respawn com segurança. O prompt contempla proteção contra duplicação, mortes repetidas, reset manual do personagem e limpeza automática dos drops abandonados.
Ideal para jogos de sobrevivência, RPG, PvP, extraction, dungeon crawler e experiências com inventário baseado em Tools. Antes de gerar o código, basta informar a estrutura do seu projeto — nomes de pastas, Tools, atributos, RemoteEvents e regras de retenção de itens — para receber um Script Luau completo, comentado e pronto para ser inserido no Roblox Studio.
Atue como um desenvolvedor Roblox Luau sênior, especializado em sistemas multiplayer server-authoritative, inventário, física de drops e segurança anti-exploit. Crie um sistema completo de morte, respawn e drop de itens ao morrer, adaptado obrigatoriamente ao contexto do meu projeto que informarei abaixo. Antes de escrever o código, interprete os dados fornecidos em “CONTEXTO DO MEU JOGO”. Caso algum dado essencial esteja ausente, não interrompa a resposta com perguntas: assuma uma convenção segura, declare claramente as suposições em uma seção curta e concentre toda a configuração no topo do script para que eu possa alterá-la facilmente. CONTEXTO DO MEU JOGO (vou preencher): - Local dos itens persistentes/Tools do jogador: [ex.: Backpack, pasta Inventory dentro de Player, DataStore já existente etc.] - Onde ficam os itens equipados: [ex.: Character, Backpack] - Quais itens podem cair: [ex.: Tools com atributo DropOnDeath=true, todos exceto lista protegida] - Itens que nunca podem cair: [nomes, tags CollectionService ou atributos] - Regra de quantidade: [dropar tudo, porcentagem, máximo de X itens, sorteio] - Nome da pasta no Workspace para drops: [ex.: WorldDrops] - Como o item dropado deve aparecer: [Tool físico, Model de pickup, Part com ProximityPrompt, sistema já existente] - RemoteEvents/RemoteFunctions existentes e seus caminhos: [se houver] - Sistema de inventário próprio/API existente: [funções ou ModuleScripts, se houver] - Tempo até o respawn: [segundos] - Tempo até um drop desaparecer: [segundos] - Regras especiais: [ex.: manter item inicial, não dropar em SafeZone, PvP, equipes, moedas] TIPO E LOCAL DO SCRIPT: gere um único Script de servidor para ser colocado em ServerScriptService, com um nome sugerido como DeathRespawnDropService. O código deve funcionar de forma centralizada para todos os jogadores. Não use LocalScript para decidir morte, remover itens, conceder recompensas, transferir inventário ou validar coleta. Se o meu contexto exigir RemoteEvents, use apenas os RemoteEvents já informados; se eles não existirem, explique na seção de instalação exatamente quais instâncias criar, seus tipos e onde colocá-las, mas mantenha a lógica crítica exclusivamente no servidor. REQUISITOS FUNCIONAIS OBRIGATÓRIOS: 1. Detecte PlayerAdded e CharacterAdded, localize Humanoid com WaitForChild seguro e conecte Humanoid.Died sem criar conexões duplicadas após respawns. 2. Ao morrer, execute a rotina apenas uma vez por personagem, mesmo se houver múltiplos eventos, reset manual, scripts concorrentes ou mudanças rápidas de Character. Use uma trava server-side por jogador/personagem e faça limpeza confiável dela. 3. Colete apenas itens permitidos pelas regras configuráveis. Trate Tools no Character e Backpack sem duplicar o mesmo objeto. Nunca clone ou destrua itens sem antes definir claramente a estratégia de transferência para o drop. 4. Crie os drops em Workspace na pasta configurada, garantindo sua existência no servidor. Posicione-os próximos à posição de morte com dispersão aleatória controlada, raycast opcional para encontrar o chão e fallback seguro quando HumanoidRootPart não existir. 5. Todo drop deve possuir identificação server-side segura: atributo ou valores com UserId do dono original, nome/identificador do item, horário de criação e estado de coleta. Implemente um período opcional de proteção do dono, configurável no topo. 6. Implemente coleta física preferencialmente com ProximityPrompt validado no servidor. Ao acionar, valide: jogador existe, personagem está vivo, distância real até o drop, estado do drop, janela de proteção e capacidade/regras de inventário. Nunca confie em dados enviados pelo cliente para item, quantidade, dano, moeda ou permissão de coleta. 7. Ao coletar, transfira o item de forma atômica e resistente a corrida: marque o drop como reservado/coletado antes da transferência, restaure o estado caso ocorra erro e destrua o drop somente após sucesso. Evite duplicação por múltiplos jogadores acionando o Prompt simultaneamente. 8. Programe limpeza automática de drops expirados usando Debris ou task.delay com verificações de estado. Limpe conexões e dados temporários em PlayerRemoving e quando o objeto for destruído. 9. Configure respawn pelo comportamento padrão de Players/LoadCharacter, sem loops perigosos. Respeite CharacterAutoLoads quando aplicável e deixe uma opção comentada para respawn manual somente se o meu contexto solicitar isso. 10. Não implemente DataStore novo, sistema de moedas ou dano personalizado, a menos que eu os tenha especificado. Não use loadstring, HttpService, require de asset externo, código ofuscado ou dependências externas. QUALIDADE DO CÓDIGO: - Entregue código Luau completo, executável e comentado dentro de um único bloco markdown ```lua. - Use services obtidos por GetService, tipos Luau quando melhorarem a segurança, nomes claros, constantes de configuração no topo e pcall onde uma falha de API/inventário não puder derrubar a rotina. - Preserve compatibilidade com Roblox Studio padrão. Não invente APIs inexistentes. - Se itens forem Tools, explique e implemente a conversão/armazenamento necessária para que possam ser recolhidos com segurança. Caso seja necessário clonar um visual de pickup, deixe explícita a separação entre o visual e a instância real do item guardada exclusivamente no servidor. ESTRUTURA DA RESPOSTA: 1. “Suposições e compatibilidade”: lista curta das decisões tomadas com base no contexto. 2. “Instalação no Explorer”: caminho exato do Script, pastas/objetos necessários e atributos/tags esperados. 3. O bloco único com o código completo em Luau. 4. “Como testar no Roblox Studio”: passos objetivos usando Test > Start Server e múltiplos Players, incluindo testes de morte, respawn, coleta simultânea, proteção de dono, expiração, reset e tentativa de exploit via cliente. Priorize segurança, consistência de inventário e prevenção de duplicação acima de efeitos visuais. Não responda com pseudocódigo, trechos incompletos ou uma explicação sem o Script completo.