I used a table method and it sorta works for my weapon giver gui

ok yes you are right the reason it fires both of the same tool is because the other script is firing it to so when it does that it fires both of the same tool for some reason

Put them in one script like this:

--First Script
local repRemote = game:GetService("ReplicatedStorage")
local repStorage = game:GetService("ServerStorage")
local items = repStorage.Items
local remote = repRemote.GiveGear
local Table = {}

remote.OnServerEvent:Connect(function(plr, Message, item)
	if Message == "Giver Gear" and item then
		items[item]:Clone().Parent = plr.Backpack
		items[item]:Clone().Parent = plr.StarterGear

	end
end)


it still fires both with same tool

the script I used give your 2 every click?

Screenshot 2022-03-12 2.11.07 AM

can i see a picture of what happen to yours exactly just make a tool name it WindSword and then you get the same result

Ok, ill send u a clip of what I get

ill send my script hold on wait a second

remote.OnServerEvent:Connect(function(plr, Message, WindSword)
if Message == "Giver Gear" and WindSword then
items[WindSword]:Clone().Parent = plr.Backpack
items[WindSword]:Clone().Parent = plr.StarterGear

end
end)
remote.OnServerEvent:Connect(function(plr, Message, ZygrainbowPeriastron)
if Message == "Giver Gear" and ZygrainbowPeriastron then
items[ZygrainbowPeriastron]:Clone().Parent = plr.Backpack
items[ZygrainbowPeriastron]:Clone().Parent = plr.StarterGear

end
end)

Oh, the script I send you only need one script and It will work.
Edit: Just delete one of the scripts and it should work

or did you change the gui scripts at all?

to handle all the weapon giving stuff?

just copy and paste this into a script and delete the other server scripts

i change item to the weapon name correct?

No, item is a variable so item is the same as “WindSword” or “ZygrainbowPeriastron”

Im guessing your pretty new to scripting so when the local script does this

script.Parent.MouseButton1Click:Connect(function()
    local remote = game:GetService("ReplicatedStorage"):WaitForChild("GiveGear")
    remote:FireServer("Giver Gear","ZygrainbowPeriastron")
end)

the “ZygrainbowPeriastron” is the variable being sent
The name of a variable does not effect anything

i started somewhere to 2 weeks ago

but how does item become a variable?