Registrarse

[RH - Scripting] [NOTAS] Género / Yes-No

Estado
Cerrado para nuevas respuestas.

Xabier2012

Usuario mítico

Esta tarea era sencilla. Simplemente primero había que comparar una variable para saber si ya nos ha dicho el género, y en caso de que nos lo hayan dicho diría otra frase. Luego había que poner un msgbox de tipo 0x5, y un checkgender seguido de un compare lastresult para hacer la condición de si es chico o chica, luego cambiar la variable para que al principio del script detecte que ya nos han dicho el género.

Un ejemplo del ejercicio bien hecho sería este:

Código:
#dynamic 0x800000

#org @inicio
compare 0x401D 0x0
if 0x1 goto @genero
msgbox @texto6 0x6 
release
end

#org @genero
lock
faceplayer
msgbox @texto1 0x5
compare lastresult 0x1
if 0x1 goto @si
msgbox @texto2 0x6
release 
end

#org @si 
msgbox @texto3 0x6
setvar 0x401D 0x1 
checkgender
if 0x1 goto @chico
msgbox @texto4 0x6
release
end

#org @chico
msgbox @texto5 0x6
release
end

#org @texto1
= ¿Quieres saber tu género?

#org @texto2
= ¿No tienes inquietud por saber\nque eres?

#org @texto3
= Espera un momento, estoy\ninspeccionando.

#org @texto4
= Tengo el resultado, eres...\n¡Una chica!\l

#org @texto5
= Tengo el resultado, eres...\n¡Un chico!

#org @texto6
= Ahora no tengo ganas de hablar
Ahora procederé a deciros vuestra nota:

@~Nozz~
No entregado

@♦ZeØn♦
Nota=4.75 Todo correcto, pero has duplicado los comandos faceplayer y lock, que con ponerlos al principio del script ya hubiera bastado, y también has gastado espacio libre poniendo un "goto" en caso de que fuera chica. Con poner las líneas de código de la chica abajo de la condición para ir al offset de si es chico hubiera bastado

@jfem
Nota=5 perfecto. Lo único que el setvar con ponerlo antes de checkgender te hubieras ahorrado un línea de código.

@Toni
Nota=4.75 Aparte de lo que le acabo de decir a jfem, has cometido un error muy tonto. En caso de que nos diga el texto porque ya nos ha dicho el género, no nos mirará a la cara ni habrá "lock" porque los has puesto en el #org @genero. Tendrías que haberlos puesto justo al principio del script.

@Tervaxx
Nota=5+ Perfecto. Aunque me sorprende que si pones un faceplayer después utilices msgbox de tipo 0x2. De todas formas la síntasis y la eficiencia del script son perfectas.

@RafaSc3
Nota=No entregado

@Luna
Nota=4.75 Está correcto, pero te ha pasado lo mismo que ha Toni. En caso de que nos diga el texto porque ya nos ha dicho el género, no nos mirará a la cara ni habrá "lock" porque los has puesto en el #org @genero. Tendrías que haberlos puesto justo al principio del script.

@rdoble
Nota=4.75 Lo has hecho bien pero has cometido algunos errores de eficiencia. Primero has duplicado los comandos de faceplayer y lock, cuando si los pones al principio bastan. Y después de comprobar si has dicho si o no, no hace falta que pongas if 0x5 goto @no, con poner simplemente el código de @no debajo y con poner goto @no basta. Ya que si no se cumple el primer if, se da por supuesto que es la opción contraria y poner otra condición es redundante.

@Neon Skylar
Nota=Se pira de la escuela

@AwesomeCS
Nota=5 perfecto, pero se puede mejorar la estructura tal cual le he dicho a rdoble: "después de comprobar si has dicho si o no, no hace falta que pongas if 0x5 goto @no, con poner simplemente el código de @no debajo y con poner goto @no basta. Ya que si no se cumple el primer if, se da por supuesto que es la opción contraria y poner otra condición es redundante.
"

@LluviaElemental
Nota=No entregado

@Axnez
Nota=3 No has entendido bien el funcionamiento del lastresult, pero curiosamente el script funciona más o menos con algún que otro fallo así que no te voy a poner menos de un tres.

La función del lastresult es sustituir a la última variable modificada. y en tu script la única variable que modificas en las 800D, que es la variable que se modifica con el checkgender. Cuando pones setvar lastresult 0x2, le estás dando el valor 2 a la variable 800D, y por eso cuando vuelves a hablar como vuelves a comparar con el lastresult no se cumple la condición y te manda al texto de ya haber hablado, que era lo que pedía el ejercicio. Pero piensa que si tu en otro script pones un checkgender, la variable 800D volverá a 0, y si hablas con este script te volverá a preguntar si quieres saber tu género. Con esto quiero decir que tendrías que haber utilizado una variable normal y libre del juego, como la 40FF, y cambiándole el valor a esta para que no vuelva a preguntarte. El lastresult es mejor solo utilizarlo después de comandos como el checkgender, o el msgbox 0x5, para no tenernos que aprender la variable que se ha modificado al usar estos comandos. Pero si sustituyes todas tus variables por lastresult, al final te dará problemas y algún que otro bug.

Por ejemplo, si yo hablo antes con otro script el cual me ha modificado la variable 4000 a 0x2, si después hablo con con tu script me dirá el @texto2 porque el lastresult será la variable 4000 que está a 0x2, ya que el lastresult coge la última variable modificada. Entonces habría un bug.

@KaycerWolf
Nota=no entregado
@AlexanderWWE
Nota=2.5 Otro que la ha liado de buena manera. De hecho, posiblemente has copiado el script de Axnez y así de mal te ha ido. Voy a mencionarte lo que le acabo de decir, porque es un error bastante importante: "La función del lastresult es sustituir a la última variable modificada. y en tu script la única variable que modificas en las 800D, que es la variable que se modifica con el checkgender. Cuando pones setvar lastresult 0x2, le estás dando el valor 2 a la variable 800D, y por eso cuando vuelves a hablar como vuelves a comparar con el lastresult no se cumple la condición y te manda al texto de ya haber hablado, que era lo que pedía el ejercicio. Pero piensa que si tu en otro script pones un checkgender, la variable 800D volverá a 0, y si hablas con este script te volverá a preguntar si quieres saber tu género. Con esto quiero decir que tendrías que haber utilizado una variable normal y libre del juego, como la 40FF, y cambiándole el valor a esta para que no vuelva a preguntarte. El lastresult es mejor solo utilizarlo después de comandos como el checkgender, o el msgbox 0x5, para no tenernos que aprender la variable que se ha modificado al usar estos comandos. Pero si sustituyes todas tus variables por lastresult, al final te dará problemas y algún que otro bug.

Por ejemplo, si yo hablo antes con otro script el cual me ha modificado la variable 4000 a 0x2, si después hablo con con tu script me dirá el @texto2 porque el lastresult será la variable 4000 que está a 0x2, ya que el lastresult coge la última variable modificada. Entonces habría un bug. "
 
Estado
Cerrado para nuevas respuestas.
Arriba