Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why Does This Creative Blocks Tab Script Not Work Properly?

Asked by 7 years ago
Edited 7 years ago

The one error that appears is: bad argument #2 to '?'(UDim2 expected, got number)

the script is:

local mouse = game:GetService('Players').LocalPlayer:GetMouse()
local HotbarItems = {'Grass','Stone','Dirt','Sand','TorchWall','MoltenRock','Netherrack','Water','Lava'}
local ItemList = {'TorchWall','Fire','NetherPortal','Grass','Dirt','Stone','Bedrock','DiamondOre','CopperOre','IronOre','EmeraldOre','GoldOre','RedstoneOre','MoltenRock','Bricks','Leaves','WoolDarkGray','WoolOrange','WoolGray','WoolBrown','WoolDarkGreen','WoolLightGreen','WoolGreen','WoolBlue','WoolLightBlue','WoolLightYellow','SpruceWood','OakWood','DarkOakWood','AcaciaWood','AcaciaWoodPlanks','DarkOakWoodPlanks','OakWoodPlanks','SpruceWoodPlanks','Concrete','Cobblestone','Sand','Gravel','Netherrack','WoolRed','Water','Lava'}
local Selected = 1
game:GetService('Players').LocalPlayer.CharacterAdded:connect(function()
game:GetService('Players').LocalPlayer.Character:WaitForChild('Humanoid')
PunchAnim = game:GetService('Players').LocalPlayer.Character.Humanoid:LoadAnimation(script.Punch)
PlaceAnim = game:GetService('Players').LocalPlayer.Character.Humanoid:LoadAnimation(script.Place)
end)

function CreativeItemClick(Button)
    Button.MouseButton1Click:connect(function()
        HotbarItems[Selected] = Button.ItemTag.Value
    end)
end


mouse.Button1Down:connect(function()
    local target = mouse.Target
    PunchAnim:Play()
    for index, value in ipairs(ItemList) do
    if target.Name == value then
    target:Destroy()
end
end
end)

mouse.Button2Down:connect(function()
    PlaceAnim:Play()
    local PlacedObjectIdentifier = HotbarItems[Selected]


    local ClonedBlock = game:GetService('Lighting'):FindFirstChild(PlacedObjectIdentifier):Clone()

    ClonedBlock.Parent = game:GetService('Workspace')
    local p=mouse.Hit.p
    local x,y,z = p.x,p.y,p.z

-- Added stuff
    xdif = math.floor(x/4+.5)*4  -- Grids positions X value (0,4,8,12,16 etc)
    ydif = math.floor(y/4+.5)*4  -- Grids positions Y value (0,4,8,12,16 etc)
    zdif = math.floor(z/4+.5)*4  -- Grids positions Z value (0,4,8,12,16 etc)

    ClonedBlock.CFrame = CFrame.new(xdif,ydif,zdif)
end)


mouse.KeyDown:connect(function(key)
    if key == '1' then
        Selected = 1
        script.Parent.Selecter:TweenPosition(UDim2.new(0,0,0,0))
    elseif key == '2' then
        Selected = 2
        script.Parent.Selecter:TweenPosition(UDim2.new(0.1,0,0,0))
    elseif key == '3' then
        Selected = 3
        script.Parent.Selecter:TweenPosition(UDim2.new(0.2,0,0,0))
    elseif key == '4' then
        Selected = 4
        script.Parent.Selecter:TweenPosition(UDim2.new(0.3,0,0,0))
    elseif key == '5' then
        Selected = 5
        script.Parent.Selecter:TweenPosition(UDim2.new(0.4,0,0,0))
    elseif key == '6' then
        Selected = 6
        script.Parent.Selecter:TweenPosition(UDim2.new(0.5,0,0,0))
    elseif key == '7' then
        Selected = 7
        script.Parent.Selecter:TweenPosition(UDim2.new(0.6,0,0,0))
    elseif key == '8' then
        Selected = 8
        script.Parent.Selecter:TweenPosition(UDim2.new(0.7,0,0,0))
    elseif key == '9' then
        Selected = 9
        script.Parent.Selecter:TweenPosition(UDim2.new(0.8,0,0,0))
    end
end)

game:GetService('RunService').RenderStepped:connect(function()
    wait(.1)
    local Slot1V = string.sub(HotbarItems[1],1,2)
    local LegitSlot1 = string.upper(Slot1V)
    script.Parent.Slot1.Text = LegitSlot1
    local Slot2V = string.sub(HotbarItems[2],1,2)
    local LegitSlot2 = string.upper(Slot2V)
    script.Parent.Slot2.Text = LegitSlot2
    local Slot3V = string.sub(HotbarItems[3],1,2)
    local LegitSlot3 = string.upper(Slot3V)
    script.Parent.Slot3.Text = LegitSlot3
    local Slot4V = string.sub(HotbarItems[4],1,2)
    local LegitSlot4 = string.upper(Slot4V)
    script.Parent.Slot4.Text = LegitSlot4
    local Slot5V = string.sub(HotbarItems[5],1,2)
    local LegitSlot5 = string.upper(Slot5V)
    script.Parent.Slot5.Text = LegitSlot5
    local Slot6V = string.sub(HotbarItems[6],1,2)
    local LegitSlot6 = string.upper(Slot6V)
    script.Parent.Slot6.Text = LegitSlot6
    local Slot7V = string.sub(HotbarItems[7],1,2)
    local LegitSlot7 = string.upper(Slot7V)
    script.Parent.Slot7.Text = LegitSlot7
    local Slot8V = string.sub(HotbarItems[8],1,2)
    local LegitSlot8 = string.upper(Slot8V)
    script.Parent.Slot8.Text = LegitSlot8
    local Slot9V = string.sub(HotbarItems[9],1,2)
    local LegitSlot9 = string.upper(Slot9V)
    script.Parent.Slot9.Text = LegitSlot9
end)

  -- the problem is from here and below

Row = 0
MaxSlotsPerRow = 10
Slot = 0
LastSlot = nil
script.Parent.Parent:WaitForChild('CreativeInventory')

for index, value in ipairs(ItemList) do
    if Slot >= MaxSlotsPerRow then
        Row = Row + 0.1
    end
    Slot = Slot + 1
    local BlockName = string.sub(value,1,2)
    local BlockTag = string.upper(BlockName)
    BlockButton = game:GetService('Lighting').Item:Clone()
    BlockButton.Parent = script.Parent.Parent.CreativeInventory.Blocks
    if LastSlot == nil then
    BlockButton.Position = UDim2.new(BlockButton.Position.X.Scale + .1, 0, Row, 0)
    else
    BlockButton.Position = UDim2.new(LastSlot.Position.X.Scale + .1, 0, Row, 0)
    end
    BlockButton.Text = BlockTag
    BlockButton.ItemTag.Value = value
    CreativeItemClick(BlockButton)
    LastSlot = BlockButton
end

1 answer

Log in to vote
0
Answered by 7 years ago

Does it give a line number? If so; please reply with it. I'll keep looking through it. But without all of your things I can't test it to see.

0
this was already solved Thegrimdeathzombie 40 — 7y
Ad

Answer this question