Out of the many CZcamsrs that I've watched to learn Roblox scripting, you GnomeCode have taken 1st place. I appreciate you not skipping over or poorly explaining even the smallest of details that may be crucial for a beginner to understand. Thank you for the great video.
The Script: local Players = game:GetService("Players") local RunService = game:GetService("RunService") local DatastoreService = game:GetService("DataStoreService") local database = DatastoreService:GetDataStore("PlayerData") local sessiondata = {} local DefaultData = {
["Dollars"] = 50
} local function PlayerAdded(player) local leaderstats = Instance.new("Folder") leaderstats.Name = "leaderstats"
local Dollars = Instance.new("NumberValue", leaderstats) Dollars.Name = "Dollars"
local sucsess = nil local PlayerData = nil local attempt = 1 repeat sucsess,PlayerData = pcall(function() return database:GetAsync(player.UserId) end) if not sucsess then warn(PlayerData) task.wait(3) end attempt += 1 until sucsess or attempt == 5
if sucsess then print("Connected To Database")
if not PlayerData then print("No User Data Found, Assigning Default Data") PlayerData = DefaultData end sessiondata[player.UserId] = PlayerData
else warn("Unable To Get Data For User: "..player.Name) player:Kick("Unable To Load Your Data, Please Try Again Later! :D") end
Dollars.Value = sessiondata[player.UserId].Dollars -- SYNC LEADERSTATS WITH DATASTORE Dollars.Changed:Connect(function() sessiondata[player.UserId].Dollars = Dollars.Value end) leaderstats.Parent = player
end local function PlayerRemoved(player) if sessiondata[player.UserId] then local sucsess = nil local errorMsg = nil local attempt = 1
if not sucsess then warn(errorMsg) task.wait(3) end
attempt += 1 until sucsess or attempt == 5
if sucsess then
print("Data Saved For User: "..player.Name)
else warn("Data Unable To Save For User: "..player.Name)
end
end end local function ServerShutdown()
if RunService:IsStudio() then return end
print("Handling Server Shutdown") for i, plr in ipairs(Players:GetPlayers()) do task.spawn(function() PlayerRemoved(plr) end) end end Players.PlayerAdded:Connect(PlayerAdded) Players.PlayerRemoving:Connect(PlayerRemoved) game:BindToClose(ServerShutdown)
@@halalouis3814 Now I'm confused. I added a second leaderstat and it worked, but I added a third one and the script stopped working. I went back to two, but it also didn't work.
This was a great video to help make Datastores clear whilst waiting for Doors part 8. Also for Doors part 8 you should make the other place where everyone joins so you can go into a match with your friends and nobody else
great video as ever! One small point. I would save the Player.UserId to a variable when saving or you wont be able to use it if the first attempt fails as the player object will be gone by then. also, not too big a problem, but with normal datastores there is a limit of 1 read/write per 6 seconds to the same key
Oh yeah for sure.. Everybody if you are reading this and feel a little lazy to do it, I promise its worth please follow his advice. It saved me. This is my script if you are confused on how to do it : local function plrLeaving(plr) if sessionData[plr.UserId] then local success = nil local errorMsg = nil local attempt = 1 repeat success, errorMsg = pcall(function() local plrUserId = plr.UserId database:SetAsync(plrUserId, sessionData[plr.UserId]) end)
attempt += 1 if not success then warn(errorMsg) task.wait(3) end until success or attempt == 5
if success then print("Data saved for:",plr.Name) else warn("Unable to save for:",plr.Name) end end end
@@onewill8905 Please help, I get an error message "DataStoreService: ValueNotAllowed: Dictionary is not allowed in data stores. API: SetAsync, Data Store: PlacementBoards" Just before that line I print sessionData[player.UserId] which prints { ["Placement"] = -1 } I understand that its a Dictionary but I followed the code to a T. cant find where I made the error as to my understanding sessionData[player.UserId] = playerData and playerData = {["Placement"] = -1,}
I would suggest for conveniency if you wanna experiment first start off with the loading function and print out what you get because if something is wrong and it saves the wrong thing its a real pain to revert it every time.
This is something i've been looking for for aaagggeeess. you explained it perfectly. I have an idea for a tutorial. how about how to make a capture point system used in Domination gamemodes? i havent seen any videos on how to do that. i thought you would use Region3 but couldn't get much further as I am a beginner at coding. this would help me out a ton. thanks for the great video
every tenth of a second while a player is within 10 studs of a capture point you could update capture progress by an amount and do other visual rigamaro
Hi gnomecode! Just asking if you could maybe make a tutorial of how to make a stealth/action FPS game like Entry Point! Its a fun concept and idea! where you can either sneak around to clear your main objective(s) or go full loud with shootie shooties and take out infinite waves of enemies while you clear or complete you objectives(s) with also saving levels and characters maybe?
Hey GnomeCode, Love Your Content And Tutorials, i Was Wondering Could You Make A "How To Make A Game Like Roblox town" Series? I Would Love To Watch, Cheers!
hey gnomecode, could you please make a video about remote functions (you made on remote events only), i don't think you made one and I think it might help many people
Well basically the only difference is with remote functions you can send information back to whatever is sending the function, so the client can send something to the server and the server can send something back based on the information the client sends. With remote events the sender can send information, but it can't receive information back.
Thank you so much for these tutorials! I honestly wouldn't know what to do with them. Btw, How do I make the Animate2 script compatible with scripts that load other animations?
i accidentally closed the tab which i had this video open in and when i came back it was on the part where it was when i closed it, i guess youtube knows how to use Datastores too
Could you continue the Tower Defense Series for some additional towers (example: farms, commander, dj, vehicle support tower, barracks like in tower battles). If you do, then do it when you have time to do that. That's all.
currently, i could never write this, but i can actually understand it. you explain very well. is this all there is to a datastore? still puzzling over how profileservice seems like an infinitely complex version of this
Hello GnomeCode! I’ve been someone who’s been watching your tutorials for a long time, and they’ve really helped me out! I’ve just been wondering, I think it would be pretty cool if you could show us how to make an rpg kind of game. It could get some views….
Hey GnomeCode, could you make a video with my suggestion? It's because i'm making a roblox horror game. There is a monster that will teleport around the map with 1 minute wait time, and when you look at it, it will pop up in your screen, play a sound and fade away.(I'm still a begginer in roblox studio, thats why i ask talented people like you!)
doors questions : how do you make a Ambush Monster AI? how do you make a room spawn when you reach lets say door 50? how do you make the eyes monster AI? how do you make the Ghost/Halt monster AI? how do you make eyes apper on the walls when you reach door 30-40? how do you make the heartbeat minigame?
Hello GnomeCode! Remember when you did tutorials on how to make Doors Roblox? So... Can you make new Doors tutorials? Doors just added Crucifix, Skeleton Key, etc. Can you make tutorials?
on the sample script he made (the one that makes dollars on the leaderboard appears) mine doesnt work? I even tried running print to see where it fails but it runs print meaning it just refuses to make folder called instance
i have a hint: you can make teddy a camera part in front of him and then do script add remote event in replicatestorge and then put local script and script it that is: local player = game.Players.LocalPlayer local character = player.Character local ph = character:WaitForChild("Humanoid") local cam = workspace.CurrentCamera game.ReplicatedStorage.Jumpscare.OnClientEvent:Connect(function() cam.CameraType = Enum.CameraType.Scriptable cam.CFrame = workspace.Teddy.CameraPart.CFrame workspace.Teddy.HumanoidRootPart.Anchored = true wait(2) workspace.Teddy.HumanoidRootPart.Anchored = false cam.CameraType = Enum.CameraType.Custom end) make sure to put in teddyai when player health = 0 put fire event of the replicatestorge Jumpscare
are you going to continue your doors series? if so, can it be about the guiding light death messages? y'know the blue texts that tell you who you died to and how to survive it next time
I have an I for a new tutorial series it should be about the Roblox game Bigfoot by black spruce studio or you could do a monster island game if it's possible
I recommend checking out DataStore2, as it is one of the best data store modules out there, many popular games uses it as it is really good at preventing dataloss and other bad things!
can you make a tutorial on a button masher with a camera for a keyboard key and if you win you live but if you fail you die kind of like the end of the doors seek chase kind of like that Doors X Fortnite (Collision Button Mash) if you can thank you!
So, I had a question which appeared after I implemented the script into my game (Great tutorial!), the question is how do I modify those leaderstats using other scripts? e.g. I got a leaderstat which is called "Tutorial completed" and its a boolValue and should become true when my tutorial is completed.
Hey GnomeCode, I was making a cart ride game, but classic carts like you see in cart ride into Rdite for example are a bit too boring for me... I've seen alot of games with very interesting carts like in "Cart ride around nothing" or "Cart Ride Delivery Service", can you make a tutorial about those and how to make them? thanks!
If anyone’s watching this a year later and can help I’m confused on what the variable sessiondata does. How are we checking if there is anything inside the sessiondata variable connected to the player when it’s just sessiondata = {}
"{}" is used to make a "table" I sadly can't help much, because I'm not very good with so called "tables" I just know that "tables" is used to store multiple stuff inside which you can use later on in scripts Hope it helped ;)
@@Thomasis5 I know what a table is lol im not new to scripting im just confused on how we inserted the player.UserId inside of the sessiondata Variable
so basically, in the loading script it sets the default values to the players session data, and the saving script reads it, and saves it. and from now on, your player session data will have data in it
Hey i watching you since this channel 12k Please can you contuine the doors tutorial? Like: Seek, figure, objects, animations, Lobby. Maybe some people can do the other thing i can too but i cant make the seek ai and chase sceen same as tools to like lighters spawning in closets. I know you will do what you fans want. You are best.
When I join for the first time, it prints 'Connected to database' but not 'Assigning default data' and it doesn't seem to save Incase you need the script, local sessionData = {} local DatastoreService = game:GetService("DataStoreService") local database = DatastoreService:GetDataStore("data") local Players = game:GetService("Players") Players.PlayerAdded:Connect(function(Player) local Folder = Instance.new("Folder") Folder.Parent = Player Folder.Name = "Stats"
local Shrine = Instance.new("StringValue") Shrine.Parent = Folder Shrine.Name = "Shrine"
local Faction = Instance.new("StringValue") Faction.Parent = Folder Faction.Name = "Faction"
local Weapon = Instance.new("IntValue") Weapon.Parent = Folder Weapon.Name = "Weapon"
local success = nil local playerData = nil local attempt = 1
repeat success, playerData = pcall(function() return database:GetAsync(Player.UserId) end) attempt += 1 if not success then warn(playerData) task.wait(3) end until success or attempt == 5
if success then print("Connected to database!") if not playerData then print('Assigning default data') playerData = { ["Shrine"] = "", ["Faction"] = "", ["Weapon"] = 0 } end sessionData[Player.UserId] = playerData else warn("Unable to get data for", Player.Name) Player:Kick("Unable to load your data...") end Shrine.Value = sessionData[Player.UserId].Shrine Shrine.Changed:Connect(function() sessionData[Player.UserId].Shrine = Shrine.Value end) Faction.Value = sessionData[Player.UserId].Faction Faction.Changed:Connect(function() sessionData[Player.UserId].Faction = Faction.Value end) Weapon.Value = sessionData[Player.UserId].Weapon Weapon.Changed:Connect(function() sessionData[Player.UserId].Weapon = Weapon.Value end) end) function PlayerLeaving(player) print(player, "is leaving") if sessionData[player.UserId] then local success = nil local errorMsg = nil local attempt = 1
repeat success, errorMsg = pcall(function() database:SetAsync(player.UserId, sessionData[player.UserId]) end) attempt += 1 if not success then warn(errorMsg) task.wait(3) end until success or attempt == 5
if success then print("Data has been saved for the one and only", player.Name) else warn("Sadly unable to save for the one and only", player.Name) end
end end game.Players.PlayerRemoving:Connect(PlayerLeaving)
Hello GnomeCode, i saw that you have made a horror game like piggy recently, and i wanted to do that too, but i saw somethings are missing on the tutorials that i do need, thing like how a player gets selected as the monster, how the coin system works, how you can buy new skins, map voting stuff like that, so can you please make tutorials for that or help me out on my game, already big thanks🙂
buddy... where did the doors tutorials go?!? No rush but I'm still very excitedly waiting. Get it, no rush... because that's the name of the doors monster... nvm
Can we all agree GnomeCode is the best roblox lua teacher on youtube!! 😊
Oh most definitely
yes it's an awesome thing.
Better than TheDevKing
yea the others are unhelpful
definetly last time i did a tutorial from TheDevKing it didnt even work
Out of the many CZcamsrs that I've watched to learn Roblox scripting, you GnomeCode have taken 1st place. I appreciate you not skipping over or poorly explaining even the smallest of details that may be crucial for a beginner to understand. Thank you for the great video.
YES
I agree GnomeCode is #1
gnomecode you are da goat when i am a millionaire roblox-developer you can have 1 dollar
btw ur website is blocked for some reason :(
@@BrightDay-tb8jjwhat
I hope you had a wonderful Christmas with your family. Nice to see you still pushing out videos.
bot
@@The_Real_Mini beep boop i am totally a bot
I was never good with how to use tables so this helped a ton, thank you.
GnomeCode is awesome. He makes actually good videos and explains almost everything. Keep it up GnomeCode!
bot
The Script:
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local DatastoreService = game:GetService("DataStoreService")
local database = DatastoreService:GetDataStore("PlayerData")
local sessiondata = {}
local DefaultData = {
["Dollars"] = 50
}
local function PlayerAdded(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
local Dollars = Instance.new("NumberValue", leaderstats)
Dollars.Name = "Dollars"
local sucsess = nil
local PlayerData = nil
local attempt = 1
repeat
sucsess,PlayerData = pcall(function()
return database:GetAsync(player.UserId)
end)
if not sucsess then
warn(PlayerData)
task.wait(3)
end
attempt += 1
until sucsess or attempt == 5
if sucsess then
print("Connected To Database")
if not PlayerData then
print("No User Data Found, Assigning Default Data")
PlayerData = DefaultData
end
sessiondata[player.UserId] = PlayerData
else
warn("Unable To Get Data For User: "..player.Name)
player:Kick("Unable To Load Your Data, Please Try Again Later! :D")
end
Dollars.Value = sessiondata[player.UserId].Dollars -- SYNC LEADERSTATS WITH DATASTORE
Dollars.Changed:Connect(function()
sessiondata[player.UserId].Dollars = Dollars.Value
end)
leaderstats.Parent = player
end
local function PlayerRemoved(player)
if sessiondata[player.UserId] then
local sucsess = nil
local errorMsg = nil
local attempt = 1
repeat
sucsess, errorMsg = pcall(function()
database:SetAsync(player.UserId, sessiondata[player.UserId])
end)
if not sucsess then
warn(errorMsg)
task.wait(3)
end
attempt += 1
until sucsess or attempt == 5
if sucsess then
print("Data Saved For User: "..player.Name)
else
warn("Data Unable To Save For User: "..player.Name)
end
end
end
local function ServerShutdown()
if RunService:IsStudio() then
return
end
print("Handling Server Shutdown")
for i, plr in ipairs(Players:GetPlayers()) do
task.spawn(function()
PlayerRemoved(plr)
end)
end
end
Players.PlayerAdded:Connect(PlayerAdded)
Players.PlayerRemoving:Connect(PlayerRemoved)
game:BindToClose(ServerShutdown)
bro your a legend tysm
@@daog_beast4151 no problem, btw if you need help scripting just ask me, i have quite a lot of experience
@@halalouis3814 How would I add another leaderstat to this?
@@halalouis3814 Now I'm confused. I added a second leaderstat and it worked, but I added a third one and the script stopped working. I went back to two, but it also didn't work.
@@Erolsaurusmight be because roblox loads and unloads things weirdly, try using multi-threading
This was a great video to help make Datastores clear whilst waiting for Doors part 8. Also for Doors part 8 you should make the other place where everyone joins so you can go into a match with your friends and nobody else
He already did that with lobby elevator video
we even not added ambush, dark rooms and more... and you already want to take a step towards multiplayer?
@@GreatRamilYT it can already be multiplayer me and my pals have been playing through my version lol
@@GreatRamilYT plus we have all the bases we need to recreate the game
@@KoalaOnYT_ for now we have to finish some more banal things, but for now you can use the vip server or find a tutorial on how to make multiplayer
great video as ever!
One small point. I would save the Player.UserId to a variable when saving or you wont be able to use it if the first attempt fails as the player object will be gone by then.
also, not too big a problem, but with normal datastores there is a limit of 1 read/write per 6 seconds to the same key
Excellent points, thanks griffo
@@GnomeCode your cool i like you
@@GnomeCode Can you make more doors?
Oh yeah for sure.. Everybody if you are reading this and feel a little lazy to do it, I promise its worth please follow his advice. It saved me.
This is my script if you are confused on how to do it : local function plrLeaving(plr)
if sessionData[plr.UserId] then
local success = nil
local errorMsg = nil
local attempt = 1
repeat
success, errorMsg = pcall(function()
local plrUserId = plr.UserId
database:SetAsync(plrUserId, sessionData[plr.UserId])
end)
attempt += 1
if not success then
warn(errorMsg)
task.wait(3)
end
until success or attempt == 5
if success then
print("Data saved for:",plr.Name)
else
warn("Unable to save for:",plr.Name)
end
end
end
@@onewill8905 Please help, I get an error message "DataStoreService: ValueNotAllowed: Dictionary is not allowed in data stores. API: SetAsync, Data Store: PlacementBoards" Just before that line I print sessionData[player.UserId] which prints { ["Placement"] = -1 } I understand that its a Dictionary but I followed the code to a T. cant find where I made the error as to my understanding sessionData[player.UserId] = playerData and playerData = {["Placement"] = -1,}
I was gonna bash on the gnome but this is pretty well-engineered. Wish i had you when i was learning how to code on Lua.
bot
@@The_Real_Mini tf, you calling me a bot kid?
@@YuinAstrophel yes
@@The_Real_Mini weird
It didn't work and now it's 3am and I'm struggling on how the hell the leaderboard disappeared:,D
bruh
add it to player, not any other
i was about to add datastores and then i got the notification about a gnomecode video
Thanks gnome for always doing tutorials on things we all know other roblox how to creators can never do due to their laziness
on god
??
bot
i did have to get some help for more leaderstats but your a lifesaver i spent hours on trying before hand thanks
Bro can you help me?
thank you gnomecode for making awesome tutorials and inspiring tons of great games!
bot
All the other videos I've watched show you how to do it but don't teach you so thank you gnomecode
Best lua teacher!, A very calming voice too, Not a screechy 9 yr old, ty
i made a datastore but one of the variables doesn't work, when it changes, it doesn't fire the "changed" function
I said im gonna look up datastores and this video notif poped up
Gnome did you put cameras in my room!??! /j
Great Video! I learnt a lot from this channel
working on a new game and stuff like thisll really help. thanks, gnome!
Thank you sir, never seen before the repeat until implementation
Thank you for posting - learnt a lot!
I would suggest for conveniency if you wanna experiment first start off with the loading function and print out what you get because if something is wrong and it saves the wrong thing its a real pain to revert it every time.
Great Video! Was Helpfull for me that dosent understand DataStores.
This is something i've been looking for for aaagggeeess. you explained it perfectly.
I have an idea for a tutorial. how about how to make a capture point system used in Domination gamemodes? i havent seen any videos on how to do that. i thought you would use Region3 but couldn't get much further as I am a beginner at coding.
this would help me out a ton. thanks for the great video
every tenth of a second while a player is within 10 studs of a capture point you could update capture progress by an amount and do other visual rigamaro
to get wether or not a player is a certain distance you do (CapturePoint.Position - Character.Position).magnitude
i dont know if i should feel insulted or honored when he calls me a gnome..
bot
@@The_Real_Mini bot
This really helps for my game👍
Hi gnomecode! Just asking if you could maybe make a tutorial of how to make a stealth/action FPS game like Entry Point! Its a fun concept and idea! where you can either sneak around to clear your main objective(s) or go full loud with shootie shooties and take out infinite waves of enemies while you clear or complete you objectives(s) with also saving levels and characters maybe?
I remember four years ago I was watching your scripting tuts. Now when I look at your profile you have nearly half a bil visits man. Ur the goat
I love your content man
i learn a lot
yes the plugin edit video sounds great too :)
Hey GnomeCode, Love Your Content And Tutorials, i Was Wondering Could You Make A "How To Make A Game Like Roblox town" Series? I Would Love To Watch, Cheers!
Bro, u are the best teacher! I like to watching u. Sorry for my English 😅
hey gnomecode, could you please make a video about remote functions (you made on remote events only), i don't think you made one and I think it might help many people
Well basically the only difference is with remote functions you can send information back to whatever is sending the function, so the client can send something to the server and the server can send something back based on the information the client sends. With remote events the sender can send information, but it can't receive information back.
You are helping so much! Liked and followed you!
Hey GnomeCode! I know it has been a month, and I don't know if anybody had asked this, but are you able to make a Murder Mystery type series?
Teddy series
@@ghostlyn69 that's more Piggy like than MM
what a coincidence, I was just looking for videos about datastore
This will be helpful and also I bought some of your merch
I love all the games u make ! Teddy is my favourite!
The script isn’t working for me. I copied everything in the script but it won’t save the cash value in my leaderstats between games
same it just randomly decides when to save and always loads the default data only
then you didn’t do it correctly brother
Thank you so much for these tutorials! I honestly wouldn't know what to do with them.
Btw, How do I make the Animate2 script compatible with scripts that load other animations?
This is gonna be useful in my next game since its a long game!
Amazing tutorial! earned a like and sub
i accidentally closed the tab which i had this video open in and when i came back it was on the part where it was when i closed it, i guess youtube knows how to use Datastores too
it doesnt work, I leave then rejoin and the data is the base value
same
This guy is a goat tysm!
What if setting the player's data fails all five attempts? Isn't it safer to not check the attempt number at all?
New series! "How to make a game like entry point" rn.
Could you continue the Tower Defense Series for some additional towers (example: farms, commander, dj, vehicle support tower, barracks like in tower battles). If you do, then do it when you have time to do that. That's all.
create it urself. he cant help u with everything
currently, i could never write this, but i can actually understand it. you explain very well. is this all there is to a datastore? still puzzling over how profileservice seems like an infinitely complex version of this
These are so clutch tysm
Hello GnomeCode! I’ve been someone who’s been watching your tutorials for a long time, and they’ve really helped me out! I’ve just been wondering, I think it would be pretty cool if you could show us how to make an rpg kind of game. It could get some views….
Hey GnomeCode, could you make a video with my suggestion? It's because i'm making a roblox horror game. There is a monster that will teleport around the map with 1 minute wait time, and when you look at it, it will pop up in your screen, play a sound and fade away.(I'm still a begginer in roblox studio, thats why i ask talented people like you!)
doors questions :
how do you make a Ambush Monster AI?
how do you make a room spawn when you reach lets say door 50?
how do you make the eyes monster AI?
how do you make the Ghost/Halt monster AI?
how do you make eyes apper on the walls when you reach door 30-40?
how do you make the heartbeat minigame?
years and years of luau programming exp i guess?
Hello GnomeCode! Remember when you did tutorials on how to make Doors Roblox? So... Can you make new Doors tutorials? Doors just added Crucifix, Skeleton Key, etc. Can you make tutorials?
You could of just said “hey gnomecode how can I fully rip off doors with nothing original”
@@ghostlyn69 trueee
Can you do a tutorial on how to make a game like the mimic? You may have heard of it but if you can much appreciated!
Cool video but why you don’t upload about teddy anymore?
TIP: if the code is not working, MAKE SURE you typed everything correctly, even the tiniest of errors could cause the script to fail.
on the sample script he made (the one that makes dollars on the leaderboard appears) mine doesnt work? I even tried running print to see where it fails but it runs print meaning it just refuses to make folder called instance
leaderstats HAS TO BE NAMED "leaderstats" otherwise it will not work@@jstarandomdude
it's been a month since he uploaded this video...
i have a hint: you can make teddy a camera part in front of him and then do script add remote event in replicatestorge and then put local script and script it that is: local player = game.Players.LocalPlayer
local character = player.Character
local ph = character:WaitForChild("Humanoid")
local cam = workspace.CurrentCamera
game.ReplicatedStorage.Jumpscare.OnClientEvent:Connect(function()
cam.CameraType = Enum.CameraType.Scriptable
cam.CFrame = workspace.Teddy.CameraPart.CFrame
workspace.Teddy.HumanoidRootPart.Anchored = true
wait(2)
workspace.Teddy.HumanoidRootPart.Anchored = false
cam.CameraType = Enum.CameraType.Custom
end) make sure to put in teddyai when player health = 0 put fire event of the replicatestorge Jumpscare
wtf u on about
You should make a tutorial on how to add collectable gold into the Doors Tutorial series, I'd love to see it!
are you going to continue your doors series? if so, can it be about the guiding light death messages? y'know the blue texts that tell you who you died to and how to survive it next time
It didn't work for me... I leave and rejoined and it didn't save my data
didnt work can you help me
Can you make a series of how to make a steep steps game..
I have an I for a new tutorial series it should be about the Roblox game Bigfoot by black spruce studio or you could do a monster island game if it's possible
Sadly, the data isnt saving for some reason and it always makes it the default value.
you made a mistake somewhere in your code
@@roatninthethird no it just doesn't save even if you copy it word for word
@@jerrypilkles worked for me
@@roatninthethird Mine is giving the ErrorMsg when leaving the game
@@flision99 i already gave up on coding, you're on your own
Thank you, this really good working
I recommend checking out DataStore2, as it is one of the best data store modules out there, many popular games uses it as it is really good at preventing dataloss and other bad things!
GnomeCode please make a hungry pig game pls
you probably wont see this, but can you make a ambush ai for the doors tutorials.
I am interested in a standalone for editing datastores! Please gnomecode!!! Love your content btw!
Can you make a shooter game series?
He needs to finish doors series first
That is actually a great idea I hope he does :) maybe after that he can maybe make a combat game like a sword fight game
can you make a tutorial on a button masher with a camera for a keyboard key and if you win you live but if you fail you die kind of like the end of the doors seek chase kind of like that Doors X Fortnite (Collision Button Mash) if you can thank you!
GnomeCode make vídeo like: How to make doors delete past rooms and generate more. Like this
Learn how to code bro
hes most likely on a hiatus on youtube, hes still active on roblox so dont worry.
I dont want all of the data to be a leaderstat tho
ngl gnome code is easy to understand because he speaks at a normal pace, compared to the “oksotodaywehavethedatastore”
So, I had a question which appeared after I implemented the script into my game (Great tutorial!), the question is how do I modify those leaderstats using other scripts? e.g. I got a leaderstat which is called "Tutorial completed" and its a boolValue and should become true when my tutorial is completed.
my man Gnome; helpful as ever. whoever, me n' u both, r british, why you be needing 500 finest dollars.
so helpful!
BRO FFS DONT DO THIS THING WHERE WE TRY FIND ERRORS ALONG THE WAY IT JUST MAKES IT MORE CONFUSING WHEN WE ARE GOING THROUGH AND IS SCREWS MY NOTES
it makes it a bit easier for a lot of people to understand why they are getting errors in the first place
@@TheMaxGuy nuh uh
GnomeCode i have something to ask you, can you make a game like steep steps, i really wanted a tutorial series for it..
a good lesson, but it would be nice to look at old materials
I followed every step and it didnt work
Hey GnomeCode, I was making a cart ride game, but classic carts like you see in cart ride into Rdite for example are a bit too boring for me... I've seen alot of games with very interesting carts like in "Cart ride around nothing" or "Cart Ride Delivery Service", can you make a tutorial about those and how to make them? thanks!
If anyone’s watching this a year later and can help I’m confused on what the variable sessiondata does. How are we checking if there is anything inside the sessiondata variable connected to the player when it’s just sessiondata = {}
"{}" is used to make a "table"
I sadly can't help much, because I'm not very good with so called "tables"
I just know that "tables" is used to store multiple stuff inside which you can use later on in scripts
Hope it helped ;)
@@Thomasis5 I know what a table is lol im not new to scripting im just confused on how we inserted the player.UserId inside of the sessiondata Variable
@@MythicMemorys Ok, my bad😅
so basically, in the loading script it sets the default values to the players session data, and the saving script reads it, and saves it. and from now on, your player session data will have data in it
Hey i watching you since this channel 12k Please can you contuine the doors tutorial? Like: Seek, figure, objects, animations, Lobby. Maybe some people can do the other thing i can too but i cant make the seek ai and chase sceen same as tools to like lighters spawning in closets.
I know you will do what you fans want.
You are best.
on the next doors video can you show how to generate rooms at a specific door? like how the figure room generates at door 50.
PLEASE REPLY IF YOU ARE!!!!!! YOU ARE THE BEST CODER EVER!!!!!!!
If room == 51 then
newroom = rooms.Library:Clone()
end
Yeah that simple.
@@ghostlyn69 yeah but which script?
@@3dsman65 room module script duh
@@ghostlyn69 because it doesn't work
That's great and all but how do you store a list of values that I can table.Insert() more values into?
When I join for the first time, it prints 'Connected to database' but not 'Assigning default data' and it doesn't seem to save
Incase you need the script,
local sessionData = {}
local DatastoreService = game:GetService("DataStoreService")
local database = DatastoreService:GetDataStore("data")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(Player)
local Folder = Instance.new("Folder")
Folder.Parent = Player
Folder.Name = "Stats"
local Shrine = Instance.new("StringValue")
Shrine.Parent = Folder
Shrine.Name = "Shrine"
local Faction = Instance.new("StringValue")
Faction.Parent = Folder
Faction.Name = "Faction"
local Weapon = Instance.new("IntValue")
Weapon.Parent = Folder
Weapon.Name = "Weapon"
local success = nil
local playerData = nil
local attempt = 1
repeat
success, playerData = pcall(function()
return database:GetAsync(Player.UserId)
end)
attempt += 1
if not success then
warn(playerData)
task.wait(3)
end
until success or attempt == 5
if success then
print("Connected to database!")
if not playerData then
print('Assigning default data')
playerData = {
["Shrine"] = "",
["Faction"] = "",
["Weapon"] = 0
}
end
sessionData[Player.UserId] = playerData
else
warn("Unable to get data for", Player.Name)
Player:Kick("Unable to load your data...")
end
Shrine.Value = sessionData[Player.UserId].Shrine
Shrine.Changed:Connect(function()
sessionData[Player.UserId].Shrine = Shrine.Value
end)
Faction.Value = sessionData[Player.UserId].Faction
Faction.Changed:Connect(function()
sessionData[Player.UserId].Faction = Faction.Value
end)
Weapon.Value = sessionData[Player.UserId].Weapon
Weapon.Changed:Connect(function()
sessionData[Player.UserId].Weapon = Weapon.Value
end)
end)
function PlayerLeaving(player)
print(player, "is leaving")
if sessionData[player.UserId] then
local success = nil
local errorMsg = nil
local attempt = 1
repeat
success, errorMsg = pcall(function()
database:SetAsync(player.UserId, sessionData[player.UserId])
end)
attempt += 1
if not success then
warn(errorMsg)
task.wait(3)
end
until success or attempt == 5
if success then
print("Data has been saved for the one and only", player.Name)
else
warn("Sadly unable to save for the one and only", player.Name)
end
end
end
game.Players.PlayerRemoving:Connect(PlayerLeaving)
holy thank you
wait this isnt the script
nvm
@@nxbid
Could you please consider doing a video on Ordered Data Stores?
Thanks for the awesome tutorila!
but how do i can save my progress without leader stats
same way
during the PlayerAdded function, the "warn(playerData)" line after the pcall function to load player data throws "Argument 2 missing or nil".
wat do?
nevermind i'm silly i copied the code from PlayerLeaving and i left SetAsync instead of GetAsync. All good :) great vid btw
teddy how to get toy dice
Hello GnomeCode, i saw that you have made a horror game like piggy recently, and i wanted to do that too, but i saw somethings are missing on the tutorials that i do need, thing like how a player gets selected as the monster, how the coin system works, how you can buy new skins, map voting stuff like that, so can you please make tutorials for that or help me out on my game, already big thanks🙂
Bro this is insane
why does the console say:
Argument 1 missing or nil
buddy... where did the doors tutorials go?!? No rush but I'm still very excitedly waiting. Get it, no rush... because that's the name of the doors monster... nvm