· 6 years ago · Dec 14, 2019, 04:38 PM
1Scripting Tutorials Critique
2
3=== Disclaimer & Counter Arguments ===
4
5"IM NOT A ___"
6You may read parts such as, "Calling yourself a script kiddie doesn't look good." and get offended because
7"Greenman called me a script kiddie :(" but I'm talking about HOW YOU PORTRAY YOURSELF through your writing.
8
9"If I did a lot of stuff bad, then why did I get so many likes?"
10Because the beginners reading your tutorial aren't going to notice anything wrong.
11If you look at the thread replies, a lot of the people who spotted inaccurate things ARE SCRIPTERS.
12
13"I don't have time to change that"
14
15Go to the Roblox Exploiting Section, make a new thread, and click the SAVE AS DRAFT button.
16Now, when you have time to work on it, go to your User Control Panel (settings gear), and find Saved Drafts on the sidebar.
17When you are editing the draft, you can see what the final thread will look liked by clicking PREVIEW POST.
18When you want to stop writing for the day, you can click SAVE AS DRAFT and come back to it later.
19
20Once you finish the draft, copy all of the text in the thread, then, open your published thread in full edit mode.
21Now, select all the text and delete it, then, paste the copied draft and save.
22
23"Just because you don't like it doesn't mean its bad. No one is getting hurt"
24Not necessarily true. If I find something that I can prove to be incorrect, you should change it.
25If you decide to ignore the inaccurate information I find, you are hurting the reader by giving
26them false information.
27
28=== Chapter 1 ===
29
30Section: Variables
31
32"A variable is a phrase that holds a value so you will not have to repeat it multiple times"
33The definition of a variable should be simplified in a case like this but you did leave out a few things.
34Phrase is an inaccurate term here because variables names don't have spaces and usually aren't very long.
35Also, one crucial part of the definition is mentioning that YOU CAN CHANGE THE VALUE of the variable.
36
37Section: GetService():
38
39"So in our game we have 'Services' and most of them are direct children of the game"
40Provide a few examples such as Workspace, Players, ReplicatedStorage and explain what they do
41
42"game.Players you can do game:GetService("Players")"
43I would also mention that you can access Workspace by doing workspace
44
45"So in the game jailbreak they change their Names randomly so doing game.Players we wont have access to it so thats why we use game:GetService("Players")"
46The wording here is confusing so I would provide an example of the name scrambling.
47
48Section: Functions
49
50"A function is like a variable but except when you call it, it executes a code"
51This is not a good way to describe it. A function is runs A BLOCK OF CODE when called.
52Also, it's worth mentioning that functions can take in inputs (arguments) and produce outputs (return values).
53
54"here is an example:
55
56function STDS()
57warn("boom you just got STDS")
58end"
59
60This is not a good example because it makes functions look pointless. I would provide an example with multiple lines of code
61and demonstrate how it can minify your code significantly by calling the function instead of copying and pasting the block of code.
62
63"A parameter is basically a value"
64It's actual a special kind of variable because you access the value using the parameter's name
65
66Section: Loops
67
68"A loop is basically doing something repeatedly"
69I guess this is ok but I would mention that the loop is terminated by a condition (i.e. while loop terminates when condition becomes false)
70
71"while true do"
72NO NO NO NO NO NO NO NO!!!!!!!! DONT DO THAT!
73You need to explain why this is bad and how to safely run an infinite loop.
74
75"here is an example code:
76
77function GiveStds()
78print("stds given")
79end
80
81while true do
82GiveStds()
83wait(2)
84end"
85
86This isn't a good example because:
87- You're unnecessarily using a function for one line of code
88- It starts with a [safe] infinite loop instead of a normal one
89- It doesn't help the reader understand the syntax
90
91You need to get the reader to understand the CONDITION part of the while loop and how it terminates the loop.
92
93"If you want a infinite loop you can do:
94
95while wait() do
96-- script
97end"
98
99But first you said "while true do" so it's going to confuse the reader
100
101"or you can use my best friend: RenderStep:
102
103game:GetService("RunService").RenderStepped:Connect(function()
104
105end)"
106
107When you're explaining basic concepts, you shouldn't include:
108- Complex services
109- Events
110- Anonymous functions (function() end)
111
112What you need to do is:
113- Cover the:
114 - While loop
115 - For loop (numeric)
116 - Repeat loop
117- Mention infinite loops and why they can be dangerous
118- Remove any mention of the RenderStepped loop (remember this is just the basics)
119
120Section: now that we have some knowledge of LUA we can actually make some scripts
121
122"Here is how you can make a simple walkspeed script:
123
124game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 100"
125
126You never mention how properties work and what the "." does so this example is going
127to be confusing.
128
129
130"So first we have to locate our Character which you can simply do by doing game.Players.LocalPlayer"
131You should explain what the character is and how the Player object and [player] model in Workspace are linked (*cough* *cough* .Character)
132
133"We do "LocalPlayer" because we are only doing it for ourselves "Local""
134You should explain that this only works in the LocalScript context
135
136"then we access humanoid and we will change the property called "WalkSpeed""
137Again, these are beginners. They don't know what "Humanoid" is and what a property is.
138
139"Next up we will be abusing remotes!!!"
140You need to learn how to walk before you can run. Basically, what I mean by that is, you need to
141cover ALL of the basic concepts before getting to this point.
142
143"A remote is basically an event stored usually in ReplicatedStorage"
144This is not the correct definition and beginners aren't going to know what an "event" is.
145You're also missing a crucial point which is Remote Functions and Events EXECUTE A BLOCK OF
146CODE ON THE SERVER.
147
148"so for example we have a remote called "GiveSTDS" in ReplicatedStorage
149and everytime we have sex the event gets fired so now"
150Just exclude this part because you aren't showing any explicit code where this occurs
151
152
153"this is how you fire a RemoteEvent:
154game.ReplicatedStorage.GiveSTDS:FireServer()
155if it was a RemoteFunction you would do:
156game.ReplicatedStorage.GiveSTDS:InvokeServer()"
157You're forgetting about arguments which a lot of remote functions/events require.
158
159
160"if you want to get more into remote beating up shit i suggest u use mr spy:
161https://v3rmillion.net/showthread.php?tid=426943
162or use the synapse x's remote spy"
163
164You barely provide any examples of how these remote functions/events can be abused.
165Providing a remote spy isn't going to help if you don't teach people how to use it.
166
167"Now we will learn how to teleport yourself to another player!"
168
169This part is just a copy and paste activity and doesn't teach the reader anything.
170
171Section: Exploit GUIS:
172Omit this section entirely as it's out of place for a basic tutorial.
173
174In order to do this, the reader needs to understand:
175- Understand the GUI elements in Roblox
176- Basic UI design
177- Events (to bind the elements to code)
178
179" Updated! Now with a world zero script making tutorial!"
180Yet again this is just a copy and paste activity. The reader doesn't know
181how modules work so they are just going to copy you.
182
183Section: Drawing API
184Again, not in a basic tutorial. The reader needs to understand the concept of
185an object and how access its properties and methods. If the reader did understand
186that, you could provide them the documentation and they would figure it out on
187their own.
188
189Section: Boolean toggles
190This isn't a toggle but a conditional statement. You should explain that the
191conditional (if) statement runs a block of code based on the result from a condition.
192But before this, you should explain how to construct conditions using relational
193and logical operators.
194
195Section: _G
196"What does _G stand for?
197it stands for global variable"
198
199_G is the global environment table shared between all LocalScripts in the game
200
201"Loadstring(game:HttpFuck(linkhereidk, stds)"
202When I see this, I know you stopped caring. Just remove this part.
203
204"that wont work because it isnt a global variable"
205This implies that _G is used to create global variables.
206If this tutorial was paced correctly, scoping would've been covered before this
207and the reader would know that omitting local makes the variable GLOBAL.
208
209Section: Bypassing Anti Cheats/Exploits
210
211This just links to another thing so idk why this is here
212
213Section: Metatables
214
215"basically a metatable basically like gives a table more power like giving u some levels and shit"
216Wrong. (I know this is a joke but still)
217
218
219"it now has a metatable really nothing has been really changed"
220That's because the table has no metamethods in it.
221
222"i suggest you take a look at this article: https://developer.roblox.com/en-us/articles/Metatables"
223Making a joke then saying "jk here's the answer" makes you look incompetent. Also, this is supposed
224to be the beginner tutorial so idk why you even cover metatables.
225
226Section: Strings
227
228"Whats a string?
229Basically mostly the stuff you assign a variable to like
230"Hello" or "i just gave you aids"
231
232those are strings"
233
234You should actually define it THEN provide the example.
235
236"You can also combine strings by doing dot dot or in lua terms:
237.."
238You're missing a key term called concatenation
239
240"
241tonumber()
242heres an example:
243"
244You don't even preface this with anything. You should say, "If a string only contains numeric characters, you can convert it to a number using tonumber" then provide this example.
245
246Section: Tables
247
248"a table is a data that can store things like numbers, strings etc etc"
249"a data" should be "a data structure" and you need to mention that it stores MULTIPLE VALUES.
250
251"so now if we do print(mytable)
252its not gonna work what we have to do is:"
253It works but doesn't produce the result you want. You should say that there.
254
255"its not gonna work what we have to do is:
256
257"local mytable = {"Apple", "Green Apple"}
258print(mytable[1])
259print(mytable[2])"
260
261You should first show the reader how to get and set values. Then, you can solve
262the issue of showing all the values by introducing the generic for loop (or using a numeric for loop).
263
264"arrays"
265The reader has no idea what this means.
266
267"Table dictionary"
268This is just confusing because you don't explain the key/value pair syntax.
269Also, the reader isn't going to know what a dictionary is.
270
271"array iterating:"
272The syntax in the example is wrong. It's clear you rushed.
273
274Section: the end
275
276the end........
277
278"this took me a awfully long time to make and its 4:15 am now
279i started at 3:34 am"
280This explains why you started to rush. You need to save the thread as
281a draft and work on the tutorial part by part.
282
283"a vouch would be nice"
284No one vouches anymore except for in the marketplace. To quote V3rmillion rules:
285"The act of vouch posting or owning vouch threads are both considered general spam if there is no extensive justification of why a user is vouching."
286Encourage people to use the like/dislike system and provide feedback.
287
288"i hope u learn something or something i dont know"
289If the reader learns something you don't know from a tutorial you wrote, doesn't that mean you copied and pasted?
290Calling yourself a script kiddie doesn't look good.
291
292"this is a tutorial meant for starters like literal starters i mean anyone can learn from this"
293Clearly not because you start slow then just jump to quickly written complex topics.
294
295"other resources:
296https://v3rmillion.net/showthread.php?tid=905698
297https://v3rmillion.net/showthread.php?tid=570380"
298
299The first link is unnecessary. You should encourage the reader to use the Roblox Wiki to learn about
300the different classes of Roblox.
301The second link isn't good because it's just a copy and paste tutorial.
302
303"Advanced:
304https://v3rmillion.net/showthread.php?tid=703280
305https://v3rmillion.net/showthread.php?tid=704420
306https://v3rmillion.net/showthread.php?tid=780429"
307Considering that everyone reading this will be beginners who don't know the basics of Lua, this isn't helpful.
308
309=== Chapter 1: Conclusion ===
310
311Chapter 1 started out ok but then it got worse.
312
313One thing you need to tone down or change is the humor. It's ok to include humor in your tutorial and use it to
314explain concepts, but the way you use it in this chapter distracts from the actual content.
315
316Another thing I suggest doing is following the standards of the PIL book (I'll send you it on Discord). Some of the
317examples included in the tutorial are teaching the reader bad standards and are just plain wrong.
318
319Also, let's talk about the formatting. A lot of the code is center formatted like this:
320 function STDS()
321 warn("boom you just got STDS")
322 end
323
324The problem with that is the reader doesn't see the indentations and ends up writing messy code.
325
326Finally, my biggest criticism is time and pacing. It's evident throughout the tutorial that you
327started to rush and just wanted to get it out there. Giving in to the urge of "I HAVE TO RELEASE THIS NOW"
328will result in what is called quanitity over quality. When you take your time, you will notice that your tutorial
329is much better.
330
331Also, about the pacing, it's not good. In a beginner tutorial you need to cover the BASIC CONCEPTS ONLY.
332Examples:
333- Variables
334- Basic Datatypes (string, number, boolean, and nil)
335- Arithmetic Operators