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

(Semi-Complicated) How to define a changing variable for OnTouch?

Asked by 3 years ago
Edited 3 years ago

So I have these two local scripts that manage package drop-offs for my delivery sim, problem is the location is randomized doors with street names and idk how to define which door aka (street.name) the touch function needs to be watching for, trying to avoid remoteevents if possible

Address Randomizer

1while wait(60) do
2    local Folder = game.Workspace.Folder:GetChildren()
3    local Street = Folder[math.random(1, #Folder)]
4    plr.PlayerGui.Address.Text = "New Order: Deliver to "..Street.Name
5end

OnTouch Front Door

1local part = ????
2local function onTouched(part)
3    --Do stuff when player touches 'Street' from script above
4end
5part.Touched:Connect(onTouched)

1 answer

Log in to vote
0
Answered by 3 years ago

I would name all of the doors the same thing such as "DelieveryDoor" or something, and then put a string inside of the door with the info you need. Then you could do this:

01while wait(60) do
02    local Folder = game.Workspace.Folder:GetChildren()
03    local Street = Folder[math.random(1, #Folder)]
04    plr.PlayerGui.Address.Text = "New Order: Deliver to "..Street.Name
05end
06 
07for i, v in pairs(game.Workspace:GetChildren()) do
08    if v.Name == "DelieveryDoor" then
09        local function onTouched(v)
10            if v.StringValue.Value == Street.Name then
11                --Delievered!
12            end
13        end
14        v.Touched:Connect(onTouched)
15    end
16end
1
Very good answer thank you, unfortunately the delivery address comes from the door name, if I name the doors all the same then the GUI text will just put out the same address for all houses, but I may be able to get around this by putting each door into a folder, not sure, thx tho ThatCoolCoderGuy 18 — 3y
Ad

Answer this question