Teascript analysis

Description: Internal scripting system of SMBX-38A Engine based on the simple VB-like language
Moderators: Lx Xzit, Yoshi021, 5438A38A, Semi-moderatos, Moderators

NESTED ERNEST M
Topic author, Count
Count
Avatar
NESTED ERNEST M
Topic author, Count
Count
Reputation: 74
Posts: 268
Joined: 23 Sep 2017
Location: Perú, Lima
Website

Post #1by NESTED ERNEST » 10 Nov 2020, 4:35

I don't know if it's a good title but this is about:
* triggers/executions
* What Teascript has similar with Visual Basic or some language.

TEASCRIPT
It is the smbx38a scripting system with syntax similar to that of VB6.

Declaration of variables:
Spoiler
Like the one in VB6, you can declare them by typing:
Dim name_var As variable_type
It has the types: byte, string, single, integer, double, long, but not boolean or the const keyword. This way of having variables is available since 1.4.5.

In VB6 there is an alternative way to declare variables that teascript doesn't:
Spoiler
Dim var1$ ‘String
Dim var2% ‘Integer
Dim var3& ‘Long
Dim var4! ‘Single
Dim var5# ‘Double

Table of variables:
Spoiler
All scripts at the level can access these variables with the function val for numbers and str for strings: they are called local variables.

If you press the Add button + shift key you will add an array of one dimension, it is as if you wrote:
Dim name_array() as double (you can't declare arrays)
It has no number of elements so you have to use the redim function which has 3 parameters:
First parameter is if you want to preserve the elements.
Second parameter is the name of the array.
Third parameter is the number of elements.

To read and write you use the function array:
Array(name_array (item))

There are no matrices.

String variables cannot be seen in the variable table.

Structured programming:
Everything is like VB6, though:

Selective structures: [IF, ELSE, ELSEIF, SELECT CASE]
Spoiler
* You cannot write an addition after the then:
If condition then var+=1
Works with: If condition then var=var+1

* In 1.4.5 it is not necessary to write 'then', if everything is in one line if necessary.

* Logical operators: AND, OR, XOR EQV and IMP
* Bitwise scrolling operations: In 1.4.5 path 28 << and >> were added
* hexadecimal literal: &H1B38AF
* octal literal: &o1510
* binary literal: &b101011 (Something added in VB NET 2015/2017)

Repetitive structures: [DO, LOOP, WHILE, UNTIL, FOR NEXT]
Spoiler
* Up to 1.4.5 it reaches 100%, in previous versions when using an EXIT DO and if right after there is an ELSE there was an error, you had to put the EXIT DO in the last nested condition for it to work.

* Since 1.4.4 there is a function to use it with DO LOOP called Itrcreate and Itrnext to iterate the IDs of the objects quickly, after finishing the iterator you must destroy the itrcreate with berase.

* GOTO and GOSUB should not be used inside a WITH block

Modular programming:
We have the following functions to support this:

* SCRIPT
Spoiler
Script name_funcion (parameter1 as type1, parameter2 as type2,…, return type)

It is the normal function except that the return value is a parameter, if it does not have a return value it is a Sub like VB6, to return and finish we use return (if it is in the parameters), it is not like VB6 that you have to match the name from your function to the variable you want to return.

In versions prior to 1.4.5 to access any parameter of the function you had to use Param (for numbers) and Strparam (for strings).

The parameters of the SCRIPT function are by value: ByVal in VB6 (without writing this keyword), there is no ByRef keyword.

* TCREATE
Spoiler
It launches a created event, it can have a script, there are things that can only be done through it like autoscroll.

Tcreate scripts do not ignore the sleep function.

* EXESCRIPT AND TCREATEEX
Spoiler
They are similar, they execute a local/global script (from the list of scripts, it is not a script function):
Exescript:
When this function is called, the current flow stops, jumps to it until it ends and returns, it has a parameter that is that of a script, despite having only one parameter, it takes the values ​​of param1, param2, param3 from where it is executed, like when you are inside an npc script.
Be careful if you execute exescript inside a script that ignores the sleep function, this will do it too, as inside a NPCSCRIPT that ignores them.

Tcreateex:
When this function is called, the flow doesn't jump immediately, I'm not sure but I guess it will be executed after the last running npc script, it's like using tcreate but it launches only your script but without having to create the event, it has 5 parameters: script name, time it is launched, some parameter 1, 2 and 3.

Again:
The Tcreateex and Tcreate scripts do not ignore the sleep function, and they do not jump immediately.

* EXPORT
Spoiler
It's a keyword that you can prepend to a script function you created:

export script name_script(parameter1 as type1, param2 as type2, ..., return type)

Export makes a script function not forgotten: when you execute the function exescript, tcreateex and even tcreate, these functions will not forget the export functions of the script where they were executed, it is as if those export functions were defined within them.

* IMPORT(Unknown)

What script "can't" run easily?:
Spoiler
let's say like thiss: create my own function as "cos function" and be able to call it in any script, the only thing left is to copy it.

Others:
* Global script:
Spoiler
A script that is saved in the world level can be executed with an exescript function.

"Object-oriented programming":
* STRUCT(BUG):
Spoiler
It is incomplete, inside these structs you can put scripts but when you put fields/attributes and try to use them, an error appears, it mentions them by calling them member variables.

* CLASS:
Spoiler
You cannot create classes, but there are classes that you can use, those classes are shared(nothing has to be instantiated) and by indexer, only their properties are used:

The objects of a class are used by index + a property, for example char(1).id=3

Some are created by design:
CHAR, BLOCK, BGO, WARP, LIQUID, NPC

There are other objects that are created by script:
BITMAP by bmpcreate
TEXT by txtcreate
EFFECT (in 1.4.5 path 31 you can access the properties) by fxcreate
NPC by ncreate
CHAR for cheats (like typing supermario8) * laugh

Others only control one important thing:
BGP
BGM(Unfortunately it disappeared in 1.4.5 or is it private? it seems that with mp3 this is lag.)
LVLTIMER(the time of your level)

Another one that is supposed to just read:
SECTION(since 1.4.5)

There is no class called:
LAYER, but can be controlled by functions:
-Lset: to make it disappear or make it transparent
-Lmove: to move it
-Lspin: to rotate

In 1.4.4 you could rotate and scale the screen like a bitmap but very strange and limited with the shaderset function, if you want to shake the screen a little bit in 1.4.5 you can use ‘call spevent(55)’

* EVENTS:
Spoiler
In every box that requests event(event created) you can put a script, but it will ignore the sleep function(everything would be in 1 frame).

There are several boxes to put events, but you can only put script in the boxes of:
* In liquids type 10 and 11 (These scripts do not ignore sleep, they are not executed again until it ends)
* In the script box to create event (Read Tcreate).
* The NPCSCRIPT (While the npc is active, its execution is always launched, ignore sleep)
* In SMBX1.4.5, the NPC will create IMMEDIATELY after ncreate executed, so you can do something like this:

Code: Select all

a = ncreate(46, char(1).x, char(1).y - 256, 0, 0, 0, 0)
a = getid(a)
npc(a).forecolor_a *=0.5
npc(a).ysp=-8
npc(a).ivalb=1


* CALLBACK (function in property/function in parameter)(or the closest)
Spoiler
In the class NPC, BLOCK(the objects) has for example the deathevent property(and similar) if you put a script(from the list of scripts) it will ignore the sleep function, actually it is the box to put a created event.

You cannot define callbacks in a script function even though there is a keyword called SCRIPTPTR whose use is unknown,

What I know from VB6 is that callbacks are only to relate to c++ dll or api32, and should not be on a form(*.frm) but on a module(*.bas); also in VBA there is something curious there is a function called run: its parameters is a string that is the name of a function, the rest of the parameters are the parameters of that function sent to the string, which must be the same amount(function signature), in VB NET they are the delegates.
Last edited by NESTED ERNEST on 20 Mar 2021, 5:43, edited 6 times in total.
Programming NPCs in SMBX-38A is fun:
That is me
Image
Image
Image
Image

ROCKMAN GIF IN SMBX 38A

Image

Victor ManuelMR M
Count
Count
Avatar
Victor ManuelMR M
Count
Count
Age: 19
Reputation: 144
Posts: 232
Joined: 7 Feb 2018

Post #2by Victor ManuelMR » 10 Nov 2020, 7:18

Spoiler
NESTED ERNEST wrote:I don't know if it's a good title but this is about:
* triggers/executions
* What Teascript has similar with Visual Basic or some language.

TEASCRIPT
It is the smbx38a scripting system with syntax similar to that of VB6.

Declaration of variables:
Spoiler
Like the one in VB6, you can declare them by typing:
Dim name_var As variable_type
It has the types: byte, string, single, integer, double, long, but not boolean or the const keyword. This way of having variables is available since 1.4.5.

In VB6 there is an alternative way to declare variables that teascript doesn't:
Spoiler
Dim var1$ ‘String
Dim var2% ‘Integer
Dim var3& ‘Long
Dim var4! ‘Single
Dim var5# ‘Double

Table of variables:
Spoiler
All scripts at the level can access these variables with the function val for numbers and str for strings: they are called local variables.

If you press the Add button + shift key you will add an array of one dimension, it is as if you wrote:
Dim name_array() as double (you can't declare arrays)
It has no number of elements so you have to use the redim function which has 3 parameters:
First parameter is if you want to preserve the elements.
Second parameter is the name of the array.
Third parameter is the number of elements.

To read and write you use the function array for numbers or strarray for strings:
Array (name_array (item))

There are no matrices.

Structured programming:
Everything is like VB6, though:

Selective structures: [IF, ELSE, ELSEIF, SELECT CASE]
Spoiler
* You cannot write an addition after the then:
If condition then var+=1
Works with: If condition then var=var+1

* In 1.4.5 it is not necessary to write 'then', if everything is in one line if necessary.

* Logical operators: AND, OR, XOR EQV and IMP
* Bitwise scrolling operations: In 1.4.5 path 28 << and >> were added
* hexadecimal literal: &H1B38AF
* octal literal: &o1510
* binary literal: &b101011 (Something added in VB NET 2015/2017)

Repetitive structures: [DO, LOOP, WHILE, UNTIL, FOR NEXT]
Spoiler
* Up to 1.4.5 it reaches 100%, in previous versions when using an EXIT DO and if right after there is an ELSE there was an error, you had to put the EXIT DO in the last nested condition for it to work.

* Since 1.4.4 there is a function to use it with DO LOOP called Itrcreate and Itrnext to iterate the IDs of the objects quickly, after finishing the iterator you must destroy the itrcreate with berase.

* GOTO and GOSUB should not be used inside a WITH block

Modular programming:
We have the following functions to support this:

* SCRIPT
Spoiler
Script name_funcion (parameter1 as type1, parameter2 as type2,…, return type)

It is the normal function except that the return value is a parameter, if it does not have a return value it is a Sub like VB6, to return and finish we use return (if it is in the parameters), it is not like VB6 that you have to match the name from your function to the variable you want to return.

In versions prior to 1.4.5 to access any parameter of the function you had to use Param (for numbers) and Strparam (for strings).

The parameters of the SCRIPT function are by value: ByVal in VB6 (without writing this keyword), there is no ByRef keyword.

* TCREATE
Spoiler
It launches a created event, it can have a script, there are things that can only be done through it like autoscroll.

Tcreate scripts do not ignore the sleep function.

* EXESCRIPT AND TCREATEEX
Spoiler
They are similar, they execute a local/global script (from the list of scripts, it is not a script function):
Exescript:
When this function is called, the current flow stops, jumps to it until it ends and returns, it has a parameter that is that of a script, despite not having parameters, it takes the values ​​of param1, param2, param3 from where it is executed, like when you are inside an npc script.
Be careful if you execute exescript inside a script that ignores the sleep function, this will do it too, as inside a NPCSCRIPT that ignores them.

Tcreateex:
When this function is called, the flow doesn't jump immediately, I'm not sure but I guess it will be executed after the last running npc script, it's like using tcreate but it launches only your script but without having to create the event, it has 5 parameters: script name, time it is launched, some parameter 1, 2 and 3.

Again:
The Tcreateex and Tcreate scripts do not ignore the sleep function, and they do not jump immediately.

What script "can't" run easily?:
Spoiler
If the script function I want to execute is inside another script in the list of scripts, I don't know if it can be done, the only thing left is to copy it.

There seem to be more functions, but their use is unknown:
* IMPORT
* EXPORT

"Object-oriented programming":
* STRUCT(BUG):
Spoiler
It is incomplete, inside these structs you can put scripts but when you put fields/attributes and try to use them, an error appears, it mentions them by calling them member variables.

* CLASS:
Spoiler
You cannot create classes, but there are classes that you can use, those classes are shared(nothing has to be instantiated) and by indexer, only their properties are used:

The objects of a class are used by index + a property, for example char(1).id=3

Some are created by design:
CHAR, BLOCK, BGO, WARP, LIQUID, NPC

There are other objects that are created by script:
BITMAP by bmpcreate
TEXT by txtcreate
EFFECT (in 1.4.5 path 31 you can access the properties) by fxcreate
NPC by ncreate
CHAR for cheats (like typing supermario8) * laugh

Others only control one important thing:
BGP
BGM(Unfortunately it disappeared in 1.4.5 or is it private?)
LVLTIMER

Another one that is supposed to just read:
SECTION(since 1.4.5)

There is no class called:
LAYER, but can be controlled by functions:
Lset to make it disappear or make it transparent
Lmove to move it
Lspin to rotate

In 1.4.4 you could rotate and scale the screen like a bitmap but very strange and limited with the shaderset function, if you want to shake the screen a little bit in 1.4.5 you can use ‘call spevent(55)’

* EVENTS:
Spoiler
In every box that requests event(event created) you can put a script, but it will ignore the sleep function(everything would be in 1 frame).

There are several boxes to put events, but you can only put script in the boxes of:
* In liquids type 10 and 11 (These scripts do not ignore sleep, they are not executed again until it ends)
* In the script box to create event (Read Tcreate).
* The NPCSCRIPT (While the npc is active, its execution is always launched, ignore sleep)
In SMBX1.4.5, the NPC will create IMMEDIATELY after ncreate executed, so you can do something like this:

Code: Select all

a = ncreate(46, char(1).x, char(1).y - 256, 0, 0, 0, 0)
a = getid(a)
npc(a).forecolor_a *=0.5
npc(a).ysp=-8
npc(a).ivalb=1

* CALLBACK (function in property/function in parameter)(or the closest)
Spoiler
In the class NPC, BLOCK(the objects) has for example the deathevent property(and similar) if you put a script(from the list of scripts) it will ignore the sleep function, actually it is the box to put a created event.

You cannot define callbacks in a script function even though there is a keyword called SCRIPTPTR whose use is unknown,

What I know from VB6 is that callbacks are only to relate to c++ dll or api32, and should not be on a form(*.frm) but on a module(*.bas); also in VBA there is something curious there is a function called run: its parameters is a string that is the name of a function, the rest of the parameters are the parameters of that function sent to the string, which must be the same amount(function signature), in VB NET they are the delegates.

Your post is very interesting, I didn't know you could use << | >>
and Export has already been discovered:

Spoiler
"Export allows you to export custom functions and custom procedures and make them global. Exported scripts can be accessed in any other script normally."

Code: Select all

'This function can now be accessed in any script
export script procedureName (param1 as type, param2 as type, ...)

end script
Image
[1.4.5] - Dream Team at The Challenging Portals:
Image

NESTED ERNEST M
Topic author, Count
Count
Avatar
NESTED ERNEST M
Topic author, Count
Count
Reputation: 74
Posts: 268
Joined: 23 Sep 2017
Location: Perú, Lima
Website

Post #3by NESTED ERNEST » 11 Nov 2020, 5:03

Thanks, I already put it, but testing it is not as they say.
Programming NPCs in SMBX-38A is fun:
That is me
Image
Image
Image
Image

ROCKMAN GIF IN SMBX 38A

Image

Victor ManuelMR M
Count
Count
Avatar
Victor ManuelMR M
Count
Count
Age: 19
Reputation: 144
Posts: 232
Joined: 7 Feb 2018

Post #4by Victor ManuelMR » 11 Nov 2020, 18:38

NESTED ERNEST wrote:Thanks, I already put it, but testing it is not as they say.

So he changed in Patch 31?
I will test it later.
Image
[1.4.5] - Dream Team at The Challenging Portals:
Image

Victor ManuelMR M
Count
Count
Avatar
Victor ManuelMR M
Count
Count
Age: 19
Reputation: 144
Posts: 232
Joined: 7 Feb 2018

Post #5by Victor ManuelMR » 12 Mar 2021, 9:44

Spoiler
NESTED ERNEST wrote:I don't know if it's a good title but this is about:
* triggers/executions
* What Teascript has similar with Visual Basic or some language.

TEASCRIPT
It is the smbx38a scripting system with syntax similar to that of VB6.

Declaration of variables:
Spoiler
Like the one in VB6, you can declare them by typing:
Dim name_var As variable_type
It has the types: byte, string, single, integer, double, long, but not boolean or the const keyword. This way of having variables is available since 1.4.5.

In VB6 there is an alternative way to declare variables that teascript doesn't:
Spoiler
Dim var1$ ‘String
Dim var2% ‘Integer
Dim var3& ‘Long
Dim var4! ‘Single
Dim var5# ‘Double

Table of variables:
Spoiler
All scripts at the level can access these variables with the function val for numbers and str for strings: they are called local variables.

If you press the Add button + shift key you will add an array of one dimension, it is as if you wrote:
Dim name_array() as double (you can't declare arrays)
It has no number of elements so you have to use the redim function which has 3 parameters:
First parameter is if you want to preserve the elements.
Second parameter is the name of the array.
Third parameter is the number of elements.

To read and write you use the function array for numbers or strarray for strings:
Array (name_array (item))

There are no matrices.

String variables cannot be seen in the variable table.

Structured programming:
Everything is like VB6, though:

Selective structures: [IF, ELSE, ELSEIF, SELECT CASE]
Spoiler
* You cannot write an addition after the then:
If condition then var+=1
Works with: If condition then var=var+1

* In 1.4.5 it is not necessary to write 'then', if everything is in one line if necessary.

* Logical operators: AND, OR, XOR EQV and IMP
* Bitwise scrolling operations: In 1.4.5 path 28 << and >> were added
* hexadecimal literal: &H1B38AF
* octal literal: &o1510
* binary literal: &b101011 (Something added in VB NET 2015/2017)

Repetitive structures: [DO, LOOP, WHILE, UNTIL, FOR NEXT]
Spoiler
* Up to 1.4.5 it reaches 100%, in previous versions when using an EXIT DO and if right after there is an ELSE there was an error, you had to put the EXIT DO in the last nested condition for it to work.

* Since 1.4.4 there is a function to use it with DO LOOP called Itrcreate and Itrnext to iterate the IDs of the objects quickly, after finishing the iterator you must destroy the itrcreate with berase.

* GOTO and GOSUB should not be used inside a WITH block

Modular programming:
We have the following functions to support this:

* SCRIPT
Spoiler
Script name_funcion (parameter1 as type1, parameter2 as type2,…, return type)

It is the normal function except that the return value is a parameter, if it does not have a return value it is a Sub like VB6, to return and finish we use return (if it is in the parameters), it is not like VB6 that you have to match the name from your function to the variable you want to return.

In versions prior to 1.4.5 to access any parameter of the function you had to use Param (for numbers) and Strparam (for strings).

The parameters of the SCRIPT function are by value: ByVal in VB6 (without writing this keyword), there is no ByRef keyword.

* TCREATE
Spoiler
It launches a created event, it can have a script, there are things that can only be done through it like autoscroll.

Tcreate scripts do not ignore the sleep function.

* EXESCRIPT AND TCREATEEX
Spoiler
They are similar, they execute a local/global script (from the list of scripts, it is not a script function):
Exescript:
When this function is called, the current flow stops, jumps to it until it ends and returns, it has a parameter that is that of a script, despite having only one parameter, it takes the values ​​of param1, param2, param3 from where it is executed, like when you are inside an npc script.
Be careful if you execute exescript inside a script that ignores the sleep function, this will do it too, as inside a NPCSCRIPT that ignores them.

Tcreateex:
When this function is called, the flow doesn't jump immediately, I'm not sure but I guess it will be executed after the last running npc script, it's like using tcreate but it launches only your script but without having to create the event, it has 5 parameters: script name, time it is launched, some parameter 1, 2 and 3.

Again:
The Tcreateex and Tcreate scripts do not ignore the sleep function, and they do not jump immediately.

* EXPORT
Spoiler
It's a keyword that you can prepend to a script function you created:

export script name_script(parameter1 as type1, param2 as type2, ..., return type)

Export makes a script function not forgotten: when you execute the function exescript, tcreateex and even tcreate, these functions will not forget the export functions of the script where they were executed, it is as if those export functions were defined within them.

* IMPORT(Unknown)

What script "can't" run easily?:
Spoiler
let's say like thiss: create my own function as "cos function" and be able to call it in any script, the only thing left is to copy it.

Others:
* Global script:
Spoiler
A script that is saved in the world level can be executed with an exescript function.

"Object-oriented programming":
* STRUCT(BUG):
Spoiler
It is incomplete, inside these structs you can put scripts but when you put fields/attributes and try to use them, an error appears, it mentions them by calling them member variables.

* CLASS:
Spoiler
You cannot create classes, but there are classes that you can use, those classes are shared(nothing has to be instantiated) and by indexer, only their properties are used:

The objects of a class are used by index + a property, for example char(1).id=3

Some are created by design:
CHAR, BLOCK, BGO, WARP, LIQUID, NPC

There are other objects that are created by script:
BITMAP by bmpcreate
TEXT by txtcreate
EFFECT (in 1.4.5 path 31 you can access the properties) by fxcreate
NPC by ncreate
CHAR for cheats (like typing supermario8) * laugh

Others only control one important thing:
BGP
BGM(Unfortunately it disappeared in 1.4.5 or is it private? it seems that with mp3 this is lag.)
LVLTIMER(the time of your level)

Another one that is supposed to just read:
SECTION(since 1.4.5)

There is no class called:
LAYER, but can be controlled by functions:
-Lset: to make it disappear or make it transparent
-Lmove: to move it
-Lspin: to rotate

In 1.4.4 you could rotate and scale the screen like a bitmap but very strange and limited with the shaderset function, if you want to shake the screen a little bit in 1.4.5 you can use ‘call spevent(55)’

* EVENTS:
Spoiler
In every box that requests event(event created) you can put a script, but it will ignore the sleep function(everything would be in 1 frame).

There are several boxes to put events, but you can only put script in the boxes of:
* In liquids type 10 and 11 (These scripts do not ignore sleep, they are not executed again until it ends)
* In the script box to create event (Read Tcreate).
* The NPCSCRIPT (While the npc is active, its execution is always launched, ignore sleep)
* In SMBX1.4.5, the NPC will create IMMEDIATELY after ncreate executed, so you can do something like this:

Code: Select all

a = ncreate(46, char(1).x, char(1).y - 256, 0, 0, 0, 0)
a = getid(a)
npc(a).forecolor_a *=0.5
npc(a).ysp=-8
npc(a).ivalb=1


* CALLBACK (function in property/function in parameter)(or the closest)
Spoiler
In the class NPC, BLOCK(the objects) has for example the deathevent property(and similar) if you put a script(from the list of scripts) it will ignore the sleep function, actually it is the box to put a created event.

You cannot define callbacks in a script function even though there is a keyword called SCRIPTPTR whose use is unknown,

What I know from VB6 is that callbacks are only to relate to c++ dll or api32, and should not be on a form(*.frm) but on a module(*.bas); also in VBA there is something curious there is a function called run: its parameters is a string that is the name of a function, the rest of the parameters are the parameters of that function sent to the string, which must be the same amount(function signature), in VB NET they are the delegates.

Scriptptr (Script Parameter) was discovered:
https://wohlsoft.ru/pgewiki/TeaScript_Syntax#Scriptptr
Image
[1.4.5] - Dream Team at The Challenging Portals:
Image

NESTED ERNEST M
Topic author, Count
Count
Avatar
NESTED ERNEST M
Topic author, Count
Count
Reputation: 74
Posts: 268
Joined: 23 Sep 2017
Location: Perú, Lima
Website

Post #6by NESTED ERNEST » 28 Jul 2021, 7:23

Victor ManuelMR wrote:Scriptptr (Script Parameter) was discovered:

The code that is there produces an error, I don't think it works that way.

I always believed that there was something called strarray but I was wrong XD because sometimes you hear people mention it.
Programming NPCs in SMBX-38A is fun:
That is me
Image
Image
Image
Image

ROCKMAN GIF IN SMBX 38A

Image

Lx Xzit M
Moderator
Moderator
Avatar
Lx Xzit M
Moderator
Moderator
Reputation: 404
Posts: 755
Joined: 9 Nov 2015
Website

Post #7by Lx Xzit » 8 Sep 2021, 23:06

NESTED ERNEST wrote: CHAR for cheats (like typing supermario8) * laugh

I didn't know it was possible to activate cheat codes through scripts. How do you use it?
VISIT MY YOUTUBE CHANNEL! LX XZIT
Join our 38A Discord server!

Image


Return to “TeaScript”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest