turbowarp / extensions Goto Github PK
View Code? Open in Web Editor NEWUser-contributed unsandboxed extension gallery for TurboWarp
Home Page: https://extensions.turbowarp.org/
License: MIT License
User-contributed unsandboxed extension gallery for TurboWarp
Home Page: https://extensions.turbowarp.org/
License: MIT License
If you look at the website right now, you will notice that it is rather ugly. If anyone wants to make an attempt at making it look better, you're more than welcome to try
I am implementing save codes in a project. My save codes work by adding all the data to a list and encoding the list into a string with a delimiter between items. However, the save codes can get massive, and in turbowarp, they take several minutes to parse. I have tried optimizing my script, enabling run without screen refresh, etc. - but it's still too slow.
My solution was to rewrite the parsing script in javascript, and access it via a custom extension in my project. This works great, and the save codes get parsed almost instantly. The javascript code is simple: var result = savecode.split(",");
But my extension needs to manipulate a list. In scratch, you can use list functions like add [thing] to [mylist]
.
According to Leopard, you can access all variables and lists using this.stage.vars
in javascript. However, this
represents a different object in my extension class. When I try using this.stage.vars.Result = result;
, I get an error:
Custom extension block error TypeError: Cannot read properties of undefined (reading 'vars')
So, how can I access lists and variables in my extension? My extension needs to be sandboxed, by the way.
Recently I created reporter block with menu:
Since there were no input fields in it, monitor had to work. In fact, its true, but there is error with the display. Instead of the value of menu's argument, displayed its name in []
Code looks like this:
As I understand it, name of monitor is directly text of block, without taking into arguments
But if this is case, then it becomes unclear how it works:
Even if Scratch 3 blocks didn't have this bug, monitor text would look like: "current year" or "current month"
It seems that monitor should have extra settings of displayed text for each argument value
I haven't found any information anywhere, so I would be very grateful if someone would tell me if this is bug, or if there additional parameters for the monitor. I am grateful in advance.
let's avoid situations like this: #58
The current issue I can see is that I want to test my extension with others. However, they are not willing to figure out how to host a server just to test it out. Perhaps some sort of warning to allow untrusted unsandboxed extensions would be good? Should probably be a very heavy "you shouldn't do this", but would be nice to have regardless
In order for unsandboxed extensions to thrive, we're going to need more people involved in reviewing the extensions. Having everything be bottlenecked on me will not scale.
how do i make my own-Chad_math
Whenever I try to access an control stick on my controller it works, then stops, then works again, before stopping again. If i feed the input of the joystick into a controller it shows a solid input that stays the same number it should be.
When saving a list using the file extension like this, the whole list will be on 1 string.
It should save the list on different rows, as many people will try to do that, and be confused.
Also probably should add a load to list block to format it correctly.
I'm thinking of the following features that could either go in a new extension called something like "Sound Control" or become part of the Sound extension that was just added.
stop sound (sound v)
(Would stop the sound you selected)start sound (sound v) from (1.5) secs
(Would play the sound you selected starting at the time you specified)stop all sounds in this sprite
(Would stop all of the sounds that the sprite was playing. Could potentially be a dropdown so you could select other sprites too)You could use these features to do various things, for example:
Have all three as separate blocks beneath the regular arithmetic ones, not as a single configurable one like the abs at the bottom of the operations section.
I just creating an extension and I was about to submit it. However, I noticed that CONTRIBUTING.md only talks about unsandboxed extensions, and mine is sandboxed.
Should I rewrite my extension to be unsandboxed, then submit it?
Any plans to migrate extensions from machinelearningforkids?
There have really cool extensions there.
https://machinelearningforkids.co.uk/#!/pretrained
Source codes:
https://github.com/IBM/taxinomitis
Thank you!
Store used extensions in project.
For example in the same comment with TW settings.
With The Unsandboxed Extention Guide. I am worried about the api NOT working with other scratch mods. expressly with schools blocking Turbowarp. while you can use stuff like Adacraft, and at this moment. It has no such API.
another thing is, why do you want the class to be inside the function instend of somthing like this?
class YourExt {
getinfo() { return {...} }
}
(function(Scratch) {
'use strict';
var ExtClass = YourExt;
Scratch.extensions.register(new ExtClass());
})(Scratch);
A block that can send a ping to a custom cloud server and get a response via a boolean block if the server status is online will return true else if the server is offline or doesn't get any response back during a certain amount of time will return false.
(Tried messing with the fetch extension, but doesn't work like so: http://localhost:9080/Status.txt (Dislays the text "Online"))
Would be amazing to see an extension like this and help make our projects work online properly :)
I have lost a projects source to the 'Could not load project: Error: Unknown extension' error because I am unable to open it.
Is there a way I can get the original project back without it loading the non-existing extension?
The block, "Enable this [Polygon]" doesn't seem to really work. Instead, it puts the start flag into a loop, essentially meaning that the project freezes. However, when changing it to anything but [polygon] then the project will work again, whether or not the last box is [precision] or [normal]
other than that, the extension seems to be working quite well! I hope this helps with development
I wanted to make default argument value look like standard in Scratch 3:
At first I tried to do it like this:
But instead of empty value there was undefined
Next I used null
In this case blocks altogether was disappeared
'\0' and '\u0000' don't work either
With their use the 2nd argument of the block was broken, and subsequent blocks disappear
I really don't know what to do and would be glad if someone would help me. I am grateful in advance.
I'm questioning this, because there's a good chance the RCE exploit killed this project, which is fair but would be very sad. Perhaps a warning before any extensions are loaded?
In original extension all block dropdowns are round inputs, in TurboWarp version they are square inputs.
Because of this mismatch, when trying to open projects that were made in original, in TurboWarp, all dropdowns reset to the first option from the list. When trying to open projects that were made in TurboWarp, in original, all dropdowns become empty round inputs.
i am trying to make my own extension, but i don't know how to put it somewhere so i can actually use the extension, i tried just loading the file url on turbowarp, but that didn't work, so where can i go to get a place to put the code so i can actually use it on turbowarp.
Because it can take several seconds to read files larger than that, maybe warn about the size before reading? In case the user selected the wrong file.
Currently unsandboxed custom extensions are limited to this repository. And considering #61 it is unlikely that another way of placing them will appear in the near future. This is where the problem arises, which I myself have already encountered 3 times. If any extension already exists, and one wants to add a similar one or make an alternative version, it will clog the directory and will not be accepted. This greatly limits the extension-creators! TurboWarp is a platform for everyone, and it would be right to keep this policy in relation to custom extensions!
Personally, I came up with such a solution method:
The ability to create a personal folder in /extensions/ that will not interfere with the main directory.
Or create a separate folder in the main.
This is just my suggestion for a solution, but the problem somehow needs to be fixed.
Steps to reproduce:
Could you add an option to immediately go to select a file location when uploading a file instead of the pop up?
Thanks
I'm interested in seeing what kinds of projects I could make for myself if I could control them with MIDI devices. It could allow the making of projects that teach people how to play an instrument or that can be used to make songs by recording.
I was experimenting with making one of my projects (specifically, this one) play with a game controller when I ran into a problem with one of the blocks in the Gamepad extension...
Expected behavior: The result of direction of axes (...) on pad (...)
block should range from 0 to 360.
Actual behavior: The result of that block is either 90 or 270 (only accounts for horizontal stick position) until I delete certain sprites.
direction of axes (...) on pad (...)
block. Check the result.Happens whether the gamepad
addon is on or off.
I checked some other projects, some of which also show the same problem: griffpatch celeste, SPACEBEAT, and Appel.
magnitude of axes (...) on pad (...)
is also affected, but value of axes (...) on pad (...)
and the gamepad
addon both seem to be completely fine.
Operating System: Windows 10 / Browser: Edge 108.0.1462.46 (Official build) (64-bit)
Controller: Xbox Wireless Controller (connected via USB)
Scratch Project: https://scratch.mit.edu/projects/502715906/
If I type extension.js into the load extension dialog it would be nice if it automatically checked if the extension exists at https://extensions.turbowarp.org and load it without having to type the full URL.
It's not a secret that I am not a graphics designer. So, instead, we hope to crowdsource images for the extensions. This issue is the place where we will do that.
You can post proposed images here or try to figure out how to submit a pull request if you're in the mood
This assets dir would let extent ion devs not deal with CORS, for stuff like sound and imgs
perhaps through a special cloud behavior
You could probably document the Scratch VM and other things like that for people making unsandboxed extensions, or for contributing to TW source code (as you have an api directly for unsandboxed extensions)
and the other things i have found are extremely outdated or dont contain any actual docs
Either MIT or Apache 2.0. Awaiting response from #16 (comment) first.
Sorry for the long title.
This is an idea for what the future of extensions could be like.
Scratch.blocks
could be an object containing functions that can be called to execute blocks. Vanilla Scratch blocks can be executed here (except motion, sound, and music blocks, as that could be annoying and unwanted to the user.)
Some blocks with large power over sprites or simply blocks that could do unwanted actions to the user could require permission from the user. Whether that be a simple confirm
prompt or a custom popup, that part does not matter.
A class reference should be passed to this function, to load an extension into Turbowarp.
getInfo()
configuration propertiesThe allowExternal
is a boolean value that can control whether other extensions can use them via Scratch.blocks
. If it is not specified, or is undefined, than it will default to true. If it is changed after the class is first called, then the changes are to be ignored.
This property allows an extension to specify if it is visible to the user. This is useful for extensions meant to be used as dependencies for other blocks. Turbowarp is to check if it has changed every frame, and if it has, then the block's visibility is to be updated. If it is changed, it will not affect the blocks the user has already placed, but become invisible from the toolbar. If it is not specified, or is undefined, than it will default to true.
This is an array full of URLs to extensions that this one depends on to function. For built-in extensions, it is simply the extension's name, with the first letter capitalized. If it is not specified, is undefined, or it is not an array-like object, it defaults to an empty array. If this extension has any dependencies, the user must be notified of the dependencies that will be installed with the extension they originally intended to install. Not only the name of this extension must be specified, but the URL must also be specified to the user so that a misleading name does not trick the user into installing a potentially unwanted extension. If it is a built-in extension, one that you might include in a project using the built-in "Choose an extension" menu, then the URL is not provided, and simply the name, with a note telling the user this is the legitimate scratch extension and not a misleadingly named one.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.