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

Question about Surface GUI's?

Asked by 6 years ago
Edited 6 years ago

I made an object with a surface GUI and some data gathered thanks to Region3 (works and its efficient code)

The bug is that when i spawn an object over the "data area" i get a number from that object. Ok that works, it's fine.

Now, if i spawn new objects that gather data, even though this "data" its outside the area, the newly spawned objects have the same value in the surface GUI.

In short words, the data gathered by the first, will be the data showed in the surface screen for all the newly spawned objects.

Edit: The main code named Drill (outside the SurfaceGUI but important).

local work = game.workspace
Deposit = work.Part.Deposit

local event = Instance.new("BindableEvent")
event.Parent = game.workspace.Events
event.Name = "Action"

local list = {work.Baseplate, work.Part}

local function CreateRegion3FromLocAndSize(Position, Size)
    local SizeOffset = Size/2
    local Point1 = Position - SizeOffset
    local Point2 = Position + SizeOffset
    Region = Region3.new(Point1, Point2)
    return Region   
end


local start_pos = work.Part.Position
local Size = Vector3.new(5, 2, 5)

CreateRegion3FromLocAndSize(start_pos, Size)
Region = Region:ExpandToGrid(4)
--work.Terrain:FillRegion(Region, 4, Enum.Material.Slate)

local parts = work:FindPartsInRegion3WithIgnoreList(Region, list, 10)

for i = 1, #parts do

    print(parts[i].Name, " <- Part Name")
    print(parts[i].Oil.Value, " <- Value of Reserve")



    function Pumpy(action)
        if action == true then
            print("Pump Activated!")

        else print("Pump Stopped!") 
        end
    end
    event.Event:Connect(Pumpy)


    Deposit.Value = parts[i].Oil.Value
    --print("Deposit ", Deposit.Value)


end

And then the code inside the SurfaceGUI to display that "Deposit Amount"

local load = workspace:WaitForChild("Part")
print("Reserves Button Initialized")

local Reserve = game.Workspace.Part.Deposit
local script = script.Parent

script.Text = (Reserve.Value)
--print("Reserve", Reserve.Value)

Both are server scripts. Not Local. Feel free to use any idea of this code or try to improve it. I do not care about credits but learning. Thanks

The bug is that that data taken from the first Oil Reserve will be displayed to every newly spawned object aka Drill

0
All those "objects" are the same model. The data area in a part with some data in. The Region3 helps me gather it jonathan3576 12 — 6y
0
Are you saying that each thing you put in the "data area" has a number associated with it that the surface GUI is to display? I think we need to see the code that isn't working as you expect to help you. chess123mate 5873 — 6y
0
Never store remote/bindable events in the workspace. Thats how your game can get hacked. All it takes is a hacker to do game.Workspace.Events.Event:Fire() PyccknnXakep 1225 — 6y
0
For now im just working on concepts but thanks for the advice jonathan3576 12 — 6y

Answer this question