10027-Escuela_de_Scripts_\[Nivel_Bajo_a_medio]_\[Reinscripciones,_por_falta_de_alumnos]
#5
Cheve_X 15014



Hola alumnos! Tanto tiempo!


Segunda Clase:


En la segunda clase, veremos como hacer un mensaje con pregunta de Si o No.

Como ya sabemos, para ejecutar este tipo de mensajes, es de la siguiente manera:

msgbox 0x[nºde Offset] 0x5

Al escribir un comando de éste tipo, se abrirá una "Ventanita" con las opciones: "Si" "No" o "Yes" "No".

Teoría: Al seleccionar si o no, la ROM archiva un valor temporal, (si=0x1 ; no=0x0) el cual se puede utilizar mediante el comando especial "LASTRESULT" (Traducido "Ultimo Resultado").
Para realizar un script de Si/No, tambien necesitamos saber la utilidad del comando "If", el comando "If" (Traducido "si", ejemplo: si 3x4=6 4x3=6) que lo que hace, es chequear si lo que se ha dicho en el anterior comando es verdad o no... ¿difícil de entender? pues es difícil de explicar '^^
Ejemplo del uso del comando "If":

comparevar 0x4005 0x1234
if 0x1 goto 0x[offset]

checkflag 0x4500
if 0x1 call 0x[Offset]

En los Comandos de aquí arriba, siempre me estoy fijando si estos valores dan 0x1, en el primer caso, si ambas variables son iguales, y en el segundo caso, si la flag expresada está activada.
Cuando demos Variables, veremos formas mas complejas de usar el comando If, pero, a simple vista de los ejemplos, podemos ver que que luego del "if" eh puesto un "call" y un "goto"... ¿Pues... qué son?


call 0x[offset]

Nos envía a un determinado script, secundario al que estabamos trabajando, para usarlo de forma dinámica, es igual que un msgbox:

goto @offset2

pero, a la hora de hacer nuestro script secundario dinámico, es de la siguinete manera. Ejemplo:


...
if 0x1 goto @pointer
...
end

#org @pointer
[Script secundario]
return


Ah! otro script desconocido! Return: Return, este comando se utiliza como el comando "end" (que finaliza el script) pero, es obviamente distinto y se usa solo en scripts secundarios que derivan de un call.
Lo que hace el script al encontrarse con este comando, es seguir el script desde debajo de la linea del call.


Goto: es lo mismo que el call, se usa de la misma forma y para lo mismo, la unica diferencia, es que en el script secundario al que nos lleva este comando, termina en End, y por lo tanto, no regresa al script raiz.

Teoría terminada...

Bueno, os explicaré como encajar todo esto para hacer una pregunta de si o de no.

#DYNAMIC 0x800000
#org 0x[Pointer]
lock
msgbox @smspregunta 0x5
comaprevar LASTRESULT 0x1
if 0x1 call @pointersi
msgbox @smsno 0x2
release
end

#org @pointersi
msgbox @smssi 0x2
end


[En esta parte irian los textos]




Bien! Tarea al paso! [Esto, se llama metodo contructivista, los alumnos deben descubrir qué están haciendo por ellos mismos]

Tarea!


1) Razonar, entender y explicar que hace cada línea, completando los espacios punteados:



#DYNAMIC 0x800000
#org 0x[Pointer]
lock
msgbox @smspregunta 0x5 ..................
comaprevar LASTRESULT 0x1 Pista dada: Compara si el valor de LASTRESULT es de 0x1
if 0x1 call @pointersi ....................... [Esta es la parte más importante]
msgbox @smsno 0x2
release
end

#org @pointersi
msgbox @smssi 0x2
end

2) Agregarle los correspondientes textos al script, y comprovar que esté bien hecho, y así ver si lo que hicieron en el ejercicio 1 está bien hecho.(Quiero ver el video :D )

Tienen hasta el martes 21

Bueno, eso es Todo.

Suerte, Salu2!

Ah! quienes no entregaron su primer tarea, si no la entregan con la segunda quedan ¡FUERA!