Hay varias formas de hacerlo, en este momento se me ocurre que podrias crear una lista con los n?meros:
[gml]lista = ds_list_create();
for (i=1;i<=9;i+=1)
repeat(2) ds_list_add(lista,i);
ds_list_suffle(lista);[/gml]
Luego, cuando estas creando las cartas le asignas el primer valor de la lista y luego lo eliminas:
[gml]for (i=0;i<18;i+=1){
a = instance_create(Obj,x,y);
a.valor = ds_list_find_value(lista,0);
ds_list_delete(lista,0);
}[/gml]
Asi cada carta termina con un valor al azar de 1 a 9, repitiendo solamente una vez cada valor.
[gml]lista = ds_list_create();
for (i=1;i<=9;i+=1)
repeat(2) ds_list_add(lista,i);
ds_list_suffle(lista);[/gml]
Luego, cuando estas creando las cartas le asignas el primer valor de la lista y luego lo eliminas:
[gml]for (i=0;i<18;i+=1){
a = instance_create(Obj,x,y);
a.valor = ds_list_find_value(lista,0);
ds_list_delete(lista,0);
}[/gml]
Asi cada carta termina con un valor al azar de 1 a 9, repitiendo solamente una vez cada valor.