I made a character customizer. When a player clicks the button "wear", it equips an accessory/shirt or pant onto their character. When this happens, a separate GUI called "Inventory" (that is already visible) is supposed to make that item appear in a box so that the player may be able to delete it if they'd like. (deleting the accessory/shirt or pant off their character). The problem is, there is a delay in this action. Only after the player equips another item does it show the one before it. I attempted to fix it but messed up the script -- help?
--inventory
local plr=game.Players.LocalPlayer;repeat wait() until plr.Character
local character=plr.Character
local wear=game.ReplicatedStorage:WaitForChild'Wear'
local inv=script.Parent:WaitForChild'Menus':WaitForChild'Inventory'
local cont=inv:WaitForChild'Container'
local footer=inv:WaitForChild'Footer'
local prev=footer:WaitForChild'prev':WaitForChild'ImageButton'
local nex=footer:WaitForChild'nex':WaitForChild'ImageButton'
local page=footer:WaitForChild'page'
local ex=inv:WaitForChild'Example'
local maxPages=1
local curPage=1
local char = plr.Character
local catChar=nil
local rot=0
local tim = tick()
local curAnim = nil
local run=game:GetService('RunService')
local input=game:GetService'UserInputService'
local mouseCnn={}
local deviceT="MouseButton1Down"
local ghost = {}
function setPage()
page.Text=curPage.."/"..maxPages
end
function loadModel()
char.Archivable = true
local clo = char:Clone()
local mouseDown=false
local lastX=0
local x,e=pcall(function()
for a,d in pairs(clo:GetChildren()) do
if (d:IsA'Script' or d:IsA'BillboardGui' or d:IsA'ForceField') and d.Name~="Animate" then
d:Destroy()
end
end
for a,d in pairs (clo.Head:GetChildren()) do
if d:IsA'Sound' then
d:Stop()
end
end
local torso = clo:FindFirstChild'Torso' or clo:FindFirstChild'UpperTorso'
local function makeGhost()
for a,d in pairs(clo:GetChildren()) do
if d:IsA'BasePart' then
d.CanCollide = false
end
end
end
for a,d in pairs(mouseCnn) do
d:Disconnect()
table.remove(mouseCnn,a)
end
mouseCnn[1]=input.InputBegan:connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1 then
if i.UserInputState==Enum.UserInputState.Begin then
local loc=input:GetMouseLocation()
if loc.X>=cont.AbsolutePosition.X+cont.AbsoluteSize.X then
lastX=loc.X
mouseDown=true
end
end
end
end)
mouseCnn[2]=input.InputEnded:connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1 then
if i.UserInputState==Enum.UserInputState.End then
mouseDown=false
end
end
end)
mouseCnn[3]=input.InputChanged:connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseMovement then
if mouseDown then
rot=(rot+((i.Position.X-lastX)/2)) % 360
lastX=i.Position.X
end
end
end)
for a,d in pairs(ghost) do
d:Disconnect()
table.remove(ghost,a)
end
ghost={game:GetService('RunService').Stepped:connect(function()
makeGhost()
end),
torso.Changed:connect(function()
makeGhost()
end)}
local function doRot()
local ray=workspace.CurrentCamera:ScreenPointToRay(cont.AbsoluteSize.X+cont.AbsolutePosition.X+100,((cont.AbsoluteSize.Y/yOff)+cont.AbsolutePosition.Y),10)
local view = workspace.CurrentCamera.ViewportSize
clo:SetPrimaryPartCFrame(CFrame.new(ray.Origin, ray.Origin + workspace.CurrentCamera.CFrame.lookVector)*CFrame.fromEulerAnglesXYZ(0,math.rad(rot),0))
end
doRot()
clo.Parent=workspace.CurrentCamera
run:BindToRenderStep("Bind",Enum.RenderPriority.Camera.Value,function()
if tick()-tim>5 then
tim=tick()
local anim = clo.Animate:GetChildren()[math.random(1,#clo.Animate:GetChildren())]:GetChildren()[1]
if curAnim ~= nil then curAnim:Stop() curAnim:Destroy() end
curAnim = clo.Humanoid:LoadAnimation(anim)
curAnim:Play(.5)
end
doRot()
if not mouseDown then
rot=(rot+1)%360
end
end)
end) if not x then print(e) end
catChar=clo
end
function desModel()
if catChar then
pcall(function()
run:UnbindFromRenderStep("Bind")
catChar:Destroy()
end)
catChar=nil
end
end
function wearing()
cont:ClearAllChildren()
local items={};for a,d in pairs(character:GetChildren()) do if d:IsA'Shirt' or d:IsA'Pants' or d:IsA'Accoutrement' or d:IsA'CharacterMesh' then table.insert(items,d) end end
local pos=0
local rpos=0
local tab={}
local temp=cont.AbsoluteSize.X
local temp2=cont.AbsoluteSize.Y
local xslots=math.floor(cont.AbsoluteSize.X/75)
local yslots=math.ceil((cont.AbsoluteSize.Y)/90)
temp=temp-((xslots*10))
temp2=temp2-((yslots*10))
xslots=math.floor(temp/75)
yslots=math.floor(temp2/90)
local rows=math.ceil(#items/xslots)
local pages=math.ceil(rows/yslots)
maxPages=pages
curPage=1
for a=1,pages do
local frm=Instance.new("Frame",cont)
frm.Size=UDim2.new(1,0,1,0)
frm.BackgroundTransparency=1
frm.Name=tostring(a)
if a==1 then frm.Visible=true else frm.Visible=false end
for l=1,yslots do
for i=1,xslots do
if #tab~=#items then
local fr=ex:Clone()
table.insert(tab,fr)
local texture;
if items[#tab]:findFirstChild'AssetId' then
texture="http://www.roblox.com/Thumbs/Asset.ashx?width=110&height=110&assetId="..items[#tab].AssetId.Value
elseif items[#tab]:IsA'Accoutrement' then
texture="http://www.roblox.com/Thumbs/Asset.ashx?width=110&height=110&assetId="..items[#tab].Handle.Mesh.MeshId:match("%d+")
elseif items[#tab]:IsA'Shirt' or items[#tab]:IsA'Pants' then
texture="http://www.r5oblox.com/Thumbs/Asset.ashx?width=110&height=110&assetId="..tonumber(items[#tab][items[#tab].Name.."Template"]:match("%d+"))+1
else
texture="http://www.roblox.com/asset/?id=346014646"
end
fr.itm_img.Image=texture
fr.lim_name.Text=items[#tab].Name
fr.Parent=frm
fr.Name=items[#tab].Name
fr.Position=UDim2.new(0,pos+(i*10),0,rpos+(l*10))
fr.Visible=true
local itm_img=fr.itm_img
itm_img.MouseButton1Down:connect(function()
--Nothing?
end)
fr:WaitForChild'TextButton'.MouseButton1Down:connect(function()
wear:InvokeServer(fr.Name)
desModel()
loadModel()
end)
pos=pos+75
end
end
pos=0
rpos=rpos+90
end
pos=0
rpos=0
end
footer.page.Text="PAGE"..curPage.."/"..maxPages
end
function turning()
for a,d in pairs(cont:GetChildren()) do
d.Visible=false
end
cont[tostring(curPage)].Visible=true
footer.page.Text="PAGE "..curPage.."/"..maxPages
end
footer.prev.ImageButton.MouseButton1Down:connect(function()
if curPage>1 then
curPage=curPage-1
turning()
end
end)
footer.nex.ImageButton.MouseButton1Down:connect(function()
if curPage<maxPages then
curPage=curPage+1
turning()
end
end)
wearing()
character.ChildAdded:connect(function()
wearing()
end)
character.ChildRemoved:connect(function(c)
if catChar then
if catChar:findFirstChild(c.Name,true) then
catChar:findFirstChild(c.Name,true):Destroy()
end
end
wearing()
end)
inv.Changed:connect(function(p)
if p=="Visible" then
if inv.Visible==true then
loadModel()
else
desModel()
end
end
end)

2 comments
"I attempted to fix it but messed up the script" Does this mean there are new errors?
@DanzLua no there are no new errors. I just undid what i scripted.