INPUT como en Qbasic

Discusión en general sobre Gemix.

INPUT como en Qbasic

Postby erkosone » Mon Mar 09, 2009 1:48 am

Hola, he probado las herramientas que trae la beta publica 5.5 y esta fenomenal, pero sigo hechando de menos un comando basico que para hacer videojuegos de aventura grafica me iria muy bien, o incluso para dejar constancia de los jugadores en los creditos de mi juego.

Se ha pensado en incorporar un comando que permita ingresar texto desde teclado directamente asignado a una variable?
Puedo hacerlo perfectamente con lo que ya tiene Gemix, pero es algo bastante laborioso y limitado.
Last edited by erkosone on Tue Mar 10, 2009 1:22 pm, edited 1 time in total.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Limitacion..

Postby CicTec » Mon Mar 09, 2009 1:55 am

Hola erkos

Te deje una rutina de ejemplo en otro hilo donde lo preguntastes, hacer una rutina de default de esa es bastante dificil con la logica que tiene un lenguaje como DIV que es particular, mas adelante lo intentare con mas calma para varar si se puede implementar algo bueno, de momento usa la rutina, en todo caso lo que pides es simplemente una operacion con una cadena de texto y usando el valor de la variable ASCII:
Code: Select all
global
   string txt_input;

begin
   txt_input += ascii;
   ...
end

Como ves es una operacion muy muy simple, si necesitas mas ayuda pon un post en "Mesa de Ayuda".

Hasta pronto
User avatar
CicTec
 
Posts: 16571
Joined: Thu Jul 31, 2008 10:18 pm

Re: Limitacion..

Postby erkosone » Mon Mar 09, 2009 2:00 am

Gracias CicTec.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Limitacion..

Postby CicTec » Mon Mar 09, 2009 2:02 am

De nada tio ;)
User avatar
CicTec
 
Posts: 16571
Joined: Thu Jul 31, 2008 10:18 pm

Re: Limitacion..

Postby erkosone » Tue Mar 10, 2009 6:46 am

He estado haciendo unas pruebas sobre una rutina para hacer lo que te comentava y me ha salido esto.
Se puede mejorar muchisimo pero es algo muy muy basico, si a alguien le sirve para algo pues ahi esta.
Gracias igualmente por la ayuda CicTec.



http://www.megaupload.com/?d=L98G1TQM
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Limitacion..

Postby BigHead » Tue Mar 10, 2009 9:17 am

hola erkosone, mis saludos, quiza deberías cambiar el titulo del tema con algo referente al tema de entradas por teclado o algo así, mas que nada pq asi si otro usuario tiene dudas o busca info sobre el mismo tema, podrá dar con este tema más facilmente y eso es una ayuda bastante grande. Mas saludos y suerte con lo que estas haciendo :)
Hañime Bushi, nekonoashi
User avatar
BigHead
 
Posts: 1277
Joined: Sun Nov 30, 2008 1:28 pm

Re: INPUT como en Qbasic

Postby CicTec » Tue Mar 10, 2009 5:30 pm

Hola erkosone, he bajado y probado tu rutina, es bastante buena, aunque el codigo lo puedes mejorar bastante, mira esa:
inputchar.zip

Puedes personalizarla como prefieres (en cuanto a velocidad de input), posiblemente te puede ayudar en algo.

Saludos y gracias por el aporte :)
User avatar
CicTec
 
Posts: 16571
Joined: Thu Jul 31, 2008 10:18 pm

Re: INPUT como en Qbasic

Postby erkosone » Wed Mar 11, 2009 12:47 am

Ya lo prove CicTec, muy buena y simple.
Yo segire a la espera de ver un dia la función INPUT en Gemix jeje, la hecho mucho de menos de otros lenguajes, pero como ves hay forma de husar algo parecido.
Me encanta Gemix tio, Enhorabuena a todos los que lo estan tirando para adelante.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: INPUT como en Qbasic

Postby CicTec » Wed Mar 11, 2009 1:24 am

Gracias :)

Si, lo de la funcion de input mas adelante lo intentare, si se puede hacer algo bueno y flexible lo añado sin duda, tranquilo.
User avatar
CicTec
 
Posts: 16571
Joined: Thu Jul 31, 2008 10:18 pm

Re: INPUT como en Qbasic

Postby matt64 » Thu Mar 19, 2009 5:22 am

Estube viendo algunas cosas de un cd divmania que Gino subio hace tiempos, y me parecio interesante este código.
Code: Select all
/*
 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 º ViTAL-input 1.0.1                                                        º
 º                                                                          º
 º autor: Jos‚ Antonio Migens G¢mez                                         º
 º nick : ViTAL                                                             º
 º email: [email protected]                                                º
 º                                                                          º
 º edici¢n especial para DiVman¡a 8                                         º
 º                                                                          º
 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
*/

PROGRAM Ejemplo_Input;

PRIVATE

    string Var1;
    string Var2;

BEGIN

    Set_mode(640480);


    Write(0,20,100,0,"Escriba su nombre:");

    Var1=ViTAL_Input(0,150,100,20,"",23); //23=rojo
    IF (var1=="");
        WRITE(0,20,300,0,"Se cancel¢ el Input. Pulsa X para salir");
    ELSE
        Var2="Gracias "+var1+" por usar ViTAL-Input. Pulsa X para salir";
        write(0,20,300,0,var2);
    END

    loop

        if (key(_x)); exit("ViTAL-iNPUT 1.0",0); end

        frame;

    end






END


/*
 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍViTAL-InputÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍv 1.0.1Í»
 º                                                                           º
 º  ViTAL-iNPUT(Fuente,x_text,y_text,int n_carac_max,string Txt_pred,        º
 º              byte color_cursor)                                           º
 º                                                                           º
 º  Fuente            -> nombre o numero de fuente a mostrar.                º
 º  X,Y               -> coordenadas donde se sit£a el input.                º
 º  int n_carac_max   -> n£mero de car cteres m ximos permitidos.            º
 º  String txt_pred   -> texto predeterminado del input.                     º
 º  Byte color_cursor -> color del cursor (0-255)                            º
 º                                                                           º
 º  NOTA: El timer[9] est  reservado para ViTAL-iNPUT.                       º
 º                                                                           º
 º  Uso: Copie este documento al final de cualquier prg DiV2. Use la sintaxisº
 º       descrita y si quiere recoger el resultado en una variable use:      º
 º                                                                           º
 º          variable=vital_input(...                                         º
 º                                                                           º
 º  e-mail: [email protected]                                     º
 º                                                                           º
 º  licencia de uso: Esta librer¡a es de uso libre siempre y cuando se       º
 º                   respeten las siguientes condiciones. Estos comentarios  º
 º                   deben permanecer intactos en todos los c¢digos de       º
 º                   programas en que se utilice. Cualquier modificaci¢n que º
 º                   se realice a la rutina debe ser documentado y remitido  º
 º                   a su autor v¡a e-mail. No se permite su uso para uso    º
 º                   en programas con fines comerciales si no se da consenti-º
 º                   miento expreso v¡a e-mail de su autor. El autor reserva º
 º                   todos los derechos sobre esta rutina.                   º
 º                   - Esta rutina se entrega sin ningun tipo de garant¡a    º
 º                     de da¤os en el pc donde se ejecute.No se autoriza la  º
 º                     utilizaci¢n de la rutina sin la aceptaci¢n de esta    º
 º                     licencia.                                             º
 º                                                                           º
 º                                                                           º
 º   La rutina no es quiz s la m s                                           º
 º   brillantes de todas las imaginables,                                    º
 º   no obstante no se ha cambiado su                                        º
 º   concepci¢n por encontrar                                                º
 º   que posiblemente es la m s r pida                                       º
 º   de las existentes.                                                      º
 º                          ViTAL                                            º
 º                                                                           º
 º                                                                           º
 ÈÍÍhttp://www.pagina.de/vitalÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
*/


FUNCTION ViTAL_INPUT(V_Fuente,V_x_Text,V_y_Text,int V_Carac_Max,string V_Txt_Pred,byte color_cursor);

PRIVATE

    //Variables de configuraci¢n

    //Retardo en milisegundos del parpadeo del cursor
        V_G_Retardo=100;
    //Admitir input en blanco? True, False
        V_Acepta_0=False;
    //Admitir cancelar con ESC? -> ViTAL_Input devolver  "" -> True, False
        V_Acepta_ESC=True;
    //Admitir introducir espacios en blanco al principio¨? -> True, False
        V_Acepta_Spc_in=False;
    //Retardo en milisegundos que tardar  en repetirse una letra
        V_Retar_Letra=50;
    //Si la rutina no detecta correctamente la altura de la fuente
    //indicarla aqu¡ directamente
        V_Guion_Height=0;  //0= autodetectar >0 altura en pixels del cursor


    //C¢digo de las letras b sicas
    V_Letras[50]= 30,18,23,24,22,                   /* a-u */
                  2,3,4,5,6,7,8,9,10,11,            /* 1-0 */
                  41,12,13,27,51,52,53,86,          /* §'­+,.-<*/
                  16,17,19,20,21,25,                /* Q-P */
                  31,32,33,34,35,36,37,38,39,       /* A-¥ */
                  44,45,46,47,48,49,50,             /* Z-M */
                  57,43,                            /*space € */
                  55,74,78,28;                   /* / *-+ (tecla num) */

    V_bn_teclas[11]=71,72,73,75,76,77,79,80,81,82,83;
    STRING V_Bn_Equiv="7894561230.";


    //Caracteres de las letras b sicas
    STRING V_Letras_EQUIV[50]  ="aeiou1234567890§'­+,.-<qwrtypsdfghjkl¤zxcvbnm ‡*-+";
    STRING V_Letras_Equiv_M[50]='AEIOU!"ú$%&/()=¦?¨*;:_>QWRTYPSDFGHJKL¥ZXCVBNM €*-+';
    STRING V_Acentos[4]=" ‚¡¢£";
    STRING V_Dieresis[4]="„‰‹”";

    //C¢digo de letras para alt_gr
    V_Alt_Teclas[9]=41,2,3,4,6,26,27,40,43,7;         /* \|@#ª[]{}ª*/
    //Caracteres de las letras alt_gr
    STRING V_Alt_Gr[9]="\|@#ª[]{}ª";

    //C¢digo de letras para alt para conseguir ascii
    V_Alt_Num[9]=82,79,80,81,75,76,77,71,72,73;  /* 0-9 TECLADO NUM */

    //Estructura de estado de letras 0-no pulsada 1-pulsada
    V_Es_Teclas[50];

    //Variable donde se guarda el texto
    STRING ViTAL_I_Texto;
    INT V_P_Texto; //puntero del texto

    //Contadores y variables
    INT V_Cont;
    INT CONTADOR_ALT;
    INT V_Ult_Tecla;
    INT V_Mays;
    INT V_Bloq_Mays;
    INT V_Bucle;
    INT V_Acento_Act;
    INT V_Diere_Act;
        V_Guion;
    INT V_Guion_C;
    INT V_Guion_XC;
    INT V_Guion_YC;
    STRING V_Num_ASCII;

    //Timers
    INT V_Timer1;
    INT V_Timer2;
    INT V_Timer3;
    INT V_Timer4;
    INT V_Timer5;

//INICIANDO LA RUTINA

BEGIN

    Timer[9]=0;
    //Ponemos el texto predeterminado si existe
    ViTAL_I_Texto=V_Txt_Pred;
    //Imprimimos el texto
    V_P_Texto=WRITE(V_Fuente,V_x_Text,V_y_Text,0,ViTAL_I_Texto);

    //Ponemos el cursor en su sitio segun las coordenadas dadas
    x=V_x_Text; y=V_y_Text-1;
    //Y lo pintamos
    V_Guion=WRITE_IN_MAP(V_Fuente,"I",0);
    //Si el usuario no ha introducido una altura para la fuente autodetectar
    IF (V_Guion_Height==0);
        V_Guion_Height=graphic_info(0,V_Guion,g_height);
    END
    V_Guion=NEW_MAP(3,V_Guion_Height+1,0,0,Color_Cursor);
    Graph=V_Guion;

    //Si hay texto predeterminado lo medimos y hacemos avanzar el cursor
    IF(strlen(ViTAL_I_Texto)>0);
       FOR(V_cont=0;V_cont<=STRLEN(ViTAL_I_Texto);V_cont++);
           x+=size_font(ViTAL_I_Texto[V_cont],V_Fuente);
       END
    END

    //Iniciamos el loop de lectura de teclado
    LOOP
        //Si pulsa ESC se termina la rutina
            IF (KEY(_esc) AND V_Acepta_ESC==TRUE)
               Delete_Text(V_P_Texto);
               RETURN("");
            END
        //Si pulsa Enter se acab¢ todo...
            IF (KEY(_enter) or key(28));
               IF (ViTAL_i_Texto!="" or V_Acepta_0==TRUE);
                   Delete_text(V_P_Texto);
                   RETURN(ViTAL_I_Texto);
               END
            END

        //Mirando si se pulsa retroceso
            IF (KEY(_Backspace))
                IF (strlen(ViTAL_I_Texto)>0);
                        x-=size_font(ViTAL_I_Texto[strlen(ViTAL_I_Texto-1)],V_Fuente);
                        ViTAL_I_Texto--;V_Timer1=timer[9];
                END
                WHILE (KEY(_Backspace))
                    IF (Timer[9]-V_Timer1=>30)
                        IF (strlen(ViTAL_I_Texto)>0);
                           x-=size_font(ViTAL_I_Texto[strlen(ViTAL_I_Texto-1)],V_Fuente);
                           ViTAL_I_Texto--;
                        END
                    END
                    FRAME;
                END
            ELSE
            //¨se ha llegado al tope de caracteres permitidos?
                IF (STRLEN(ViTAL_I_Texto)=>V_Carac_Max)
                ELSE
                    V_Num_ascii-=V_Num_ascii; //borramos V_Num_ascii si contenia algo
                    //Si se pulsa alt
                    WHILE (KEY(56))
                        FOR(CONTADOR_ALT=0;CONTADOR_ALT<=9;CONTADOR_ALT++);
                            IF(KEY(V_Alt_Teclas[contador_alt]))
                                ViTAL_I_Texto+=V_Alt_GR[Contador_alt];
                                V_Timer2=timer[9];
                                x+=Size_font(V_Alt_GR[contador_alt],V_Fuente);
                                WHILE(key(V_Alt_Teclas[contador_alt]) and Key (56));
                                    IF (timer[9]-V_Timer2=>V_Retar_Letra)
                                        ViTAL_I_Texto+=V_Alt_GR[Contador_alt];
                                        x+=size_font(V_Alt_GR[contador_alt],V_Fuente);
                                    END
                                    Frame;
                                END
                            END
                        END
                        FOR(Contador_alt=0;Contador_alt<=9;Contador_alt++);
                            IF(KEY(V_Alt_Num[Contador_alt]));
                                V_Num_ascii+=ITOA(CONTADOR_ALT);
                                WHILE(KEY(V_Alt_Num[Contador_alt])) FRAME; END
                                IF(STRLEN(V_Num_ascii)==3)
                                    ASCII=CALCULATE(V_Num_ascii);
                                    ViTAL_I_Texto+=ASCII;V_Num_ascii-=V_Num_ascii;
                                    x+=size_font(ViTAL_I_Texto[strlen(ViTAL_I_Texto-1)], V_Fuente);
                                END
                            END
                        END
                        FRAME;
                    END

                    //TECLADO NUMERICO
                    IF ((shift_status and 32)==32)
                        FOR (V_cont=0;V_cont<11;V_cont++);
                            IF (key(V_bn_teclas[V_cont]))
                                ViTAL_I_Texto=ViTAL_I_Texto+V_bn_equiv[V_cont];
                                x+=size_font(V_bn_equiv[V_cont],V_Fuente);
                                V_Timer5=timer[9];
                                WHILE (key(V_bn_teclas[V_cont]))
                                    IF (Timer[9]-V_Timer5=>50)
                                        IF (strlen(ViTAL_I_Texto)>0);
                                            ViTAL_I_Texto=ViTAL_I_Texto+V_bn_equiv[V_cont];
                                            x+=size_font(V_bn_equiv[V_cont],V_Fuente);
                                        END
                                    END
                                    FRAME;
                                END
                                BREAK;
                            END

                        END
                    END

                    IF (KEY(_apostrophe) and !key(42) and !key(54))
                        V_Acento_Act=1;
                    END

                    IF (KEY(40) and key(42) or key(40) and key(54))
                        V_Diere_ACT=1;
                        WHILE (key(40) or key(42) or key(54)) FRAME; END
                    END

                    FOR (V_cont=0;V_cont<=50;V_cont++);
                        //¨ESTA TECLA PULSADA?
                        IF (KEY(V_Letras[V_cont]));
                            //¨ESTABA YA PULSADA?
                            IF (V_Es_Teclas[V_cont]==0)
                                //SI NO LO ESTABA PUES AHORA ES LA ULTIMA TECLA PULSADA
                                V_Ult_Tecla=V_cont;V_Timer3=timer[9];
                                V_Es_Teclas[V_cont]=1;V_Bucle=1;
                                //Se est  emplenado con la mayuscula¨?
                                    IF (KEY(_L_SHIFT) OR KEY(_R_SHIFT))
                                        V_Mays=1;
                                        V_Bloq_Mays=0;
                                    ELSE
                                        IF((shift_status and 64)==64)
                                             V_Bloq_Mays=1;
                                             V_Mays=0;
                                        END
                                    END
                                BREAK;
                            ELSE
                                //¨ESTABA PULSADA YA Y SIGUE SIENDO ULTIMA TECLA?
                                IF(V_Ult_Tecla==V_cont)
                                    IF (TIMER[9]-V_Timer3=>50)
                                        IF (KEY(_L_SHIFT) OR KEY(_R_SHIFT))
                                            V_Mays=1;
                                            V_Bloq_Mays=0;
                                            ELSE
                                                IF((shift_status and 64)==64)
                                                    V_Bloq_Mays=1;
                                                    V_Mays=0;                                             V_Mays=0;                                             V_Mays=0;                                             V_Mays=0;
                                                END
                                        END

                                        V_Bucle=1;
                                        BREAK;
                                    END
                                END
                            END
                        ELSE
                            V_Es_Teclas[V_cont]=0;
                        END
                    END//FOR
            END//IF BACK_SPACE

                IF (V_Bucle==1)
                    //Se puls¢ con mayusculas¨¨
                    IF (V_Mays==1)
                        //Si se puls¢ space, y es al principio y no esta perimitido...
                        IF (ViTAL_I_Texto!="" or V_letras_equiv_M[V_Ult_Tecla]!=" ")
                            ViTAL_I_Texto=ViTAL_I_Texto+V_letras_equiv_M[V_Ult_Tecla];
                            x+=size_font(V_letras_equiv_M[V_Ult_Tecla],V_Fuente);
                        ELSE
                            IF (V_Acepta_Spc_In==True)
                                ViTAL_I_Texto=ViTAL_I_Texto+V_letras_equiv_M[V_Ult_Tecla];
                                x+=size_font(V_letras_equiv_M[V_Ult_Tecla],V_Fuente);
                            END
                        END
                    ELSE
                        IF (V_Bloq_Mays==1)

                           IF (V_Ult_Tecla >=5 and V_Ult_Tecla <=23);
                                //Si se puls¢ space, y es al principio y no esta perimitido...
                                IF (ViTAL_I_Texto!="" or V_letras_equiv[V_Ult_Tecla]!=" ")
                                    ViTAL_I_Texto=ViTAL_I_Texto+V_letras_equiv[V_Ult_Tecla];
                                    x+=size_font(V_letras_equiv[V_Ult_Tecla],V_Fuente);
                                ELSE
                                    IF (V_Acepta_Spc_In==true)
                                        ViTAL_I_Texto=ViTAL_I_Texto+V_letras_equiv[V_Ult_Tecla];
                                        x+=size_font(V_letras_equiv[V_Ult_Tecla],V_Fuente);
                                    END
                                END
                           ELSE
                                //Si se puls¢ space, y es al principio y no esta perimitido...
                                IF (ViTAL_I_Texto!="" or V_letras_equiv_M[V_Ult_Tecla]!=" ")
                                    ViTAL_I_Texto=ViTAL_I_Texto+V_letras_equiv_M[V_Ult_Tecla];
                                    x+=size_font(V_letras_equiv_M[V_Ult_Tecla],V_Fuente);
                                ELSE
                                    IF (V_Acepta_Spc_In==true)
                                        ViTAL_I_Texto=ViTAL_I_Texto+V_letras_equiv_M[V_Ult_Tecla];
                                        x+=size_font(V_letras_equiv_M[V_Ult_Tecla],V_Fuente);
                                    END
                                END
                           END
                            V_Bloq_Mays=0;
                        ELSE
                            IF (V_Acento_Act==1 and V_Ult_Tecla<=4)
                                ViTAL_I_Texto=ViTAL_I_Texto+V_Acentos[V_Ult_Tecla];
                                V_Acento_Act=0;
                                x+=size_font(V_Acentos[V_Ult_Tecla],V_Fuente);
                            ELSE
                                IF (V_Diere_ACT==1 and V_Ult_Tecla<=4)
                                    ViTAL_I_Texto=ViTAL_I_Texto+V_Dieresis[V_Ult_Tecla];
                                    V_Diere_ACT=0;
                                    x+=size_font(V_Dieresis[V_Ult_Tecla],V_Fuente);
                                ELSE
                                    //Si se puls¢ space, y es al principio y no esta perimitido...
                                    IF (ViTAL_I_Texto!="" or V_letras_equiv[V_Ult_Tecla]!=" ")
                                        ViTAL_I_Texto=ViTAL_I_Texto+V_letras_equiv[V_Ult_Tecla];
                                        x+=size_font(V_letras_equiv[V_Ult_Tecla],V_Fuente);
                                    ELSE
                                        IF (V_Acepta_Spc_In==true)
                                            ViTAL_I_Texto=ViTAL_I_Texto+V_letras_equiv[V_Ult_Tecla];
                                            x+=size_font(V_letras_equiv[V_Ult_Tecla],V_Fuente);
                                        END
                                    END
                                END
                            END
                        END
                    END
                    V_Bucle=0;
                    V_Mays=0;
                 END
                 //Parpadeo del cursor.
                 IF (Timer[9]-V_Timer4>70)
                    GRAPH=0;
                    IF (timer[9]-V_Timer4>V_G_Retardo) V_Timer4=timer[9]; END
                 ELSE
                    GRAPH=V_Guion;
                 END
                 FRAME;
                END
        END//LOOP
END//PROCESS

//Funci¢n que mide el ancho de una letra de la fuente bug de memoria reparado

FUNCTION SIZE_FONT(string S_LETRA,S_FONT);
PRIVATE
    S_MAP;S_SIZE;
BEGIN
    S_MAP=write_in_map(S_font,S_LETRA,0);
    S_Size=graphic_info(0,S_map,g_wide);
    UNLOAD_MAP(S_MAP);
    RETURN(S_size);
END

Sin duda, esta para echarle un ojo y ver en que puede inspirar...
User avatar
matt64
 
Posts: 124
Joined: Sun Oct 05, 2008 6:17 am
Location: Villa Luzuriaga, Buenos Aires

Next

Return to General

Who is online

Users browsing this forum: No registered users and 0 guests