Discuss Scratch

gosoccerboy5
Scratcher
1000+ posts

Better Custom Blocks

sathvikrias wrote:

GunesKing wrote:

Definitely this will help, the costume blocks are advanced, +1.
what do you mean by “costume blocks”?
1st post of the 88th page no edit!
they probably meant “custom blocks”
mybearworld
Scratcher
1000+ posts

Better Custom Blocks

I made a mockup on scratchblocks.github.io (so that the blocks are 3.0.)
Did I already mention I support? Not sure
kccuber
Scratcher
1000+ posts

Better Custom Blocks

mybearworld wrote:

I made a mockup on scratchblocks.github.io (so that the blocks are 3.0.)
Did I already mention I support? Not sure
use s3blocks.github.io if you want to create ACTUAL looking custom reporters and booleans
like this
kccuber
Scratcher
1000+ posts

Better Custom Blocks

Sice no one has done the script vars in 3.0 style yet, let me.
gosoccerboy5
Scratcher
1000+ posts

Better Custom Blocks

mybearworld wrote:

I made a mockup on scratchblocks.github.io (so that the blocks are 3.0.)
Did I already mention I support? Not sure
You can use @addInput and @delInput to scratchblocks to make an “increase/decrease” button
kccuber
Scratcher
1000+ posts

Better Custom Blocks

Script vars! (sorry for odd white space, s3blocks doesnt have an @addInput thing)
Elrond_Gasals_Brothe
Scratcher
45 posts

Better Custom Blocks

(()@addInput::grey ring)//Reporter
({}@addInput::grey ring)//Command
(<>@addInput::grey ring)//Predicate
launch({say [Hello]
if <true::operators> then
say (url [https://www.scratch.mit.edu]::#ff00ff)}@addInput::ring grey)@addInput::control

script varibles ((foo)::grey)((bar)::grey)@delInput @addInput::#666666

for (i) = (1) to (200){
move (i) steps
turn cw (92)degrees
}::control
list [] @delInput @addInput::list reporter

warp{
}::#666666
brooc210
Scratcher
100+ posts

Better Custom Blocks

kccuber wrote:

snip

How did you do that?
Upplo
Scratcher
40 posts

Better Custom Blocks

kccuber wrote:

Script vars! (sorry for odd white space, s3blocks doesnt have an @addInput thing)

Would these be local variables specifically for the custom block's definition (and unable to be used elsewhere)? Perhaps something like this?

define custom block (parameter)
create local variable [local variable] and set to ()
repeat (parameter)
set local variable [ local variable] to (join (local variable) (parameter))
end
return (local variable)

I feel like using ‘temporary’ variables globally could get very messy, but if they were contained within functions then it might be okay.
kccuber
Scratcher
1000+ posts

Better Custom Blocks

Upplo wrote:

kccuber wrote:

snip

Would these be local variables specifically for the custom block's definition (and unable to be used elsewhere)? Perhaps something like this?

define custom block (parameter)
create local variable [local variable] and set to ()
repeat (parameter)
set local variable [ local variable] to (join (local variable) (parameter))
end
return (local variable)

I feel like using ‘temporary’ variables globally could get very messy, but if they were contained within functions then it might be okay.
Have you ever used Snap!? Temporary variables would be the equivalent of script variables.

So yes, these would only be able to be used in one script/custom block definition.

Last edited by kccuber (April 17, 2021 16:19:13)

kccuber
Scratcher
1000+ posts

Better Custom Blocks

brooc210 wrote:

kccuber wrote:

snip

How did you do that?
https://s3blocks.github.io
Export as an svg, then upload it to Scratch Assets. (i use a bookmarklet to do it)
lapisi
Scratcher
1000+ posts

Better Custom Blocks

kccuber wrote:

Upplo wrote:

kccuber wrote:

snip

Would these be local variables specifically for the custom block's definition (and unable to be used elsewhere)? Perhaps something like this?

define custom block (parameter)
create local variable [local variable] and set to ()
repeat (parameter)
set local variable [ local variable] to (join (local variable) (parameter))
end
return (local variable)

I feel like using ‘temporary’ variables globally could get very messy, but if they were contained within functions then it might be okay.
Have you ever used Snap!? Temporary variables would be the equivalent of script variables.

So yes, these would only be able to be used in one script/custom block definition.
the snap version is more confusing, it took a while for me to figure out how to use them, having them be a C block would be better
kccuber
Scratcher
1000+ posts

Better Custom Blocks

lapisi wrote:

kccuber wrote:

Upplo wrote:

kccuber wrote:

snip

Would these be local variables specifically for the custom block's definition (and unable to be used elsewhere)? Perhaps something like this?

define custom block (parameter)
create local variable [local variable] and set to ()
repeat (parameter)
set local variable [ local variable] to (join (local variable) (parameter))
end
return (local variable)

I feel like using ‘temporary’ variables globally could get very messy, but if they were contained within functions then it might be okay.
Have you ever used Snap!? Temporary variables would be the equivalent of script variables.

So yes, these would only be able to be used in one script/custom block definition.
the snap version is more confusing, it took a while for me to figure out how to use them, having them be a C block would be better
And that reminds me, I forgot to make the c block version! haha
brooc210
Scratcher
100+ posts

Better Custom Blocks

kccuber wrote:

brooc210 wrote:

kccuber wrote:

snip

How did you do that?
https://s3blocks.github.io
Export as an svg, then upload it to Scratch Assets. (i use a bookmarklet to do it)
Where is the link you bookmarked?

Last edited by brooc210 (April 18, 2021 07:32:36)

brooc210
Scratcher
100+ posts

Better Custom Blocks

Elrond_Gasals_Brothe wrote:

(()@addInput::grey ring)//Reporter
({}@addInput::grey ring)//Command
(<>@addInput::grey ring)//Predicate
launch({say [Hello]
if <true::operators> then
say (url [https://www.scratch.mit.edu]::#ff00ff)}@addInput::ring grey)@addInput::control

script varibles ((foo)::grey)((bar)::grey)@delInput @addInput::#666666

for (i) = (1) to (200){
move (i) steps
turn cw (92)degrees
}::control
list [] @delInput @addInput::list reporter

warp{
}::#666666
Thatʼs code in Snap!.
DragonBot1000
Scratcher
89 posts

Better Custom Blocks

Yes. You should be allowed to make custom reporters, booleans, hat blocks and cap blocks as well as inserting dropdowns into your custom blocks.
PATSATDAT
Scratcher
1000+ posts

Better Custom Blocks

i feel like this is a list of suggestions (what do variables have to do with custom blocks?)
king of the page (with edit included!)

Last edited by PATSATDAT (April 18, 2021 10:01:50)

lapisi
Scratcher
1000+ posts

Better Custom Blocks

PATSATDAT wrote:

i feel like this is a list of suggestions (what do variables have to do with custom blocks?)
king of the page (with edit included!)
because having variables that are only used by custom blocks take up space in the variables category (especially if there are lots of them) is unnecessary, the entire suggestion is for improving custom blocks, so it's not a list of suggestions
kccuber
Scratcher
1000+ posts

Better Custom Blocks

brooc210 wrote:

kccuber wrote:

brooc210 wrote:

kccuber wrote:

snip

How did you do that?
https://s3blocks.github.io
Export as an svg, then upload it to Scratch Assets. (i use a bookmarklet to do it)
Where is the link you bookmarked?
javascript: if(!document.getElementById("_meta_md5")){var scr=document.createElement("script");scr.innerHTML=`!function(){"use strict";function t(t){if(t)d[0]=d[16]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=0,this.blocks=d,this.buffer8=l;else if(a){var r=new ArrayBuffer(68);this.buffer8=new Uint8Array(r),this.blocks=new Uint32Array(r)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}var r="input is invalid type",e="object"==typeof window,i=e?window:{};i.JS_MD5_NO_WINDOW&&(e=!1);var s=!e&&"object"==typeof self,h=!i.JS_MD5_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;h?i=global:s&&(i=self);var f=!i.JS_MD5_NO_COMMON_JS&&"object"==typeof module&&module.exports,o="function"==typeof define&&define.amd,a=!i.JS_MD5_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,n="0123456789abcdef".split(""),u=[128,32768,8388608,-2147483648],y=[0,8,16,24],c=["hex","array","digest","buffer","arrayBuffer","base64"],p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),d=[],l;if(a){var A=new ArrayBuffer(68);l=new Uint8Array(A),d=new Uint32Array(A)}!i.JS_MD5_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!a||!i.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var b=function(r){return function(e){return new t(!0).update(e)[r]()}},v=function(){var r=b("hex");h&&(r=w(r)),r.create=function(){return new t},r.update=function(t){return r.create().update(t)};for(var e=0;e<c.length;++e){var i=c[e];r[i]=b(i)}return r},w=function(t){var e=eval("require('crypto')"),i=eval("require('buffer').Buffer"),s=function(s){if("string"==typeof s)return e.createHash("md5").update(s,"utf8").digest("hex");if(null===s||void 0===s)throw r;return s.constructor===ArrayBuffer&&(s=new Uint8Array(s)),Array.isArray(s)||ArrayBuffer.isView(s)||s.constructor===i?e.createHash("md5").update(new i(s)).digest("hex"):t(s)};return s};t.prototype.update=function(t){if(!this.finalized){var e,i=typeof t;if("string"!==i){if("object"!==i)throw r;if(null===t)throw r;if(a&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||a&&ArrayBuffer.isView(t)))throw r;e=!0}for(var s,h,f=0,o=t.length,n=this.blocks,u=this.buffer8;f<o;){if(this.hashed&&(this.hashed=!1,n[0]=n[16],n[16]=n[1]=n[2]=n[3]=n[4]=n[5]=n[6]=n[7]=n[8]=n[9]=n[10]=n[11]=n[12]=n[13]=n[14]=n[15]=0),e)if(a)for(h=this.start;f<o&&h<64;++f)u[h++]=t[f];else for(h=this.start;f<o&&h<64;++f)n[h>>2]|=t[f]<<y[3&h++];else if(a)for(h=this.start;f<o&&h<64;++f)(s=t.charCodeAt(f))<128?u[h++]=s:s<2048?(u[h++]=192|s>>6,u[h++]=128|63&s):s<55296||s>=57344?(u[h++]=224|s>>12,u[h++]=128|s>>6&63,u[h++]=128|63&s):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++f)),u[h++]=240|s>>18,u[h++]=128|s>>12&63,u[h++]=128|s>>6&63,u[h++]=128|63&s);else for(h=this.start;f<o&&h<64;++f)(s=t.charCodeAt(f))<128?n[h>>2]|=s<<y[3&h++]:s<2048?(n[h>>2]|=(192|s>>6)<<y[3&h++],n[h>>2]|=(128|63&s)<<y[3&h++]):s<55296||s>=57344?(n[h>>2]|=(224|s>>12)<<y[3&h++],n[h>>2]|=(128|s>>6&63)<<y[3&h++],n[h>>2]|=(128|63&s)<<y[3&h++]):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++f)),n[h>>2]|=(240|s>>18)<<y[3&h++],n[h>>2]|=(128|s>>12&63)<<y[3&h++],n[h>>2]|=(128|s>>6&63)<<y[3&h++],n[h>>2]|=(128|63&s)<<y[3&h++]);this.lastByteIndex=h,this.bytes+=h-this.start,h>=64?(this.start=h-64,this.hash(),this.hashed=!0):this.start=h}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},t.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,r=this.lastByteIndex;t[r>>2]|=u[3&r],r>=56&&(this.hashed||this.hash(),t[0]=t[16],t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.bytes<<3,t[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},t.prototype.hash=function(){var t,r,e,i,s,h,f=this.blocks;this.first?r=((r=((t=((t=f[0]-680876937)<<7|t>>>25)-271733879<<0)^(e=((e=(-271733879^(i=((i=(-1732584194^2004318071&t)+f[1]-117830708)<<12|i>>>20)+t<<0)&(-271733879^t))+f[2]-1126478375)<<17|e>>>15)+i<<0)&(i^t))+f[3]-1316259209)<<22|r>>>10)+e<<0:(t=this.h0,r=this.h1,e=this.h2,r=((r+=((t=((t+=((i=this.h3)^r&(e^i))+f[0]-680876936)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[1]-389564586)<<12|i>>>20)+t<<0)&(t^r))+f[2]+606105819)<<17|e>>>15)+i<<0)&(i^t))+f[3]-1044525330)<<22|r>>>10)+e<<0),r=((r+=((t=((t+=(i^r&(e^i))+f[4]-176418897)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[5]+1200080426)<<12|i>>>20)+t<<0)&(t^r))+f[6]-1473231341)<<17|e>>>15)+i<<0)&(i^t))+f[7]-45705983)<<22|r>>>10)+e<<0,r=((r+=((t=((t+=(i^r&(e^i))+f[8]+1770035416)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[9]-1958414417)<<12|i>>>20)+t<<0)&(t^r))+f[10]-42063)<<17|e>>>15)+i<<0)&(i^t))+f[11]-1990404162)<<22|r>>>10)+e<<0,r=((r+=((t=((t+=(i^r&(e^i))+f[12]+1804603682)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[13]-40341101)<<12|i>>>20)+t<<0)&(t^r))+f[14]-1502002290)<<17|e>>>15)+i<<0)&(i^t))+f[15]+1236535329)<<22|r>>>10)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[1]-165796510)<<5|t>>>27)+r<<0)^r))+f[6]-1069501632)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[11]+643717713)<<14|e>>>18)+i<<0)^i))+f[0]-373897302)<<20|r>>>12)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[5]-701558691)<<5|t>>>27)+r<<0)^r))+f[10]+38016083)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[15]-660478335)<<14|e>>>18)+i<<0)^i))+f[4]-405537848)<<20|r>>>12)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[9]+568446438)<<5|t>>>27)+r<<0)^r))+f[14]-1019803690)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[3]-187363961)<<14|e>>>18)+i<<0)^i))+f[8]+1163531501)<<20|r>>>12)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[13]-1444681467)<<5|t>>>27)+r<<0)^r))+f[2]-51403784)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[7]+1735328473)<<14|e>>>18)+i<<0)^i))+f[12]-1926607734)<<20|r>>>12)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[5]-378558)<<4|t>>>28)+r<<0))+f[8]-2022574463)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[11]+1839030562)<<16|e>>>16)+i<<0))+f[14]-35309556)<<23|r>>>9)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[1]-1530992060)<<4|t>>>28)+r<<0))+f[4]+1272893353)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[7]-155497632)<<16|e>>>16)+i<<0))+f[10]-1094730640)<<23|r>>>9)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[13]+681279174)<<4|t>>>28)+r<<0))+f[0]-358537222)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[3]-722521979)<<16|e>>>16)+i<<0))+f[6]+76029189)<<23|r>>>9)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[9]-640364487)<<4|t>>>28)+r<<0))+f[12]-421815835)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[15]+530742520)<<16|e>>>16)+i<<0))+f[2]-995338651)<<23|r>>>9)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[0]-198630844)<<6|t>>>26)+r<<0)|~e))+f[7]+1126891415)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[14]-1416354905)<<15|e>>>17)+i<<0)|~t))+f[5]-57434055)<<21|r>>>11)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[12]+1700485571)<<6|t>>>26)+r<<0)|~e))+f[3]-1894986606)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[10]-1051523)<<15|e>>>17)+i<<0)|~t))+f[1]-2054922799)<<21|r>>>11)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[8]+1873313359)<<6|t>>>26)+r<<0)|~e))+f[15]-30611744)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[6]-1560198380)<<15|e>>>17)+i<<0)|~t))+f[13]+1309151649)<<21|r>>>11)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[4]-145523070)<<6|t>>>26)+r<<0)|~e))+f[11]-1120210379)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[2]+718787259)<<15|e>>>17)+i<<0)|~t))+f[9]-343485551)<<21|r>>>11)+e<<0,this.first?(this.h0=t+1732584193<<0,this.h1=r-271733879<<0,this.h2=e-1732584194<<0,this.h3=i+271733878<<0,this.first=!1):(this.h0=this.h0+t<<0,this.h1=this.h1+r<<0,this.h2=this.h2+e<<0,this.h3=this.h3+i<<0)},t.prototype.hex=function(){this.finalize();var t=this.h0,r=this.h1,e=this.h2,i=this.h3;return n[t>>4&15]+n[15&t]+n[t>>12&15]+n[t>>8&15]+n[t>>20&15]+n[t>>16&15]+n[t>>28&15]+n[t>>24&15]+n[r>>4&15]+n[15&r]+n[r>>12&15]+n[r>>8&15]+n[r>>20&15]+n[r>>16&15]+n[r>>28&15]+n[r>>24&15]+n[e>>4&15]+n[15&e]+n[e>>12&15]+n[e>>8&15]+n[e>>20&15]+n[e>>16&15]+n[e>>28&15]+n[e>>24&15]+n[i>>4&15]+n[15&i]+n[i>>12&15]+n[i>>8&15]+n[i>>20&15]+n[i>>16&15]+n[i>>28&15]+n[i>>24&15]},t.prototype.toString=t.prototype.hex,t.prototype.digest=function(){this.finalize();var t=this.h0,r=this.h1,e=this.h2,i=this.h3;return[255&t,t>>8&255,t>>16&255,t>>24&255,255&r,r>>8&255,r>>16&255,r>>24&255,255&e,e>>8&255,e>>16&255,e>>24&255,255&i,i>>8&255,i>>16&255,i>>24&255]},t.prototype.array=t.prototype.digest,t.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(16),r=new Uint32Array(t);return r[0]=this.h0,r[1]=this.h1,r[2]=this.h2,r[3]=this.h3,t},t.prototype.buffer=t.prototype.arrayBuffer,t.prototype.base64=function(){for(var t,r,e,i="",s=this.array(),h=0;h<15;)t=s[h++],r=s[h++],e=s[h++],i+=p[t>>>2]+p[63&(t<<4|r>>>4)]+p[63&(r<<2|e>>>6)]+p[63&e];return t=s[h],i+=p[t>>>2]+p[t<<4&63]+"=="};var _=v();f?module.exports=_:(i.md5=_,o&&define(function(){return _}))}();`;scr.id="_meta_md5";document.body.appendChild(scr);};async function upload(image,extension){var hash=md5(image);var type=extension;try{var res=await fetch("https://assets.scratch.mit.edu/"+hash+"."+type,{body:image,method:"POST",mode:"cors",credentials:"include"});var data=await res.json();if(data.status==="ok"){if(document.getElementById("id_body")){document.getElementById("id_body").value=document.getElementById("id_body").value+"[img]https://assets.scratch.mit.edu/get_image/\x2e\x25\x32\x45/"+data["content-name"]+"[/img]";}else{prompt("Your image has been uploaded!","https://assets.scratch.mit.edu/get_image/\x2e\x25\x32\x45/"+data["content-name"]);}}else{alert("The scratch servers didn't accept your image for some reason :(");}}catch(err){alert("Error on uploading image! Errors:"+err);}};var input=document.createElement("input");input.type="file";input.accept="image/*";input.style.display="none";input.click();input.addEventListener("change",(e)=>{var file=input.files[0];var extension=input.files[0].name.split(".").pop().toLowerCase();var reader=new FileReader();reader.readAsArrayBuffer(file);reader.onloadend=function(){upload(reader.result,extension);input.remove();};reader.onerror=(err)=>{alert("We can't upload your file at the moment.");}});
copy all of it and paste it into a new bookmark
oh and please make sure to credit @9gr

Last edited by kccuber (April 18, 2021 16:26:46)

sathvikrias
Scratcher
500+ posts

Better Custom Blocks

kccuber wrote:

Sice no one has done the script vars in 3.0 style yet, let me.
I have

Powered by DjangoBB