Nombre del creador: ni idea, ni yo recuerdo de donde lo saque ni el tipo del que lo saque lo recuerda tampoco, lo deja anotado en el script.

Breve descripción de su función: como cualquier otra funcion explode en java o lenguajes similares este rompe una cadena de texto en partes a partir de un delimitador cualquiera de un solo caracte de longitud, devolviendo un array con todos los valores explotados de la cadena de texto original.

Versión GM utilizada:
pues hasta donde se deberia de ser en todas, sin embargo solo lo e probado en 8, 8.1 y estudio.
:GMS:
:GM8:

Código del Script:

[gml]
/*
This part I didn't write. I have a stash of scripts I have collected over the years
and this was one of them. Unfortunately I don't know where I got it from.

So if you wrote this or you know who did please email me so I can assign credit.

Usage: string_explode(string, delimiter)

*/

var c, i, j, k, s;
s = "";
i = 0;
k = string_length(argument0);

for (j = 1; j <= k; j += 1)
{
    c = string_char_at(argument0, j);
    if (c == argument1)
    {
        level = s;
        s = "";
        i += 1;
        continue;
    }
    s = s + c;
}
if (s != "")
   level = s;

[/gml]

ps: yo se que ya hay un script explode en el foro, pero este me parecio mas interesante ya que devuelve toda la cadena rota y no un solo pedaso en una posicion cualquiera.
http://www.comunidadgm.org/desarrollo-de-scripts/explode%28%29/
pps: si usan el script no olviden agradecer al creador desconocido :D
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

Una pregunta, ¿dónde debería ir el return y qué variable debería devolver? Ya que hace falta en el script y es de lo más importante en el script.
alaberga regué el café.

BA:STFW&RTFM

no tiene return, el resultado esta dentro del array level, prefiero dejarlo asi ya que los return y arrays tienen un error muy extraño si tu retornas un array dentro de un return a una variable x

[gml]
//script
a[0]=argument0;
a[1]=argument1;
retun a;
//la llamada
resultado1=script(1,2);
[/gml]

efectivamente retorna el valor del array completo a la variable resultado, sin embargo si en un futuro se vuelve a ejecutar ese script, pero con otros valores en "a" y aunque el rotorno lo aga a una variable "resultado2" tambien se cambia el valor del "resultado1". por lo que me da a entender que cuando se retorna un array en realidad no se le asigna el valor al "resultado1" sino que se le asigna la direccion de memoria que tiene "a", por eso cada vez que se ejecuta tambien se cambia el valor de todas las variables a las que se les asigno en return "a". y por eso preferi deja este script asi.

la forma de usarlo seria algo asi

[gml]
string_explode(string(texto),",")
a=level[0]
b=level[1]
//o tambien
for(i=1;i<=array_length_1D(level);i++)
a=level
[/gml]
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

Hola, hace días tenía ganas de responderte pero no me había dado el tiempo de hacerlo. Para un proyecto en el que estamos trabajando hice un script que separa strings de acuerdo a un delimitador y retorna un array. Es el siguiente:

//string_split(str,separator)
var str = argument[0];
var separator = argument[1];
var array;
var index = 0;
//Get strings
while(string_pos(separator,str) != 0){
    var position = string_pos(separator,str);
    array[index++] = string_copy(str,1,position-1);
    str = string_delete(str,1,position);
}
//Final String
array[index] = str;
return array;


Y un ejemplo de uso:

array_uno = string_split("1,2,3,4,5,6,7,8,9",",");
array_dos = string_split("a,b,c,d,e,f,g,h,i,j,k",",");
array_tres = string_split("Este es un string largo"," ");

for(var i = 0; i < array_length_1d(array_tres); i++)
    show_debug_message("array_tres["+string(i)+"]: " + string(array_tres[i]));
for(var i = 0; i < array_length_1d(array_dos); i++)
    show_debug_message("array_dos["+string(i)+"]: " + string(array_dos[i]));
for(var i = 0; i < array_length_1d(array_uno); i++)
    show_debug_message("array_uno["+string(i)+"]: " + string(array_uno[i]));


A diferencia del que colocaste, este si tiene return. No sé si entendí el error que te daba al hacer eso a ti, pero en este caso no he tenido problemas.

Saludos