🎯 Mål for dette systemet
- Bygge en dør i Workspace som kan åpnes og lukkes med kode.
- Organisere dørene i en Folder (klar for mange dører).
- Lage en terminal i UI (TextBox + knapp).
- Koble passord → riktig dør med en dictionary (tabell).
- Legge inn maks antall forsøk før systemet låser seg.
📦 Komplett oppsett – Oversikt
Før vi bygger alt steg for steg, ser vi på den ferdige strukturen:
Doors-folderen.
🧱 Del 1: Lag dørene i Workspace
Vi starter med å lage dørene fysisk i verden.
1 Lag en Doors-folder
-
Åpne Workspace i Explorer.
Høyreklikk Workspace → Insert Object → Folder
Navn:
Doors - Dette gjør det lett å ha mange dører samlet ett sted.
2 Lag selve dørene (Parts)
-
Høyreklikk på Doors-folderen → Insert Object → Part.
Navn:
Door1Anchored:
true(døren skal stå stille)CanCollide:
true(blokkere spilleren)Size: f.eks.
6, 12, 1(en høy dør)Material: Concrete / Metal / Wood
Color: velg en farge (f.eks. rød)
-
Du kan lage flere dører på samme måte:
Door2– kanskje blå dørBossDoor– stor og skummel dør - Plasser dørene i level/designet ditt slik at de virkelig sperrer veien.
CanCollide.
Da kan spilleren gå gjennom.
🧱 Del 2: Lag passord-terminalen (UI)
Nå lager vi et lite panel på skjermen hvor spilleren kan skrive inn passordet.
3 Lag ScreenGui og Frame
-
Åpne StarterGui i Explorer.
Høyreklikk StarterGui → Insert Object → ScreenGui
Navn:
DoorTerminalGui -
Høyreklikk
DoorTerminalGui→ Insert Object → Frame.Navn:
TerminalFrameSize: f.eks.
{0, 300}, {0, 200}Position: f.eks. midt på skjermen eller i et hjørne
4 Legg til tekst og input
-
Høyreklikk
TerminalFrame→ Insert Object → TextLabel.Navn:
TitleLabelText: "Dør-terminal"
-
Høyreklikk
TerminalFrame→ Insert Object → TextBox.Navn:
DoorTextPlaceholderText: "Skriv passord..."
-
Høyreklikk
TerminalFrame→ Insert Object → TextButton.Navn:
SubmitButtonText: "Åpne dør"
🧱 Del 3: Koble knapp + TextBox til dørene (kode)
Nå legger vi inn et LocalScript under knappen som leser tekst fra DoorText
og åpner riktig dør.
5 LocalScript under knappen
-
Høyreklikk
SubmitButton→ Insert Object → LocalScript. - Slett innholdet som står der, og lim inn koden under:
local button = script.Parent
local textBox = button.Parent:WaitForChild("DoorText")
-- Folder med alle dører
local doorsFolder = workspace:WaitForChild("Doors")
-- Koble passord til dører.
-- Du kan legge til SÅ MANGE du vil:
local doorsByPassword = {
["pass"] = doorsFolder:WaitForChild("Door1"),
["pass2"] = doorsFolder:WaitForChild("Door2"),
["boss"] = doorsFolder:WaitForChild("BossDoor"),
-- Legg til flere:
-- ["hemmelig"] = doorsFolder:WaitForChild("SecretDoor"),
}
local maxAttempts = 4
local attempts = 0
local locked = false
-- Hjelpefunksjoner for dørtilstand
local function ensureAttributes(door)
if door:GetAttribute("Open") == nil then
door:SetAttribute("Open", false)
end
end
local function setDoorOpen(door, shouldOpen)
if shouldOpen then
door.Transparency = 0.7
door.CanCollide = false
else
door.Transparency = 0
door.CanCollide = true
end
door:SetAttribute("Open", shouldOpen)
end
local function toggleDoor(door)
ensureAttributes(door)
local isOpen = door:GetAttribute("Open")
setDoorOpen(door, not isOpen)
if not isOpen then
print(("Døren '%s' er åpnet!"):format(door.Name))
else
print(("Døren '%s' er lukket!"):format(door.Name))
end
end
button.MouseButton1Click:Connect(function()
if locked then
print("Låst. For mange forsøk.")
return
end
local input = textBox.Text
if input == nil or input == "" then
print("Skriv inn et passord.")
return
end
local chosenDoor = doorsByPassword[input]
if chosenDoor then
-- Riktig passord til en bestemt dør → toggle denne døren
toggleDoor(chosenDoor)
else
-- Feil passord → øk forsøk
attempts += 1
print(("Feil passord, prøv igjen! Du har brukt %d forsøk."):format(attempts))
if attempts >= maxAttempts then
locked = true
print("Dørsystemet er nå låst (for mange forsøk).")
end
end
end)
- Lage en ny dør (Part) i
Doors-folderen. - Gi den et navn, f.eks.
YellowDoor. - Legge til en linje i
doorsByPassword:["gul"] = doorsFolder:WaitForChild("YellowDoor").
🧠 Hva koden gjør (for elevene)
- Spilleren skriver inn et passord i DoorText og trykker på SubmitButton.
- Scriptet leser teksten og sjekker om den finnes i
doorsByPassword-tabellen. - Hvis passordet finnes, finner vi riktig dør og åpner/lukker den (toggle).
- Hvis passordet er feil, øker vi antall forsøk.
- Etter for mange feil (4), blir systemet låst, og knappen gjør ingenting.
🔑 Viktige kodekonsepter
1. Variabler
local maxAttempts = 4
local attempts = 0
local locked = false
maxAttempts er hvor mange ganger spilleren kan prøve.
attempts teller hvor mange feil de har gjort.
locked sier om systemet er låst eller ikke.
2. Tabeller (dictionary / map)
local doorsByPassword = {
["pass"] = doorsFolder:WaitForChild("Door1"),
["pass2"] = doorsFolder:WaitForChild("Door2")
}
En tabell der nøkkelen er passord-tekst (f.eks. "pass"), og verdien er selve døren (Part) i Workspace. Når spilleren skriver noe, slår vi opp i tabellen:
local chosenDoor = doorsByPassword[input]
3. Funksjoner
local function toggleDoor(door)
...
end
Funksjoner er gjenbrukbare kodeblokker. toggleDoor tar inn en dør og bytter mellom
åpen/lukket. Vi slipper å skrive samme kode flere ganger.
4. Attributes
door:SetAttribute("Open", shouldOpen)
Attributes er små verdier som lagres direkte på et objekt. Her bruker vi Open på døren
for å huske om den er åpen eller lukket.
5. If-setninger
if locked then
print("Låst.")
return
end
If-setninger gjør at koden tar valg: "hvis dette er sant, gjør dette – ellers gjør noe annet".
6. Events
button.MouseButton1Click:Connect(function()
...
end)
Events kobler spillerens handlinger til kode. Her kjører funksjonen hver gang spilleren klikker knappen.
🧪 Mini-oppgaver
- Legg til en ny dør
YellowDoormed passord"gul". - Endre
maxAttemptstil 6. - Vis en TextLabel i terminalen som sier "Feil passord" ved feil.
- Endre dørene til å bruke forskjellige farger når de åpnes.
🚀 Videreutvikling
- Lag en "felle-dør" som åpner gulvet i stedet for selve døren.
- Lag forskjellige nivåer med ulike passord.
- Resett
attemptsetter 30 sekunder. - Lag et Leaderboard som teller hvor mange riktige passord spilleren har skrevet inn.
🛠️ Feilsøking
Sjekk at du har laget en Folder som heter
Doors inne i Workspace.
Sjekk at døren heter nøyaktig
Door1 (samme store/små bokstaver) og ligger inne i Doors-folderen.
SubmitButton, ikke under Frame eller ScreenGui.
locked = true i starten.