Discuss Scratch
- Discussion Forums
- » Suggestions
- » Ultimate List of Workarounds And More
- MathlyCat
-
1000+ posts
Ultimate List of Workarounds And More
I don't think you see the difference between the block you put and the one above.The thing is you shouldn't hand everything to the New Scratchers; Scratch is about learning and some things don't need to be handed over since they can be created using some thinking.when costume switches to [costume1 v] ::events hat
when gf clicked
forever
wait until <([costume name v] of [sprite v]) = [costume name here]>
...
end
I don't really get why this wasn't added, but “when backdrop switches to” was.
Just look at my signature.
Take a look at the sixth suggestion section: https://scratch.mit.edu/discuss/topic/215499/
Just because a non-existent block has an easy workaround does not mean it can't be added because you say, “You can't just expect New Scratchers to have the blocks they want. They sometimes need to learn how to do stuff and do challenges”.
Then why are they called “NEW Scratchers”? They know nothing. They are new. It will take them a long time before they know how to do stuff.
And yet you expect them to know something like this? So quickly?define find letters (a) to (b) of (string)
set [report v] to ()
set [count v] to (a)
repeat until <(count) = ((b) + 1)
set [report v] to (join(report)(item (count) of (string))
change [count v] by (1)
That procedure is simple, but New Scratchers don't know it yet. I'm not forcing you to resconsider what you said.
Also I'm a lazy bum, and usually I just add those blocks and point out those things. No need to be super duper triggered.
Last edited by MathlyCat (July 12, 2017 04:34:15)
- Charles12310
-
1000+ posts
Ultimate List of Workarounds And More
(DELETED DUE TO MISUNDERSTOOD CONTENT)
Last edited by Charles12310 (July 13, 2017 06:38:51)
- Jonathan50
-
1000+ posts
Ultimate List of Workarounds And More
This topic is about workarounds for suggested blocks, not existing blocks… (Otherwise it wouldn't be in Suggestions) Anyways, I found out a good workaround for the “pick random () to ()” reporter:...
The function adds the numbers wanted to be picked randomly as a separate item in a list. Since there is a “random” option in the reporter “item () of ()” block, after putting all the numbers in the list, a variable is set to be a random item from the list.
- Charles12310
-
1000+ posts
Ultimate List of Workarounds And More
<sound [ v] playing? :: sound >
...
set [sound playing? v] to [true]
play sound [ v] until done
set [sound playing? v] to [false]
...
when green flag clicked
if <(sound playing?) = [true]> then
...
end
...
Last edited by Charles12310 (July 13, 2017 06:44:07)
- FancyFoxy
-
500+ posts
Ultimate List of Workarounds And More
I love how so many workarounds to what people have been suggesting are just creating a variable.<sound [ v] playing? :: sound >
...
set [sound playing? v] to [true]
play sound [ v] until done
set [sound playing? v] to [false]
...
when green flag clicked
if <(sound playing?) = [true]> then
...
end
...
- Charles12310
-
1000+ posts
Ultimate List of Workarounds And More
In order for a workaround for this reporter:
You first need to make these variables:
Then the effects to these variables, so that you are in control of the variables:
You might be thinking, “why should I control effects with variable blocks instead of the effect blocks?” Remember that the effect blocks have no reporter, but variable blocks have reporters, and making the effect blocks under control of variable blocks also allows you to detect what effects the sprites contain.
Examples (note that the reason why I am using a data block to change effects is because the effects are under the control of variables, as I said earlier, since the effect blocks have no reporters…I definitely need to explain that one more time, ugh…):
([ v] effect :: looks )
You first need to make these variables:
(color effect)
(fisheye effect)
(whirl effect)
(pixelate effect)
(brightness effect)
(ghost effect)
(mosaic effect)
Then the effects to these variables, so that you are in control of the variables:
when green flag clicked
forever
set [color v] effect to (color effect)
set [fisheye v] effect to (fisheye effect)
set [whirl v] effect to (whirl effect)
set [pixelate v] effect to (pixelate effect)
set [brightness v] effect to (brightness effect)
set [ghost v] effect to (ghost effect)
set [mosaic v] effect to (mosaic effect)
end
You might be thinking, “why should I control effects with variable blocks instead of the effect blocks?” Remember that the effect blocks have no reporter, but variable blocks have reporters, and making the effect blocks under control of variable blocks also allows you to detect what effects the sprites contain.
Examples (note that the reason why I am using a data block to change effects is because the effects are under the control of variables, as I said earlier, since the effect blocks have no reporters…I definitely need to explain that one more time, ugh…):
...
if <(ghost effect) = (100)> then
say [I am invisible!]
else
say [You can still see me, right?]
end
...
...
if <(pixelate effect) = (0)> then
repeat until <(pixelate effect) = (100)>
change [pixelate effect v] by (10)
end
else
...
end
...
Last edited by Charles12310 (July 13, 2017 17:44:09)
- Charles12310
-
1000+ posts
Ultimate List of Workarounds And More
change item ( v) of [list v] by () :: list
define change item (number) of (list) by (amount)
replace item (number) of (list) with ((item (number) of (list)) + (number))
Last edited by Charles12310 (July 23, 2017 18:40:47)
- Charles12310
-
1000+ posts
Ultimate List of Workarounds And More
define glide (n) secs to (object)
if <(object) = [mouse pointer]> then
glide (n) secs to x:(mouse x)y: (mouse y)
else
glide (n) secs to x:([x position v] of (object))y:([y position v] of (object))
end
define glide (n) secs by x:(x)y:(y)
glide (n) secs to x:((x position) + (x))y:((y position) + (y))
- Charles12310
-
1000+ posts
Ultimate List of Workarounds And More
when (10) + (10) = (10) :: operators :: hat
when [timer v] > (-1)
forever
if <((10) + (10)) = (10)> then
...
end
end
- walkcycle
-
500+ posts
Ultimate List of Workarounds And More
This. Simple workarounds are great. I love how so many workarounds to what people have been suggesting are just creating a variable.

- DaEpikDude
-
1000+ posts
Ultimate List of Workarounds And More
I'd like to point out that there's a better workaround for setting pen colour to hex input:
set pen color to (join [0x][hex input])//this is the color picker, not the number inputThis is more compact and easier to interpret at a glance (mainly due to the 0x).
- Sharp-Shark
-
22 posts
Ultimate List of Workarounds And More
-/Deleted/-
Last edited by Sharp-Shark (Sept. 22, 2017 17:00:08)
- Sharp-Shark
-
22 posts
Ultimate List of Workarounds And More
-/Deleted/-
Last edited by Sharp-Shark (Sept. 22, 2017 16:17:29)
- Sharp-Shark
-
22 posts
Ultimate List of Workarounds And More
A ‘repeat ()’ updated version!
look at this example for use of the new version!
0
1
2
…Until 100…
Let's make a “2D” text world in a list with the new one and the old one!
ooo
ooo
ooo
Also as soon as a count loop ends,it's
Now the workaround kind of exists and don't exists because of some reasons…Maybe i should bring this to ‘my’ forum…If you wanna,you do can delet it!
with counter ([a] :: control) count to (0),(1) {That is the new version.The new proposed version is based on the Python : ‘for _ in _ :’!
...} :: control
look at this example for use of the new version!
when green flag clickedThe output would be :
with counter ([a] :: control) count to (0),(100) {
say ([a] :: control)
wait (1) secs
say [] } :: control
0
1
2
…Until 100…
Let's make a “2D” text world in a list with the new one and the old one!
when green flag clickedThe list ‘c’ would be like this :
with counter ([a] :: control) count to (1),(3) {
insert [] at (length of [c v] :: list) of [c v]
repeat (3)
replace item ([a] :: control v) of [c v] with (join (item ([a] :: control v) of [c v] :: list) [o])
end} :: control
ooo
ooo
ooo
Also as soon as a count loop ends,it's
([X] :: control v)will be acessible but if another loop uses it,it will be reseted for the new loop use!Also,i don't wanna remove
repeat ()i just wanna add a new,very useful block!
Now the workaround kind of exists and don't exists because of some reasons…Maybe i should bring this to ‘my’ forum…If you wanna,you do can delet it!
Last edited by Sharp-Shark (Sept. 22, 2017 16:56:54)
- DaEpikDude
-
1000+ posts
Ultimate List of Workarounds And More
This is for showing workarounds for suggestions, not for suggesting things. You should probably make a new topic. -snip-
- DaEpikDude
-
1000+ posts
Ultimate List of Workarounds And More
I think the problem with this workaround is that it requires hacked blocks, which is a bit of a problem if you don't know how to do it/don't like doing it.change item ( v) of [list v] by () :: list
define change item (number) of (list) by (amount)
replace item (number) of (list) with ((item (number) of (list)) + (number))
- Charles12310
-
1000+ posts
Ultimate List of Workarounds And More
Do it here: http://towerofnix.github.io/scrap-mod/scrap.htmlI think the problem with this workaround is that it requires hacked blocks, which is a bit of a problem if you don't know how to do it/don't like doing it.change item ( v) of [list v] by () :: list
define change item (number) of (list) by (amount)
replace item (number) of (list) with ((item (number) of (list)) + (number))
Then save it, create a project, load it, drag it to the backpack for future uses. Done.

- Charles12310
-
1000+ posts
Ultimate List of Workarounds And More
broadcast [☁ cloud broadcast v]
broadcast [☁ cloud broadcast v] and wait
// Workaround:
when green flag clicked
forever
if <(☁ broadcast) = [1]> then
... // contents of broadcast
set [☁ broadcast v] to [0]
end
end
...
set [☁ broadcast v] to [1] // broadcast without wait
...
...
set [☁ broadcast v] to [1] // broadcast and wait
wait until <(☁ broadcast) = [0]>
...
Last edited by Charles12310 (Sept. 23, 2017 16:00:15)
- DaEpikDude
-
1000+ posts
Ultimate List of Workarounds And More
within topic bump i guess??? I'd like to point out that there's a better workaround for setting pen colour to hex input:set pen color to (join [0x][hex input])//this is the color picker, not the number inputThis is more compact and easier to interpret at a glance (mainly due to the 0x).
- MathlyCat
-
1000+ posts
Ultimate List of Workarounds And More
The workaround listed is better because it's easier to understand; you don't need hex knowledge to be able to use it.within topic bump i guess??? I'd like to point out that there's a better workaround for setting pen colour to hex input:set pen color to (join [0x][hex input])//this is the color picker, not the number inputThis is more compact and easier to interpret at a glance (mainly due to the 0x).