Registrarse

[RH - Scripting] Pregunta/respuesta rápida

Estado
Cerrado para nuevas respuestas.

Rogy

2006, de la vieja escuela
Respuesta: Consultorio de dudas de Scripts

Por cierto, me podríais decir que falla en este script? Cuando le doy a las tuercas en el XSE, me dice:
Hay una palabra clave desconocida "n," en la línea 15.
aqui os dejo el script:
(...)
(PD: ya se que el texto @frase no está en una sola línea, que es como tiene que estar, pero eso es por el formato del foro, en el SXE queda en una sola linea, osea que por eso tranquilos que ese no es el fallo. La linea 15 , la del error, es la que os voy a poner en negrita y subrayada):
La línea quince es la siguiente a @frase. De hecho, concuerda con lo que te dice: no reconoce el comando "n,", que es la parte literal de una de las líneas de todo ese libro que llamas @frase ("En fin, aqui te lo dejo todo.").

Código:
#dynamic 0x800000
#org @inicio
checkflag 0x2101
if 0x1 goto @inicio3
checkflag 0x2100
if 0x1 goto @inicio2
msgbox @frase 0x6
givepokemon 0xE4 0x5 0x0 0x0 0x0 0x0
setflag 0x800
setflag 0x860
setflag 0x2100
end
#org @frase
= Te estaba esperando, recluta.\nMe llamo Truck, y soy el\lcomandante de la sección A de\lNoxux.\lComo ya te habrá dicho Giovanni,\lte daré un pokémon y un par de\lcosas más para que puedas empezar\la trabajar para nosotros.\lNormalmente, a los reclutas les\ldamos un poochyena cualquiera,\lpero Giovanni insistió en que te\ldiera un buen pokémon, así que\laqui tienes. Cuídalo bien, es la\lcría de mi primer pokémon.\lTambién te daré esto, son unas\ldeportivas sigilosas. Ah!, y casi\lse me olvida: Toma, Un PokeCheck.\l¿Que qué es un pokécheck, dices?\lEs un aparato parecido a una\lpokédex, cuya diferencia es que\lsolo te muestra los datos de los\lpokémon cuando los capturas, luego\lno los podrás consultar.\lEn fin, aqui te lo dejo todo.\lTu primera misión será de\lreconocimiento. Hace una hora que\lmandé a un recluta a por una\lplanta muy importante para una\linvestigación. Ve y comprueba que\lno hay policias dandole problemas.
#org @inicio2
msgbox @frase2 0x6
applymovement 0x3 @mov1
setflag 0x2101
end
#org @mov1
#raw 0x96
#raw 0x3
#org @frase2
= Venga, andando
#org @inicio3
msgbox @frase3
end
#org @frase3
= Ya te he dejado el camino libre,¿a\nqué esperas?
Si no te funciona es que XSE tiene un límite de caracteres por línea y lo interpreta como otra línea, que no lo sé seguro.
La cosa es que no debería ser un problema porque no se suelen hacer mensajes tan largos, no son amigables con el jugador. Por eso normalmente, cuando te cuentan una historia larga en un juego, suele haber efectos y diversas cosas, para no aburrir al jugador, y aún así a veces aburren.

Si no te compila, entonces divide el texto @frase en varios y haz varios msgbox.

Saludos.

PD: No he mirado si compila ni si tiene más errores, eso ya es problema tuyo, me he centrado en el error de compilación que te falla.
 
Respuesta: Consultorio de dudas de Scripts

buenas tengo un problema con este script no compila y sale error en el "compare"
dice:fata#define
eh aqui el script.

#dynamic 800000
#org @inicio
lockall
setvar 0x40FF 0x0
goto @done
#org @done
setvar 0x5000 0x0
setvar 0x5001 0x1
special 0x174
textcolor 0x0
pause 0x20
preparemsg @text1
waitmsg
pause 0x55
closeonkeypress
applymovement MOVE_PLAYER @move1
sound 0x15
applymovement MOVE_PLAYER @move2
waitmovement 0x0
pause 0x1E
showsprite 0x3
compare @var1 0x0
if 0x1 call @var2
compare @var1 0x1
if 0x1 call @var3
pause 0x1E
msgbox @text2 MSG_KEEPOPEN
closeonkeypress
pause 0x1E
applymovement MOVE_PLAYER @move3
waitmovement 0x0
setvar 5002 0x1
clearflag 0x2C
setvar 5003 0x1
setflag 0x2C
setflag 0x4001
warp 0x3 0x0 0x1 0x6 0x7
waitstate
releaseall
end
#org @var2
applymovement MOVE_PLAYER @move4
waitmovement 0x0
return
#org @text1
= ¡Eh! !Se me ha hecho tarde!
#org @text2
= !Debo ir por mi Primer POKéMON!
#org @move1
#raw 0x0 'Face Down
#raw 0x1 'Face Up
#raw 0x2 'Face Left
#raw 0x3 'Face Right
#raw 0xFE 'End of Movements
#org @move2
#raw 0x62 'Exclamation Mark (!)
#raw 0x60 'Hide
#raw 0xFE 'End of Movements
#org @move3
#raw 0x60 'Hide
#raw 0xFE 'End of Movements
#org @move4
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0xFE 'End of Movements


todavia no está completo y creo que hay mas errores ademas de ese , gracias de antemano :)
EDIT: ya pude compilar pero el script no me funciona cuando deberia hacer algo se congela
EDIT2: la idea del script es hacer que el jugador mire a las cuatro direcciones, luego muestre un signo de interrogacion con el texto , luego camine , llegue a una escalera y se transporte afuera de la casa o en el Lab de Oak (estoy con la version FR)
 
C

Chuckles el Cerdito

Invitado
Respuesta: Consultorio de dudas de Scripts

Es porque las variables no son punteros (@var1, @var2, etc), sino que son números xDD.
Ejemplo: 40FF, 40FE, 4050, etc.
Busca variables libres para la rom base que utilizas (Google o buscador de WaH).
 

Javi4315

Babyface
Miembro de honor
Respuesta: Consultorio de dudas de Scripts

-Hay algun script de dia y noche para pokémon rubi ?
Esa es mi pregunta :D
Eso no es un script. Son rutinas ASM. Lo que tienes que hacer es bajarte la herramienta que las inserta (DNS diría que es la mejor). Si luego lo que quieres hacer es que se iluminen las ventanas, debes hacer scripts de nivel en todos los mapas para que comprueben la hora que es y, en caso de que procediera, cambiar las ventanas apagadas a otras iluminadas.
 

Sayer301!

UnityLord!
Miembro de honor
Respuesta: Consultorio de dudas de Scripts

Bueno, en este script se supone que cuando termine el primer @start te deberias poder mover, y el caso es que se me queda pillado, la musica sigue pero no puedo mover al prota ni nada. ¿Que hago mal?

PD: Es un script de nivel
Código:
#dynamic 0x800000

#org @start
lock
compare 0x40F7 0x1
if 0x1 goto @snippet1
applymovement MOVE_PLAYER @move1
waitmovement 0xFF
applymovement 0x1 @move2
sound 0x15
waitmovement 0x1
msgbox @string1 MSG_NORMAL '"Mamá: Hay que ver que lento eres."
applymovement 0x1 @move3
waitmovement 0x1
msgbox @string2 MSG_NORMAL '"Mamá: Felicidades cariño.\p[player..."
setvar 0x40FC 0x1
setvar 0x40F6 0x1
setvar 0x40F7 0x1
release
end

#org @snippet1
checkflag 0x82F
if 0x1 goto @snippet2
release
end

#org @snippet2
applymovement MOVE_PLAYER @move4
applymovement 0x1 @move5
sound 0x15
waitmovement 0x0
msgbox @string3 MSG_NORMAL '"Mamá: ¿Te gustan tus nuevas\nzapat..."
applymovement 0x1 @move6
waitmovement 0x0
setvar 0x40F6 0x0
setvar 0x40FA 0x1
release
end

#org @string1
= Mamá: Hay que ver que lento eres.

#org @string2
= Mamá: Felicidades cariño.\p[player]: Gracias mamá.\pMamá:He encargado tu tarta\nfavorita para la fiesta de esta\ltarde.\p[player]:¿Ya estamos con la\nfiesta otra vez? Te dije que no\lquería fiestas, que hoy me iría de\laventuras como Ace.\pMamá: Me da igual. ¿Por cierto,\nsabes algo de él?\p[player]: No, desde su último\nmensaje hace 2 meses no se nada.\pMamá: Que raro, con lo puntual que\nes siempre con su carta\lmensual ...  Bueno, no me cambien de\ltema.\p[player] : Pero si has sido\ntú.\pMamá: No me lleves la contraria,\ntu hoy te quedas. Con lo que me ha\lcostado organizar la fiesta ... \p[player]:Ya veremos.\pMamá: Bueno ... , sube a mi\nhabitación, te he dejado tu regalo\lallí.

#org @string3
= Mamá: ¿Te gustan tus nuevas\nzapatillas?\p[player]: Claro mamá, son\ngeniales ... \pMamá: Bueno, pues no te vayas muy\nlejos que dentro de poco empezará\la venir la gente.\p[player] pensando: Aprobecharé\nla mínima para escaparme.\l[player]: Vale mamá.

#org @move1
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0xFE 'End of Movements

#org @move2
#raw 0x4A 'Face Player
#raw 0x62 'Exclamation Mark (!)
#raw 0xFE 'End of Movements

#org @move3
#raw 0x10 'Step Down (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x2'Mirar Izquierda
#raw 0xFE 'End of Movements

#org @move4
#raw 0x0 'Face Down
#raw 0xFE 'End of Movements

#org @move5
#raw 0x63 'Question Mark (?)
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @move6
#raw 0x10 'Step Down (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x2D 'Face Down (Delayed)
#raw 0xFE 'End of Movements
 

Javi4315

Babyface
Miembro de honor
Respuesta: Consultorio de dudas de Scripts

Bueno, en este script se supone que cuando termine el primer @start te deberias poder mover, y el caso es que se me queda pillado, la musica sigue pero no puedo mover al prota ni nada. ¿Que hago mal?

PD: Es un script de nivel
Código:
#dynamic 0x800000

#org @start
lock
compare 0x40F7 0x1
if 0x1 goto @snippet1
applymovement MOVE_PLAYER @move1
waitmovement 0xFF
applymovement 0x1 @move2
sound 0x15
waitmovement 0x1
msgbox @string1 MSG_NORMAL '"Mamá: Hay que ver que lento eres."
applymovement 0x1 @move3
waitmovement 0x1
msgbox @string2 MSG_NORMAL '"Mamá: Felicidades cariño.\p[player..."
setvar 0x40FC 0x1
setvar 0x40F6 0x1
setvar 0x40F7 0x1
release
end

#org @snippet1
checkflag 0x82F
if 0x1 goto @snippet2
release
end

#org @snippet2
applymovement MOVE_PLAYER @move4
applymovement 0x1 @move5
sound 0x15
waitmovement 0x0
msgbox @string3 MSG_NORMAL '"Mamá: ¿Te gustan tus nuevas\nzapat..."
applymovement 0x1 @move6
waitmovement 0x0
setvar 0x40F6 0x0
setvar 0x40FA 0x1
release
end

#org @string1
= Mamá: Hay que ver que lento eres.

#org @string2
= Mamá: Felicidades cariño.\p[player]: Gracias mamá.\pMamá:He encargado tu tarta\nfavorita para la fiesta de esta\ltarde.\p[player]:¿Ya estamos con la\nfiesta otra vez? Te dije que no\lquería fiestas, que hoy me iría de\laventuras como Ace.\pMamá: Me da igual. ¿Por cierto,\nsabes algo de él?\p[player]: No, desde su último\nmensaje hace 2 meses no se nada.\pMamá: Que raro, con lo puntual que\nes siempre con su carta\lmensual ...  Bueno, no me cambien de\ltema.\p[player] : Pero si has sido\ntú.\pMamá: No me lleves la contraria,\ntu hoy te quedas. Con lo que me ha\lcostado organizar la fiesta ... \p[player]:Ya veremos.\pMamá: Bueno ... , sube a mi\nhabitación, te he dejado tu regalo\lallí.

#org @string3
= Mamá: ¿Te gustan tus nuevas\nzapatillas?\p[player]: Claro mamá, son\ngeniales ... \pMamá: Bueno, pues no te vayas muy\nlejos que dentro de poco empezará\la venir la gente.\p[player] pensando: Aprobecharé\nla mínima para escaparme.\l[player]: Vale mamá.

#org @move1
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0xFE 'End of Movements

#org @move2
#raw 0x4A 'Face Player
#raw 0x62 'Exclamation Mark (!)
#raw 0xFE 'End of Movements

#org @move3
#raw 0x10 'Step Down (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x2'Mirar Izquierda
#raw 0xFE 'End of Movements

#org @move4
#raw 0x0 'Face Down
#raw 0xFE 'End of Movements

#org @move5
#raw 0x63 'Question Mark (?)
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @move6
#raw 0x10 'Step Down (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x2D 'Face Down (Delayed)
#raw 0xFE 'End of Movements
Pero a ver... ¿Dónde acaba exactamente el script? Me refiero a si sólo se ejecuta el start o te lleva a algún otro puntero porque ya está activada la variable. Lo digo porque el script en sí lo veo bien. Así que tengo dos teorías:

1) Haya algún script de nivel o algo en un script de nivel a lo que afecte alguna variable que activas en este script.

2) Haya algo en algún texto o movimiento que esté dando el problema.

EDITO: ¿Qué variable estás usando para que se ejecute el script?
 

Jo7a

Kiero mi nick amarillo D:
Respuesta: Consultorio de dudas de Scripts

Bueno, en este script se supone que cuando termine el primer @start te deberias poder mover, y el caso es que se me queda pillado, la musica sigue pero no puedo mover al prota ni nada. ¿Que hago mal?
Pero el script se ejecuta por completo antes de que se quede pillado?
Puede que sea por que no has echo el paso final de algunos scipts de nivel.
Lo de abrir el cabezal, en modo profesional, abrir el offset que sale en "map script offset" y abrirlo en XSE como script de nivel para descompilarlo y compilarlo de nuevo.
 

Sayer301!

UnityLord!
Miembro de honor
Respuesta: Consultorio de dudas de Scripts

Javi4315♪;209233 dijo:
Pero a ver... ¿Dónde acaba exactamente el script? Me refiero a si sólo se ejecuta el start o te lleva a algún otro puntero porque ya está activada la variable. Lo digo porque el script en sí lo veo bien. Así que tengo dos teorías:

1) Haya algún script de nivel o algo en un script de nivel a lo que afecte alguna variable que activas en este script.

2) Haya algo en algún texto o movimiento que esté dando el problema.

EDITO: ¿Qué variable estás usando para que se ejecute el script?
1)Que yo sepa no, la 40FC es para una segunda parte en otro script que antes me funcionaba, pero como ahora no termina este nose si va o no XD. La 40F6 activa unos script de gatillo para que no puedas huir por la puerta. y la 40F7 es para que si subes y bajas las escaleras de la casa sin coger las zapatillas no se repita el script de nivel, pero que dure hasta que las haya cogido. No se si me explico.

2)Los movimientos y los textos se ejecutan, al terminar todos los textos del @start y los movimientos es cuando se bloquea.

EDit: Estoy usando la 40FA

Pero el script se ejecuta por completo antes de que se quede pillado?
Puede que sea por que no has echo el paso final de algunos scipts de nivel.
Lo de abrir el cabezal, en modo profesional, abrir el offset que sale en "map script offset" y abrirlo en XSE como script de nivel para descompilarlo y compilarlo de nuevo.
Se ejecuta la parte que se tendria que ejecutar en ese momento, es decir el primer @start. Y ahí se me queda calado.
Ese paso si y no, cuando lo hago y lo voy a volver a compilar me dice que no especificque la dirección dinámica. Pero nose no entiendo. ¿Puede ser eso?
 

HollowRoxas

Namine... What's happening to me...?
Respuesta: Consultorio de dudas de Scripts

Mi duda es esta ¿como puedo hacer scripts de horario?, es decir que se ejecuten a cierta hora.
Como por ejemplo el de rotom en D/P/P que solo se ejecuta cuando es de noche.
 

Javi4315

Babyface
Miembro de honor
Respuesta: Consultorio de dudas de Scripts

Mi duda es esta ¿como puedo hacer scripts de horario?, es decir que se ejecuten a cierta hora.
Como por ejemplo el de rotom en D/P/P que solo se ejecuta cuando es de noche.
No sé cuál es ese script, así que no te puedo detallar mucho. Pero básicamente insertas el sistema día/noche. Luego pones un script (generalmente de nivel, de pende del evento que sea) en el que compruebas la hora leyéndola en la RAM y, dependiendo de cuál sea, que pase una cosa u otra. El offset en la RAM te lo especifica la herramienta del sistema día/noche, o al menos el DNS sí lo hace.
 
Respuesta: Consultorio de dudas de Scripts

Mi duda es esta ¿como puedo hacer scripts de horario?, es decir que se ejecuten a cierta hora.
Como por ejemplo el de rotom en D/P/P que solo se ejecuta cuando es de noche.
Usando en DNS, en un script de XSE escribes lo siguiente:

comparefarbytetobyte 0xDireccion del DNS 0xVariable
if 0x? goto 0x


para saber en cual dirección esta guardado el DNS, le das abrir a tu room y ahi te marca la dirección "The time will be written to 0xDirección", debajo te marca el número de bytes para cada parametro, si quieres usar las horas, entonces ves cuantos bytes necesitas para llegar a ese parametro, para el ejemplo de horas, "year 2bytes, day of week 1byte, month 1byte, 0x0 1byte" todo eso esta antes de "hour" osea hora, asi que tienes que sumar esos bytes y agregarselos a la dirección.

Por ejemplo si tu dirección es 3005305C y si quieres usar el parametro de horas, entonces primero sumas los bytes antes de llegar a "Hour" osea "year 2bytes, day of week 1byte, month 1byte, 0x0 1byte"
son 5bytes, asi que tu dirección sería 3005305C + 5 lo que de 30053061, entonces en tu script pondras

comparefarbytetobyte 0x30053061 0xVariable
if 0x? goto 0x

Ahora, el "variable", pondras en este caso la hora que quieres verificar, por ejemplo si quieres que algo pase solo a las 7pm, 7pm = 19horas, 19 en Hexadecimal es 13, entonces tu script queda asi

comparefarbytetobyte 0x30053061 0x13
if 0x1 goto 0xOffset de lo que pasa a las 7pm
"aqui pones lo que quieras que pase si no es 7pm"
end

El 0x1 quiere decir que solo te mandara a ese Offset si son las 19horas/7pm. Tambien puedes cambiar los parametro cambiando ese 0x1 por uno de estos:

(0x0) Menor que
(0x1) Igual a
(0x2) Mayor que
(0x3) Menor o Igual a
(0x4) Mayor o Igual a
(0x5) No exactamente igual a

Asi ya puedes ser mas especifico en cuanto los eventos de tiempo.
Por ejemplo, ver si es de noche, suponiendo que "noche" es 7pm a 4am, primero poner un 0x3 para ver si es antes de que sea de "mañana" para que cuente entre 1am y 4am, si es mas tarde que eso poner un 0x4 para ver si son las 7pm o mas tarde, si es asi ya te manda al evento.

0xOffsetA
comparefarbytetobyte 0x30053061 0x4 'verificar si son las 4am
if 0x3 goto 0xOffsetC 'si es igual o menor a 4am te manda al evento.
goto 0xOffsetB si es más de las 4am, te manda a otro offset.
end

0xOffsetB
comparefarbytetobyte 0x30053061 0x13 'ver si son 7pm
if 0x4 goto 0xOffsetC ' si es igual o mayor a 7pm te manda al evento.
goto 0xOffsetD 'Si no es de "noche" te mandan a aquí.
end

0xOffsetC
Evento de noche

0xOffsetD
lo que pasa cuando no sea de noche.

Espero que te ayude. Suerte.
 
Respuesta: Consultorio de dudas de Scripts

Saludos, soy nuevo. Estoy elabronado un hack de pokemon base rojo fuego para mi novio estas navidades. Si bien el tema del scripting no es mi fuerte asi que me preguntaba si podiais resolver el asunto. Me gustaría que al llegar a un punto sea transportado a un mapa como si estuviese soñando (se que la función Warp lo transportaria), pero antes que tuviese efectos de pantallazos blancos o similares.
Espero que este sea el lugar correcto, y gracias por vuestra atención.
 

Pickachusta

Scripter
Saludos, soy nuevo. Estoy elabronado un hack de pokemon base rojo fuego para mi novio estas navidades. Si bien el tema del scripting no es mi fuerte asi que me preguntaba si podiais resolver el asunto. Me gustaría que al llegar a un punto sea transportado a un mapa como si estuviese soñando (se que la función Warp lo transportaria), pero antes que tuviese efectos de pantallazos blancos o similares.
Espero que este sea el lugar correcto, y gracias por vuestra atención.
Bueno pues para el pantallazo puedes usar el comando fadescreen:

fadescreen 0x1 (pantallazo negro)
pause 0x20 (20 equivale a 1 seg.)

puedes usar 0x0 para un pantallazo blanco!!!
 

HollowRoxas

Namine... What's happening to me...?
Respuesta: Consultorio de dudas de Scripts

También podrías usar facescreen 0x3 este da un efecto de flash, suele quedar bastante bien es escenas así.
 
Respuesta: Consultorio de dudas de Scripts

OK gracias pro las respuestas tan prontas.
Y para meterle dialogo, "\v\h01 despierta, vamos..." o algo asi, como seria todo junto que no lo veo.

#dynamic 0x800000

#org @inicio
lock
faceplayer
facescreen 0x3 ó fadescreen 0x1
pause 0x20
msgbox @frase 0x6
warp 0x 0x 0x 0x 0x
release
end

#org @frase
Apretar Ctrl + T

Seria asi??
 

HollowRoxas

Namine... What's happening to me...?
Respuesta: Consultorio de dudas de Scripts

OK gracias pro las respuestas tan prontas.
Y para meterle dialogo, "\v\h01 despierta, vamos..." o algo asi, como seria todo junto que no lo veo.

#dynamic 0x800000

#org @inicio
lock
faceplayer
facescreen 0x3 ó fadescreen 0x1
pause 0x20
msgbox @frase 0x6
warp 0x 0x 0x 0x 0x
release
end

#org @frase
Apretar Ctrl + T

Seria asi??
Seria mas o menos así
#dynamic 0x800000

#org @inicio
lock
faceplayer
facescreen 0x3 ó fadescreen 0x1
pause 0x20
fadescreen 0x0
msgbox @frase 0x6
warp 0x 0x 0x 0x 0x
release
end

#org @frase
Apretar Ctrl + T
 
Respuesta: Consultorio de dudas de Scripts

Por un sencillo reglon casi la pifio. Dar las gracias por el foro y a todos los que me ayudaron, sigan asi que muchos os los agradecemos.
 

GeovaneFR

Soy demasiado lindo! :3
Respuesta: Consultorio de dudas de Scripts

Mi duda es: ¿Cuál es el comando RANDOM en xse y cómo se usa?
Desde ahora, gracias!
 

Javi4315

Babyface
Miembro de honor
Respuesta: Consultorio de dudas de Scripts

Mi duda es: ¿Cuál es el comando RANDOM en xse y cómo se usa?
Desde ahora, gracias!
El comando random sirve para guardar un valor aleatorio en la variable LASTRESULT. Tiene un único parámetro que es el que determina el número de posibilidades. Por ejemplo, "random 0xA" generaría un valor aleatorio que tendría 10 posibilidades (A en decimal es 10), por lo tanto, como 0 es el primer valor que puede generar, el máximo será 9 (del 0 al 9 contando ambos son 10 valores, que es lo que nosotros pusimos en el parámetro).

Ese es el funcionamiento del comando en sí. Ahora se pueden hacer muchas cosas con él. Pero generalmente lo que se hace es poner unas condiciones para que pasen cosas de manera aleatoria. Por ejemplo, imagina que quieres que al hablar con alguien te diga algo, pero que ese algo sea aleatorio entre tres posibilidades. Pues lo pondrías así:

#org @(pointer inicial)
lock
faceplayer
random 0x3 '(tres posibilidades; del 0 al 2)
compare LASTRESULT 0x0
if 0x1 goto @text0
compare LASTRESULT 0x1
if 0x1 goto @text1
compare LASTRESULT 0x2
if 0x1 goto @text3
end

#org @text0
msgbox @1 0x6
release
end

#org @text1
msgbox @2 0x6
release
end

#org @text2
msgbox @3 0x6
release
end

#org @1
= Texto 1

#org @2
= Texto 2

#org @3
= Texto 3
La clave aquí sería lo de "compare LASTRESULT 0x(valor)". Como hemos dicho, queremos 3 posibilidades, por eso utilizamos "random 0x3". De esta forma se genera un número entre 0 y 2 (0, 1 o 3, obviamente). Entonces si ponemos esto:

compare LASTRESULT 0x0
if 0x1 goto @(pointer)
Estamos diciendo en castellano:

comprobar si el valor de LASTRESULT es 0
Si lo es, ir a @(pointer)
Comprobar si el valor es 0, 1, 2, 3FA... El valor que sea, siempre dependiendo de las posibilidades que quieras que tenga el comando.

Bueno, eso es todo, creo que está bien explicado, pero si no entiendes algo, dímelo. No obstante, te he explicado esto que es lo más normal que se hace con el comando random, pero puede que lo quieras utilizar para alguna otra cosa que se te haya ocurrido. Si es así y necesitas ayuda, debes dar más detalles.
 
Estado
Cerrado para nuevas respuestas.
Arriba