Noviembre 26, 2019, 04:30:27 AM Ultima modificación: Noviembre 27, 2019, 05:34:02 PM por Zhekken
Buenas hace poco encontré este Script(foro): https://www.comunidadgm.org/desarrollo-de-scripts/pedir-el-nombre-al-jugador/

quisiera saber si alguno de ustedes sabe como hacer lo mismo pero en vez de letras solo pedirle números al jugador, esto podría servir por ejemplo para que se abra alguna especie de ventana y abrir tipos de puertas que pidan una contraseña en números... se que se pueden escribir números pero se guardan de tipo string ... si tienen otra manera de pedir solo números al jugador se los agradecería mucho si me explican...solo quiero pedir al usuario/jugador que escriba un numero para que este se almacene en una variable, de ahí pasar a condiciones y así abrir una puerta si se escribe bien la contraseña o dar un mensaje de error si se equivocan etc...

//\\Si no me estoy explicando bien luego lo edito dando un mejor ejemplo//\\

Hola Zhekken

Si el resultado de tu contraseña es exacto, entonces comparalas como texto y ya.
Ej:
if (respuesta = "1234") { abrir puerta }
Si usas las comillas estarás comparando textos en vez de números.

Existe la función "string_digits" que toma sólo los números de una string.
Ej: string_digits("100tifico") te da como resultado "100" (como texto)

También existe la función "real" para convertir una string a número siempre y cuando tenga formato de número.
ej: real("-12.5") te regresa -12.5 como número
Pero real("a123sdb5") falla.

Te sugiero combinar ambas. string_digits para dejar sólo los números y luego real para convertirlos a número.

Saludos

Pues siguiendo la idea del código que encontraste y lo que menciono [user]BssString[/user] haz esto...

Event Create
[gml]
//Modo de lectura, letra o numero
onlyNumb = false;// false = todo; true = solo numeros
[/gml]
Aqui activas el modo si cambias false por true solo te leera numeros

Event Step o Draw ( cualquiera de los sirve, pues, se ejecutan en cada frame, lo ideal es draw, ya que, ya tienes un evento ahi )
[gml]
if( keyboard_check_pressed( vk_anykey ) && onlyNumb ){
      keyboard_string = string_digits( keyboard_string );
}
[/gml]
Aqui detecta cuando se pulsa un tecla, si es asi, ejecuta el codigo dentro que solo deja los numeros...

Espero te ayude : D

Cita de: BssString en Noviembre 27, 2019, 01:55:06 AM
Hola Zhekken

Si el resultado de tu contraseña es exacto, entonces comparalas como texto y ya.
Ej:
if (respuesta = "1234") { abrir puerta }
Si usas las comillas estarás comparando textos en vez de números.

Existe la función "string_digits" que toma sólo los números de una string.
Ej: string_digits("100tifico") te da como resultado "100" (como texto)

También existe la función "real" para convertir una string a número siempre y cuando tenga formato de número.
ej: real("-12.5") te regresa -12.5 como número
Pero real("a123sdb5") falla.

Te sugiero combinar ambas. string_digits para dejar sólo los números y luego real para convertirlos a número.

Saludos

Muchas gracias por tu explicación, ya había intentado con "string_digits" pero no me había funcionado porque me faltaba usar el "real" para convertir el numero que escribía en "texto" a números ya que comparaba lo que escribía con una variable que era en números (por ejemplo: contraseña = 1234) entonces si se escribía en texto la respuesta (por ejemplo: respuesta = "1234") no me dejaba comparar.... como dices mas arriba podía hacer una comparación en texto pero así no me gusta... usando (string_digits) y (real) solucione mi problema, muchas gracias  :)

wilodxd ... también gracias a ti, aunque la verdad no me llevo bien con los booleanos  :( de hecho creo que no he hecho ningún mini ejemplo que los use ( o tal vez si pero no recuerdo ) por eso no supe aplicar tu solución, aun así te agradezco mucho por tomarte tu tiempo y querer ayudarme  :)