scripts_n_asm
Thread Id: 30236
Thread Name: GBA | Scripting | "El Pulsatrón"
#0
Dani_SR_17 28493


El Pulsatrón


Saludos usuarios de Wah, hoy os traigo un nuevo script base con muuuchas posibilidades, podréis usarlo para simular una captura en un script, para carreras, para minijuegos y mucho más.

No voy voy a enrollarme mucho, el script es muy sencillo, os lo dejo en base, solo tenéis que modificar unos parámetros.

Que mejor manera de empezar antes de todo el rollo de lineas, que mostraros como funciona en un vídeo, pues ahí va el vídeo con un gifs para los más vagos (el gifs no se ve..).

YouTube Video





Personalización

Veamos, explicare como personalizar el script:




Dicho todo esto, debo decir que el script solo necesita 1 variable, la cual puede tener cualquier valor al comenzar el script, puesto que el valor se le da en el.

Y sin más dilación, ¡el script!


El Pulsatrón!

Script "El Pulsatrón" - Dan_SR_17

#dynamic 0x800000

' Este es un script base para todo aquel que necesite un script para capturar un Poké, hacer una carrera, un choque entre Pokémons, etc.
' La cosa es que el jugador sea rápido pulsando una tecla, aunque la dificultad será ajustable.
' Si vais a usar tiles, la parte de abajo puede ser muy variada, en mi caso, voy a ponerla para que cada 5pts cambie, es decir, si tenemos una barra de 10 bloques de largo, cada 5pts haremos que se modifique medio tile.
' Ejemplo más claro: (0 -> pts máquina, 1 -> pts player), temeos 10 bloques, cada uno formado por 2 tiles. [0,0][0,0][0,0][0,0][0,0][1,1][1,1][1,1][1,1][1,1], como veis entre los 1 y los 0, tenemos 20 espacios, luego 20*5=100.
' Pues bien, en el ejemplo, la partida iría así: Máquina -> 45-49 pts, Jugador -> 50-54 pts. Pues, ¿qué ocurre si el jugador ahora consigue lleguar a 4pts? Muy sencillo, los tiles cambian y la tabla estaría así:
' [0,0][0,0][0,0][0,0][0,1][1,1][1,1][1,1][1,1][1,1], como pode´si ver ahora el player tiene otro fragmento más.
' Por último, aquí teneís los intervalos de los pts: [0-4,5-9][10-14,15-19][20-24,25-29][30-34,35-39][40-44,45-49][50-54,55-59][60-64,65-69][70-74,75-79][80-84,85-89][90-94,95-99]
' Como realmente, solo hay un marcador, lo que haré será poner los tiles de la máquina, en todos aquellos intervalos cuyos números seán menores que el contador, es decir, que si el marcador esta en un intervalo, ese intervalo y todos los posteriores tendrán el tile del player.
' Durante el script, asignaré a cada intervalo los siguientes números: [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20]


' ----------------------- Base del script -----------------------

#org @Start
setvar 0x(Variable Contador) 0x32 'Si llega a 0 pierdes, si llega a 64 (100) ganas. Empieza en 32 (50), pero siempre es editable.
goto @Lucha

#org @Lucha 'Aquí es donde miramos si la máquina es más rápida que el jugador, la dificultad es fácilmente editable modificando el nº de pause y chekeos que hay y el tiempo de los pause.
pause 0x5
comparefarbytetobyte 0x4000130 0xFE 'Vamos a ver si pulsas "A", aunque podéis poner otra tecla.
if 0x1 goto @Jugador+1
pause 0x5
comparefarbytetobyte 0x4000130 0xFE 'Vamos a ver si pulsas "A", aunque podéis poner otra tecla.
if 0x1 goto @Jugador+1
pause 0x5
comparefarbytetobyte 0x4000130 0xFE 'Vamos a ver si pulsas "A", aunque podéis poner otra tecla.
if 0x1 goto @Jugador+1
pause 0x5
comparefarbytetobyte 0x4000130 0xFE 'Vamos a ver si pulsas "A", aunque podéis poner otra tecla.
if 0x1 goto @Jugador+1
goto @Máquina+1 'Si no pulsas "A" rápido, la máquina se anota el tanto.

' ----------------------- Sumar pts -----------------------

#org @Jugador+1 'Vamos a subarte un tanto.
addvar 0x(Variable Contador) 0x1
compare 0x(Variable Contador) 0x64 'Si llegas al máximo, ganas.
if 0x1 goto @Ganas
goto @Anim 'Aquí cambiaremos los tiles, en caso de querer poner una barrita.

#org @Máquina+1
subvar 0x(Variable Contador) 0x1
compare 0x(Variable Contador) 0x0 'Si llegas al mínimo, pierdes.
if 0x1 goto @Pierdes
goto @Anim 'Aquí cambiaremos los tiles, en caso de querer poner una barrita.

' ----------------------- Script terminado -----------------------

#org @Ganas 'Esto a vuestro gusto.
end

#org @Pierdes 'Esto a vuestro gusto.
end

' ----------------------- Veamos por donde va la barrita -----------------------

#org @Anim
compare 0x(Variable Contador) 0x5 'Si estas en el intervalo 0-4
if 0x0 goto @BarritaEn1
compare 0x(Variable Contador) 0xA 'Si estas en el intervalo 5-9
if 0x0 goto @BarritaEn2
compare 0x(Variable Contador) 0xF 'Si estas en el intervalo 10-14
if 0x0 goto @BarritaEn3
compare 0x(Variable Contador) 0x14 'Si estas en el intervalo 15-19
if 0x0 goto @BarritaEn4
compare 0x(Variable Contador) 0x19 'Si estas en el intervalo 20-24
if 0x0 goto @BarritaEn5
compare 0x(Variable Contador) 0x1E 'Si estas en el intervalo 25-29
if 0x0 goto @BarritaEn5
compare 0x(Variable Contador) 0x23 'Si estas en el intervalo 30-34
if 0x0 goto @BarritaEn5
compare 0x(Variable Contador) 0x28 'Si estas en el intervalo 35-39
if 0x0 goto @BarritaEn8
compare 0x(Variable Contador) 0x2D 'Si estas en el intervalo 40-44
if 0x0 goto @BarritaEn9
compare 0x(Variable Contador) 0x32 'Si estas en el intervalo 45-49
if 0x0 goto @BarritaEn10
compare 0x(Variable Contador) 0x37 'Si estas en el intervalo 50-54
if 0x0 goto @BarritaEn11
compare 0x(Variable Contador) 0x3C 'Si estas en el intervalo 55-59
if 0x0 goto @BarritaEn12
compare 0x(Variable Contador) 0x41 'Si estas en el intervalo 60-64
if 0x0 goto @BarritaEn13
compare 0x(Variable Contador) 0x46 'Si estas en el intervalo 65-69
if 0x0 goto @BarritaEn14
compare 0x(Variable Contador) 0x4B 'Si estas en el intervalo 70-74
if 0x0 goto @BarritaEn15
compare 0x(Variable Contador) 0x50 'Si estas en el intervalo 75-79
if 0x0 goto @BarritaEn16
compare 0x(Variable Contador) 0x55 'Si estas en el intervalo 80-84
if 0x0 goto @BarritaEn17
compare 0x(Variable Contador) 0x5A 'Si estas en el intervalo 85-89
if 0x0 goto @BarritaEn18
compare 0x(Variable Contador) 0x5F 'Si estas en el intervalo 90-94
if 0x0 goto @BarritaEn19
compare 0x(Variable Contador) 0x64 'Si estas en el intervalo 95-99
if 0x0 goto @BarritaEn20

' ----------------------- Vamos a cambiar los tiles -----------------------

#org @BarritaEn1
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn2
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn3
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn4
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn5
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn6
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn7
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn8
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn9
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn10
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn11
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn12
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn13
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn14
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn15
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn16
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn17
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn18
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn19
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha

#org @BarritaEn20
setmaptile 0x 0x 0x 0x
special 0x8E
goto @Lucha



Gracias al usuario [MENTION]cosarara97 [/MENTION] por darse cuenta de un bug del script anterior, bueno, más que un bug es un pequeño truco, pero bueno.
La cosa es que en el anterior script, si mantenéis pulsada la "A", siempre ganáis, pero bueno, aquí esta el script arreglado:

Script "El Pulsatrón" AntiTrampas - Dani_SR_17

Para no descargarlo de nuevo, si queréis podéis cambiar la parte del "@Jugador+1", por esto:

#org @Jugador+1 'Vamos a subarte un tanto.
pause 0x2
comparefarbytetobyte 0x4000130 0xFE 'Vamos a ver si haces trampas
if 0x1 goto @Máquina+1 'Si mantienes la A, le dan tu punto a la máquina.
goto @Jugador+1-2

#org @Jugador+1-2
addvar 0x(Variable Contador) 0x1
compare 0x(Variable Contador) 0x64 'Si llegas al máximo, ganas.
if 0x1 goto @Ganas
goto @Anim 'Aquí cambiaremos los tiles, en caso de querer poner una barrita.

Nota: Si veis que podéis pulsar el botón, soltarlo y volver a pulsarlo en menos de 0,1s, cambiad el pause 0x2 por un pause 0x1.






:cool: Espero que os guste y os sea útil, cualquier duda sobre el script preguntadla :cool:
#1
cosarara97 12296
¿Dónde compruebas si el jugador ha dejado de pulsar A? (es decir, ¿podría aguantar A pulsado para conseguir la puntuación máxima?)
Oh, y creo que te has dejado el script a medio traducir (Player/Jugador)
#2
Dani_SR_17 28493
Iniciado por cosarara97
¿Dónde compruebas si el jugador ha dejado de pulsar A? (es decir, ¿podría aguantar A pulsado para conseguir la puntuación máxima?)
Oh, y creo que te has dejado el script a medio traducir (Player/Jugador)


Gracias por darte cuenta del fallito de mantener la "A", ¿soy tan legal que no lo había pensado?
Ahora lo arreglo.

Y lo de player, bueno, es porque deje el script a medias de un día para otro y como ves cambio de opinión jajaja, ya está solucionado.

-------------------------------------------------

Gracias al usuario [MENTION]cosarara97 [/MENTION] por darse cuenta de un bug del script anterior, bueno, más que un bug es un pequeño truco, pero bueno.
La cosa es que en el anterior script, si mantenéis pulsada la "A", siempre ganáis, pero bueno, aquí esta el script arreglado:

Script "El Pulsatrón" AntiTrampas - Dani_SR_17

Para no descargarlo de nuevo, si queréis podéis cambiar la parte del "@Jugador+1", por esto:

#org @Jugador+1 'Vamos a subarte un tanto.
pause 0x2
comparefarbytetobyte 0x4000130 0xFE 'Vamos a ver si haces trampas
if 0x1 goto @Máquina+1 'Si mantienes la A, le dan tu punto a la máquina.
goto @Jugador+1-2

#org @Jugador+1-2
addvar 0x(Variable Contador) 0x1
compare 0x(Variable Contador) 0x64 'Si llegas al máximo, ganas.
if 0x1 goto @Ganas
goto @Anim 'Aquí cambiaremos los tiles, en caso de querer poner una barrita.

Nota: Si veis que podéis pulsar el botón, soltarlo y volver a pulsarlo en menos de 0,1s, cambiad el pause 0x2 por un pause 0x1.
#3
Guilly Power 27880
Vaaaya, quitaste la trampa, que decepción xD.
Me entere de este script por youtube antes que por la web xD
ME ha encantado. Agrega al juego más minijuegos interesantes (aunque solo sea uno xD)
Otro script más a tu ya grandiosa lista de aportes ;).
Por favor sigue así tio
#4
Megascep_9 Kuchiki 28187
Xd, estaba mejor como antes, con trampa todo es mejor (?)

Vaya, ya lo solucionaste, ahora me dejas más sorprendido, digo, es que no se nada de nada de script tan complejos, lo mio son ''applymovement, msgbox, fadescreen, etc'' XDDDDDDDDDD.

En fin, eres el aprendiz de Javi y su futuro sucesor XD.

Gracias por todos los aportes :)
#5
cosarara97 12296
Iniciado por Dani_SR_17
Gracias por darte cuenta del fallito de mantener la "A", ¿soy tan legal que no lo había pensado?
Ahora lo arreglo.

Y lo de player, bueno, es porque deje el script a medias de un día para otro y como ves cambio de opinión jajaja, ya está solucionado.

-------------------------------------------------

Gracias al usuario [MENTION]cosarara97 [/MENTION] por darse cuenta de un bug del script anterior, bueno, más que un bug es un pequeño truco, pero bueno.
La cosa es que en el anterior script, si mantenéis pulsada la "A", siempre ganáis, pero bueno, aquí esta el script arreglado:

Script "El Pulsatrón" AntiTrampas - Dani_SR_17

Para no descargarlo de nuevo, si queréis podéis cambiar la parte del "@Jugador+1", por esto:

#org @Jugador+1 'Vamos a subarte un tanto.
pause 0x2
comparefarbytetobyte 0x4000130 0xFE 'Vamos a ver si haces trampas
if 0x1 @Máquina+1 'Si mantienes la A, le dan tu punto a la máquina.
goto @Jugador+1-2

#org @Jugador+1-2
addvar 0x(Variable Contador) 0x1
compare 0x(Variable Contador) 0x64 'Si llegas al máximo, ganas.
if 0x1 goto @Ganas
goto @Anim 'Aquí cambiaremos los tiles, en caso de querer poner una barrita.


Me da que ahora está peor xD. Ahora, si no pulsas nada ganas.
Tendrías que mirar si se pulsa y despulsa, las dos cosas.

EDIT: Oh, además hay un error de sintaxis (if 0x1 @Máquina+1). Testea el código a full y cuando lo tengas listo nos lo enseñas xD
#6
PokePika 29340
Creo que con el "arreglo" si mantienes pulsado sumaría a la máquina y a ti a saco. Además, si pulsas muy rápido, tan rápido que si pulsases durante la comprobación también lo daría como malo.
#7
Dani_SR_17 28493
Iniciado por cosarara97
Me da que ahora está peor xD. Ahora, si no pulsas nada ganas.
Tendrías que mirar si se pulsa y despulsa, las dos cosas.

EDIT: Oh, además hay un error de sintaxis (if 0x1 @Máquina+1). Testea el código a full y cuando lo tengas listo nos lo enseñas xD


Lo primero lo contesto abajo.
Otra cagada al copiar del script que tengo en la rom a la base.

Iniciado por PokePika
Creo que con el "arreglo" si mantienes pulsado sumaría a la máquina y a ti a saco. Además, si pulsas muy rápido, tan rápido que si pulsases durante la comprobación también lo daría como malo.


Veamos, el arreglo lo he testeado y funciona bien.
Lo que hace es que tras pulsar la "A", espera 0,1s a volver a comprobar si sigues pulsando la "A", si ve que la sigues pulsando pues en lugar de darte el punto a ti se lo da a la máquina, si ve que ya no lo pulsas pues te da el punto y todo normal.

Si lo miráis bien, solo rectifico la parte de darte un punto a ti, si no pulsas nada la máquina se lleva los puntos.
#8
PokePika 29340
Iniciado por Dani_SR_17
Lo primero lo contesto abajo.
Otra cagada al copiar del script que tengo en la rom a la base.



Veamos, el arreglo lo he testeado y funciona bien.
Lo que hace es que tras pulsar la "A", espera 0,1s a volver a comprobar si sigues pulsando la "A", si ve que la sigues pulsando pues en lugar de darte el punto a ti se lo da a la máquina, si ve que ya no lo pulsas pues te da el punto y todo normal.

Si lo miráis bien, solo rectifico la parte de darte un punto a ti, si no pulsas nada la máquina se lleva los puntos.


Me he tomado la molestia de mirar el lapso de tiempo que puede haber entre pulsación y pulsación y, de 40 muestras, en 5 ocasiones hago menos de una décima de segundo (menos de 0'1s).
Te recomendaría bajar el tiempo, si es posible, del pause, sino perjudicaría en algunos clics.
#9
Dani_SR_17 28493
Iniciado por PokePika
Me he tomado la molestia de mirar el lapso de tiempo que puede haber entre pulsación y pulsación y, de 40 muestras, en 5 ocasiones hago menos de una décima de segundo (menos de 0'1s).
Te recomendaría bajar el tiempo, si es posible, del pause, sino perjudicaría en algunos clics.


Vale, gracias, ahora edito el post, aunque simplemente es cambiar el pause 0x2 por un pause 0x1, que lo reduce a 0,05s.