You can write your topic however you want, but you need to answer these questions:
-
What do you want to achieve? Keep it simple and clear!
I Want To Change The Key You Have To Press -
What is the issue? Include screenshots / videos if possible!
I Dont Know How To Do It -
What solutions have you tried so far? Did you look for solutions on the Developer Hub?
Ive Tried Some Things But All In Vain And Extreamly Long
After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!
game:GetService('StarterGui'):SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)
--< variables >--
local uis = game:GetService("UserInputService")
local player = game.Players.LocalPlayer
local char = workspace:WaitForChild(player.Name) -- added WaitForChild
local bp = player.Backpack
local hum = char:WaitForChild("Humanoid")
local frame = script.Parent.Frame
local template = frame.Template
local equipped = 0.2 -- icon transparencies
local unequipped = 0.7
local Changing = false
local iconSize = template.Size
local iconBorder = {x = 15, y = 5} -- pixel space between icons
local inputKeys = { -- dictionary for effective referencing
["One"] = {txt = "1"},
["Two"] = {txt = "2"},
["Three"] = {txt = "3"},
["Four"] = {txt = "4"},
["Five"] = {txt = "5"},
["Six"] = {txt = "6"},
["Seven"] = {txt = "7"},
["Eight"] = {txt = "8"},
["Nine"] = {txt = "9"},
["Zero"] = {txt = "0"},
}
local inputOrder = { -- array for storing the order of the keys
inputKeys["One"],inputKeys["Two"],inputKeys["Three"],inputKeys["Four"],inputKeys["Five"],
inputKeys["Six"],inputKeys["Seven"],inputKeys["Eight"],inputKeys["Nine"],inputKeys["Zero"],
}
--< functions >--
function handleEquip(tool)
if tool then
if tool.Parent ~= char then
hum:EquipTool(tool)
else
hum:UnequipTools()
end
end
end
function create() -- creates all the icons at once (and will only run once)
local toShow = #inputOrder -- # operator can only be used with an array, not a dictionary
local totalX = (toShow*iconSize.X.Offset)+((toShow+1)*iconBorder.x)
local totalY = iconSize.Y.Offset + (2*iconBorder.y)
frame.Size = UDim2.new(0, totalX, 0, totalY)
frame.Position = UDim2.new(0.5, -(totalX/2), 1, -(totalY+(iconBorder.y*2)))
frame.Visible = true -- just in case!
for i = 1, #inputOrder do
local value = inputOrder[i]
local clone = template:Clone()
clone.Parent = frame
clone.Label.Text = value["txt"]
clone.Name = value["txt"]
clone.Visible = true
clone.Position = UDim2.new(0, (i-1)*(iconSize.X.Offset)+(iconBorder.x*i), 0, iconBorder.y)
clone.ImageTransparency = unequipped
local tool = value["tool"]
if tool then
clone.Tool.Image = tool.TextureId
end
clone.Tool.MouseButton1Down:Connect(function() -- click icon to equip/unequip
for key, value in pairs(inputKeys) do
if value["txt"] == clone.Name then
if Changing == false then
Changing = clone
else
if clone ~= Changing then
print(Changing.Label.Text)
-- Changes The Keycodes Between The Changing And The Clone
local OldClonePos = nil
local OldCloneNum = nil
OldClonePos = clone.Position
clone.Position = Changing.Position
OldCloneNum = clone.Label.Text
clone.Label.Text = Changing.Label.Text
Changing.Label.Text = OldCloneNum
Changing.Position = OldClonePos
Changing = false
end
end
end
end
end)
end
template:Destroy()
end
function setup() -- sets up all the tools already in the backpack (and will only run once)
local tools = bp:GetChildren()
for i = 1, #tools do
if tools[i]:IsA("Tool") then -- does not assume that all objects in the backpack will be a tool (2.11.18)
for i = 1, #inputOrder do
local value = inputOrder[i]
if not value["tool"] then -- if the tool slot is free...
value["tool"] = tools[i]
break -- stop searching for a free slot
end
end
end
end
create()
end
function adjust()
for key, value in pairs(inputKeys) do
local tool = value["tool"]
local icon = frame:FindFirstChild(value["txt"])
if tool then
icon.Tool.Image = tool.TextureId
if tool.Parent == char then -- if the tool is equipped...
icon.ImageTransparency = equipped
else
icon.ImageTransparency = unequipped
end
else
icon.Tool.Image = ""
icon.ImageTransparency = unequipped
end
end
end
function onKeyPress(inputObject) -- press keys to equip/unequip
local key = inputObject.KeyCode.Name
local value = inputKeys[key]
if value and uis:GetFocusedTextBox() == nil then -- don't equip/unequip while typing in text box
handleEquip(value["tool"])
end
end
function handleAddition(adding)
if adding:IsA("Tool") then
local new = true
for key, value in pairs(inputKeys) do
local tool = value["tool"]
if tool then
if tool == adding then
new = false
end
end
end
if new then
for i = 1, #inputOrder do
local tool = inputOrder[i]["tool"]
if not tool then -- if the tool slot is free...
inputOrder[i]["tool"] = adding
break
end
end
end
adjust()
end
end
function handleRemoval(removing)
if removing:IsA("Tool") then
if removing.Parent ~= char and removing.Parent ~= bp then
for i = 1, #inputOrder do
if inputOrder[i]["tool"] == removing then
inputOrder[i]["tool"] = nil
break
end
end
end
adjust()
end
end
--< events >--
uis.InputBegan:Connect(onKeyPress)
char.ChildAdded:Connect(handleAddition)
char.ChildRemoved:Connect(handleRemoval)
bp.ChildAdded:Connect(handleAddition)
bp.ChildRemoved:Connect(handleRemoval)
--< start >--
setup()
script.Parent.Frame.Background.MouseLeave:Connect(function()
Changing = false
end)
I Need To Flip The Changing And Clones keycode i dont know how to do that but i need to change say your fliping slot 1 to slot 2 i need to make The inputKeys[“One”][txt] and inputKeys[“Two”][txt] i just dont know how to do that as the numbers are in “”
Thanks For Any Help