When I press the buttons, I get an error.
AttacksInputController:
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TweenService = game:GetService("TweenService")
local Events = ReplicatedStorage:WaitForChild("Events")
local Character = script.Parent.Parent.Parent
local Player = Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")
local MainGui = PlayerGui:WaitForChild("MainGui")
local Attacks = MainGui.Attacks
local AttackTemplate = script.AttackTemplate
local SharedModules = ReplicatedStorage:WaitForChild("SharedModules")
local Configurations = SharedModules.Configurations
local CharacterConfigurations = require(Configurations.CharacterConfigurations)
local EquippedCharacterName = nil
local module = {}
local function UseSpecialAttack(AttackNumber)
if EquippedCharacterName == nil then
return
end
local Result = Events.SpecialAttack:InvokeServer(AttackNumber)
if Result == true then
local AttackData = nil
for _, v in CharacterConfigurations do
if v.CharacterName == EquippedCharacterName then
AttackData = v.Attacks[AttackNumber]
end
end
local AttackTemplate = Attacks[tostring(AttackNumber)]
AttackTemplate.DebounceFrame.Size = UDim2.fromScale(1, 1)
TweenService:Create(AttackTemplate.DebounceFrame, TweenInfo.new(AttackData.AttackDebounce), {Size = UDim2.fromScale(1, 0)}):Play()
end
end
local function InputBegan(Input, GameProcessedEvent)
if GameProcessedEvent or EquippedCharacterName == nil then return end
if Input.KeyCode == Enum.KeyCode.One then
UseSpecialAttack(1)
end
if Input.KeyCode == Enum.KeyCode.Two then
UseSpecialAttack(2)
end
if Input.KeyCode == Enum.KeyCode.Three then
UseSpecialAttack(3)
end
if Input.KeyCode == Enum.KeyCode.Four then
UseSpecialAttack(4)
end
end
local function EquipCharacterClient(CharacterData)
EquippedCharacterName = CharacterData.CharacterName
for i, v in CharacterData.Attacks do
local NewTemplate = AttackTemplate:Clone()
NewTemplate.Name = tostring(i)
NewTemplate.Number.Text = tostring(i)
NewTemplate.AttackName.Text = v.AttackName
NewTemplate.Visible = true
NewTemplate.DebounceFrame.Size = UDim2.fromScale(1, 0)
NewTemplate.Parent = Attacks
NewTemplate.MouseButton1Click:Connect(function()
UseSpecialAttack(i)
end)
end
end
function module.Init()
UserInputService.InputBegan:Connect(InputBegan)
Events.EquipCharacterClient.OnClientEvent:Connect(EquipCharacterClient)
end
return module
CharacterHandler:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Events = ReplicatedStorage.Events
local SharedModules= ReplicatedStorage.SharedModules
local Configurations = SharedModules.Configurations
local AttackHitboxes
local CharacterConfigurations = require(Configurations.CharacterConfigurations)
local module = {}
local ClickAttackDebounces = {}
module.Modules = {}
function module.EquipCharacter(Player, CharacterName)
local Values = Player:WaitForChild("Values")
Values.Character.Value = CharacterName
local CharacterData = nil
for _, v in CharacterConfigurations do
if v.CharacterName == CharacterName then
CharacterData = v
break
end
end
Events.EquipCharacterClient:FireClient(Player, CharacterData)
end
local function PlayerAdded(Player)
Player.CharacterAdded:Connect(function(Character)
task.wait(1)
module.EquipCharacter(Player, "Hunter")
end)
end
local function SpecialAttack(Player, AttackNumber)
local PlayerCharacter = Player.Values.Character.Value
local Result = require(script.Chracters[PlayerCharacter][tostring(AttackNumber)]).AttackFunction(Player)
return Result
end
function module.Init()
Players.PlayerAdded:Connect(PlayerAdded)
for _, v in Players:GetPlayers() do
task.spawn(function()
PlayerAdded(v)
end)
end
Events.SpecialAttack.OnServerInvoke = SpecialAttack
end
return module
as I understand it the script can’t access characters or I misunderstood