conforme a historia criada anteriormente crie um script pra robox que o heroi comece com status zerado e possa chegar no level 100 experiencia de 0,5x que cada lvl 1 ponto x0,5 conforme o level para colococar no status de força ou inteligencia ou agilidade inventario onde consiga colocar armadura que tenha os atibutos inteligencia forca ou agilidade um npc que possa fundir itens com item especifico de fusao e poders que possa colocar em slot visivel na tela que ativado com os numeros 1,2,3,4,5,6 como ativadores feramentas ou armas ou poderes, itens que possa ser minerado como picaretas e machados e que possa ser trocado por moeda interna do jogo cristais e que possa ser comprado com robux cristais e moedas e um npc pra quest, outro pra item ,outro pra fusão de itens combinaçoes, jogo como se fosse dois times uma escolha no inicio do jogo faz com que nasca na ilha 01 e outro na ilha 02 e eles são inimigos e os bichos ou npc de luta possa ser atacado por qualquer herois e tenha npc que sejam bot que atacam outro lado com objetivo de destruir o cristal e quando destruidos o lado perdedor fica com 20% dos seu status menor como castigo do perdedor sistema de ajuda adicionar ou jogar com amigo dividir experiencia porcentagem igual pra todos participantes ate 5 pensonagens un sistema de troca que permita um enviar pro outro qualquer item menos dinheiro ou cristais que, os personagens statude agilidade aumenten a velocidade de taque e regular pra não bugar e força aumente vida consiga limitar tanto pra npc e para herois e inteligencia no mesmo aspecos
--------------------------------------------------------------------------------------------------------------
-- Cria as variáveis globais
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")
local Teams = game:GetService("Teams")
local XP_PER_LEVEL = 100 -- Quantidade de XP necessária para subir de nível
local XP_MULTIPLIER = 0.5 -- Multiplicador de XP por nível
local POINTS_PER_LEVEL = 1 -- Quantidade de pontos de atributo por nível
local POINTS_MULTIPLIER = 0.5 -- Multiplicador de pontos de atributo por nível
local MAX_LEVEL = 100 -- Nível máximo do jogo
local MAX_POINTS = 50 -- Pontos máximos de cada atributo
local PENALTY = 0.2 -- Penalidade de status para o time perdedor
local ISLAND_01 = Teams:FindFirstChild("Island 01") -- Time da ilha 01
local ISLAND_02 = Teams:FindFirstChild("Island 02") -- Time da ilha 02
local CRYSTAL_01 = ServerStorage:FindFirstChild("Crystal 01") -- Cristal da ilha 01
local CRYSTAL_02 = ServerStorage:FindFirstChild("Crystal 02") -- Cristal da ilha 02
local SKILLS = ReplicatedStorage:FindFirstChild("Skills") -- Pasta com os scripts das habilidades
local ITEMS = ReplicatedStorage:FindFirstChild("Items") -- Pasta com os scripts dos itens
local FUSIONS = ReplicatedStorage:FindFirstChild("Fusions") -- Pasta com os scripts das fusões
local NPCS = ServerStorage:FindFirstChild("NPCs") -- Pasta com os modelos dos NPCs
-- Cria uma função para gerar um número aleatório entre um mínimo e um máximo
local function Random(min, max)
return math.random(min, max)
end
-- Cria uma função para atualizar o status do jogador de acordo com os seus atributos
local function UpdateStatus(player)
local character = player.Character
local stats = player:FindFirstChild("Stats")
local agility = stats:FindFirstChild("Agility").Value
local strength = stats:FindFirstChild("Strength").Value
local intelligence = stats:FindFirstChild("Intelligence").Value
local health = character:FindFirstChild("Humanoid").Health
local maxHealth = character:FindFirstChild("Humanoid").MaxHealth
local walkSpeed = character:FindFirstChild("Humanoid").WalkSpeed
local jumpPower = character:FindFirstChild("Humanoid").JumpPower
local attack = character:FindFirstChild("Attack").Value
local defense = character:FindFirstChild("Defense").Value
local team = player.Team
-- Aplica a penalidade de status se o time do jogador perdeu o cristal
if team == ISLAND_01 and CRYSTAL_01.Health == 0 then
agility = agility * (1 - PENALTY)
strength = strength * (1 - PENALTY)
intelligence = intelligence * (1 - PENALTY)
elseif team == ISLAND_02 and CRYSTAL_02.Health == 0 then
agility = agility * (1 - PENALTY)
strength = strength * (1 - PENALTY)
intelligence = intelligence * (1 - PENALTY)
end
-- Calcula o novo status do jogador de acordo com os seus atributos
maxHealth = 100 + strength * 10
walkSpeed = 16 + agility * 0.2
jumpPower = 50 + agility * 0.5
attack = 10 + strength * 0.5 + intelligence * 0.5
defense = 5 + strength * 0.5 + intelligence * 0.5
-- Aplica o novo status ao jogador
character:FindFirstChild("Humanoid").MaxHealth = maxHealth
character:FindFirstChild("Humanoid").Health = health
character:FindFirstChild("Humanoid").WalkSpeed = walkSpeed
character:FindFirstChild("Humanoid").JumpPower = jumpPower
character:FindFirstChild("Attack").Value = attack
character:FindFirstChild("Defense").Value = defense
end
-- Cria uma função para adicionar XP ao jogador
local function AddXP(player, amount)
local stats = player:FindFirstChild("Stats")
local level = stats:FindFirstChild("Level").Value
local xp = stats:FindFirstChild("XP").Value
local xpNeeded = XP_PER_LEVEL * (1 + level * XP_MULTIPLIER) -- Calcula a quantidade de XP necessária para o próximo nível
xp = xp + amount -- Adiciona a quantidade de XP recebida
while xp >= xpNeeded and level < MAX_LEVEL do -- Verifica se o jogador subiu de nível
level = level + 1 -- Aumenta o nível do jogador
xp = xp - xpNeeded -- Subtrai a quantidade de XP usada
xpNeeded = XP_PER_LEVEL * (1 + level * XP_MULTIPLIER) -- Calcula a nova quantidade de XP necessária
local points = stats:FindFirstChild("Points").Value
points = points + POINTS_PER_LEVEL * (1 + level * POINTS_MULTIPLIER) -- Adiciona os pontos de atributo ao jogador
stats:FindFirstChild("Points").Value = points -- Atualiza os pontos de atributo do jogador
UpdateStatus(player) -- Atualiza o status do jogador
end
stats:FindFirstChild("Level").Value = level -- Atualiza o nível do jogador
stats:FindFirstChild("XP").Value = xp -- Atualiza o XP do jogador
end
-- Cria uma função para adicionar um item ao inventário do jogador
local function AddItem(player, item)
local inventory = player:FindFirstChild("Inventory")
local backpack = player:FindFirstChild("Backpack")
local itemScript = ITEMS:FindFirstChild(item) -- Encontra o script do item na pasta de itens
if itemScript then -- Verifica se o item existe
local itemClone = itemScript:Clone() -- Clona o script do item
itemClone.Parent = inventory -- Coloca o item no inventário do jogador
local itemTool = itemClone:FindFirstChild("Tool") -- Encontra a ferramenta do item
if itemTool then -- Verifica se o item tem uma ferramenta
local toolClone = itemTool:Clone() -- Clona a ferramenta do item
toolClone.Parent = backpack -- Coloca a ferramenta na mochila do jogador
end
end
end
-- Cria uma função para remover um item do inventário do jogador
local function RemoveItem(player, item)
local inventory = player:FindFirstChild("Inventory")
local backpack = player:FindFirstChild("Backpack")
local itemScript = inventory:FindFirstChild(item) -- Encontra o item no inventário do jogador
if itemScript then -- Verifica se o item existe
local itemTool = itemScript:FindFirstChild("Tool") -- Encontra a ferramenta do item
if itemTool then -- Verifica se o item tem uma ferramenta
local toolScript = backpack:FindFirstChild(itemTool.Name) -- Encontra a ferramenta na mochila do jogador
if toolScript then -- Verifica se a ferramenta existe
toolScript:Destroy() -- Destrói a ferramenta
end
end
itemScript:Destroy() -- Destrói o item
end
end
-- Cria uma função para fundir dois itens e criar um novo item
local function FuseItems(player, item1, item2)
local inventory = player:FindFirstChild("Inventory")
local itemScript1 = inventory:FindFirstChild(item1) -- Encontra o primeiro item no inventário do jogador
local itemScript2 = inventory:FindFirstChild(item2) -- Encontra o segundo item no inventário do jogador
if itemScript1 and itemScript2 then -- Verifica se os dois itens existem
local fusionScript = FUSIONS:FindFirstChild(item1 .. " + " .. item2) -- Encontra o script da fusão na pasta de fusões
if fusionScript then -- Verifica se a fusão existe
local newItem = fusionScript:FindFirstChild("NewItem").Value -- Encontra o nome do novo item
RemoveItem(player, item1) -- Remove o primeiro item do inventário do jogador
RemoveItem(player, item2) -- Remove o segundo item do inventário do jogador
AddItem(player, newItem) -- Adiciona o novo item ao inventário do jogador
end
end
end
-- Cria uma função para equipar um item ao jogador
local function EquipItem(player, item)
local inventory = player:FindFirstChild("Inventory")
local equipment = player:FindFirstChild("Equipment")
local itemScript = inventory:FindFirstChild(item) -- Encontra o item no inventário do jogador
if itemScript then -- Verifica se o item existe
local itemType = itemScript:FindFirstChild("Type").Value -- Encontra o tipo do item