You can also use the "for" syntax as an alternative to collection service, as you can multitask with it and it's very simple and not complicated at all to use. CollectionService is still pretty good though, but I prefer "for".
There can be grammar mistakes so I hope you know how to fix my grammar (Put the Tween:Play() somewhere in a function like Script.Parent.ProximityPromt.Triggered:Connect(function() Tween:Play() end)
I don't use collection service, nor do I use dupe scripts. Instead I put them in a folder and for the loop I do folder:get children instead of collectionservice:get tagged but both work
This works well until you want to organise your folder structure differently. What if your doors are inside a building? You would probably want them to be inside the folder/model for that building rather than in their own separate doors folder. CollectionService allows you to easily access all the tagged elements rather than relying on a specific folder layout.
hey bro nice video !!! but by the way remember ? about doors ? you made the last episode is 7 about how to make doors in roblox studio so maybe you should continue making video about how to make doors in roblox studio ?
This is literally game changing! Just the other day I was wondering if Roblox has some sort of system similar to Unity Prefabs where you can just edit 1 and it would edit all of them. But now I know! ~~After almost 8 years~~ _Now I just have to go and implement this change... Oh god..._
These tutorials provide the building blocks for a game. You're the one who makes the game! Use these as steps if you need to. Hopefully you can create yourself a fun game!
Okay so, what makes me mad is that you didn't explain the for loop for this particular topic. Can you please tell me how that works for CollectionService?
it basically gets every instance (doesn't matter if they are in the ServerStorage, ReplicatedStorage, Workspace, etc) with the tag you are looking for. For example, it's very good if you want to handle AI's because you dont need a single script inside every npc or every npc inside a single folder
Just copy and paste them, or use Package system to make the door a package, so if you change the door's script, and update the changes it should update all doors in the place. You could also put the door in a storage service (ReplicatedStorage or ServerStorage) and clone them to a position on the map.
It makes more sense to have your scripts either in server script or player scripts. They should never be in a model. It keeps things organized and maintains a good workflow
@@miles1094 So how about NPCs? Do i have to use OOP or even use for loops to make something like a enemy NPC that shoots you with a weapon? I can understand AI navigation, but what about aiming, shooting weapon, and all that misc stuff? 99% of NPCs with weapons i came across in toolbox have their scripts inside the model, and yeah sure non roblox NPCs are handled differently like they have seperate classes for them, like behavior, weapon handling, etc but this is roblox
@@chibisayori20I use CollectionService and ModuleScripts for my AI's, and when I did a stress test with 30 of them i mostly get 45-50 fps and my PC is pretty much a low-end pc. And when all my AI's had separate scripts it made me get 20-30 fps.
@@chibisayori20 That doesn't mean theyre good 99% of those npcs are outdated and not very optimized Now you could have scripts in your npcs and still have them optimized, but generally itd just be better to have one script manage multiple npcs instead of multiple scripts managing their respective npcs Aiming, shooting, etc, just use modulescripts brah
Can someone explain the original moving door script to me, specifically the "function MoveDoor(isOpen)" thing? I'm not understanding the argument of "isOpen" and how it's pertaining to the function. I know that arguments send information that is out of scope of a function to said function, but what information is "isOpen" sending? Does the "isOpen" attribute need to be applied to the model in order for the door to move? What about when the attribute is set to "not isOpen" after the proxim prompt is triggered? The door can still be moved after it's opened (closing the door). What does "local isOpen = model:GetAttribute("isOpen")" even mean?
If the door should be open or not, if it should, then it reacts a way, if it shouldn’t, then it react another way. Also, the last line just get the value of the attribute.
Its advanced scripting stuff and it seems like you dont understand it,but dont worry just practice more!And believe me studying better is better than studying more,so if you find scripting tutorials that you perfectly understand youre good to go!😊
thank you. This is a very helpful video, everyone should know to do these. I've looked so much on how to do this. I really appreciate this, keep the work and don't give up. Also you should make a remake of your Tower Defense, maybe with rng, many people will look at a tutorial such it!
It basically means the object that you put the script into, for example if you put a script into a part the script.Parent would be the part,and the script would be called the ‘Child’ of that part. If you are new to scripting and you think you are ready and smart you can always learn to script,as there are many tutorials out there on RU-vid! 😊
Gnome, i really want to make a game like zombie Attack and zombie Rush.. Can you make a tutorial series about this please? I really want for example an episode about How to make a unique Boss for each map
Sorry i thought you asking about the model that is in the for loop, in the parameter because you add the function movedoor to the for loop and told the script that you want it to work on the model and isopen using the parameter
I dont use collection service , but i dont duplicate doors with scripts either, i would probably put parts to be replaced with the actual door asset when the game is launched, and used a module for the client to open doors
That's actually what many games outside of Roblox do, they just have a door as an asset and when game is launched and the level loaded, it will spawn the door assets at their respective positions and have their logic setup by a class. Same goes for NPCs, interactables, player spawners and in-fact, Roblox's engine works same way since the basic parts and stuff like that are all handled by engine side, it just the logic/player stuff is handled on the Lua side. Tho setting up a system like that is kinda difficult, but i assume you can utilize the Package system they have to have all assets, scripts all placed in that package, so you only have to import it once, and all updates should affect every place that has your package.
@@chibisayori20 i alteady made a system that has a module that can acess an asset with a directory string, its pretty cool , ex: "Models/Door/Cool Door"
@@GnomeCode bro you actually responded, i didn’t expect it would happen, me and my friend know its in derelict but, a question is would you know how to make a local script which prob has multiple scripts or not, if you do know can you try to make a vid or reply to this comment with a script, not needed but if you can then can you do it?
Thats actually really usefull, but i have a game that cant have this or some stuff will break, also i know people ask this a lot but when is episode 8 of the doors tutorial? I dont wanna risk breaking everything by changing some code
... bro lore is a story element in your game, u dont need scripting for lore, lore is story and you decide it, u dont need a tutoeial to make up a story
This will help me a lot with my rooms game I’m making! Speaking of that, I have a problem that been getting REALLY annoying. After I run the game all the parts AND unions get deleted from the workspace. There still physically in the game, just not the workspace. This has made half of the stuff I want to make impossible, and it really making me mad because I have no clue where the problem is occurring. Does anyone have a solution to this? Edit: I found a solution to my main problem which was finding the world pivot of a model instead of the part, but the parts still get deleted
wouldnt it just be enough to put a script in the server script service and get the parent of the proximityprompt to get the model. This way you dont need a tagging system and only one script (that also checks whether the proximity prompt parent is a door model.
@@Chaneb you can't have server overload if you intent your game to be played only in Studio 😉 jokes aside, alternative to this is just to put your model with script inside of a storage and Clone() it and parent it to a position you want it to be or use OOP but that's different thing.
you can apply collection service to more things than just doors with proximity prompts, like a group of items that are similar but only slightly different that you want to change
it is not handy to use this trash bro, it is useful but hard to understand, why we need plugins, fucked that, bro you can just disable script and clone it into your same objects