Jump to content

Más en DLAN: Nuestras Traducciones | Otras Traducciones | Mods y modding | Revisiones y Guías | Videojuegos | Arte | Literatura | Rol y Rol por foro e IRC | Mapa de la web

Escenas del scripting


No replies to this topic

#1

  • Invitado

Posted 10 September 2003 - 08:12 AM

INTRODUCCIÓN


Scripts de escena son lo que ves en el juego cuando no puedes hacer click en la pantalla. Durante las escenas, los personajes y otras cosas pueden hacer acciones sin miedo a interrupcione por el Jugados. Esto es simplemente un vistazo general y cubre algunas cosas que pueden ocasionarte problemas.



COMO ESTA CONSTRUIDA UNA ESCENA


Lo que sigue es la forma general que adopta una escena. Suele tener dos o más scripts. El primer script suele tener las siguientes acciones, al final de las cuales empieza la AUTENTICA escena...



IF
Aqui_va_el_Triggers_o_Activador()
THEN
RESPONSE#100
ClearAllActions() // Ver Nota #1
StartCutSceneMode() // Ver Nota #2
StartCutScene("SCRIPT") // Ver Nota #3
END




Notas:

1. Esto es opcional, pero te aseguras que cualquier acción realizada por los personajes o criaturas es cancelada antes de que la escena comienze.
2. Esta acción hace que el jugados no pueda hacer click en la pantalla.
3. Esta acción se refiera al Segundo script, el cual es el que realiza la escena.



Bien, ahora viene el formato general del Segundo script que se encarga de realizar las acciones de la escena.

IF
True() //Ver Nota #4
THEN
RESPONSE#100
CutSceneID(Object) // Ver Nota #5
AccionesAqui()
EndCutSceneMode() // Ver Nota #6
END




4. De cualquier forma este trigger se lee siempre como true (verdadero), por lo que lo puedes hacer de forma muy simple.
5. Esta acción (Si realmente se le puede llamar acción) debe ser especificada siempre al comienzo de un script de escena. Explica quien esta realizando la acción que le sigue.
6. Esta es bastante sidnificativa. Hace que el modo escena termine y el jugador pueda hacer clic de nuevo en la pantalla.



ACCIONES


Las acciones en un script de escena son más bien extrañas (o logicas, lo que prefieras) en como funcionan. Tratare de explicarlas lo mejor que pueda.




Primero, trataré la acción más frecuente en un script de escena, ActionOverride(). ActionOverride() especifica un actor y le dice que haga una acción. Por lo tanto, en una escena, aparecera más o menos asi...


IF
True()
THEN
RESPONSE#100
CutSceneID(Player1)
ActionOverride("TROLL",Kill(Myself)) // Ver Nota #7 (Ver nota traductor)
EndCutSceneMode()
END




7. Esta acción tiene al Player1 (el que controla la escena) que dice al "TROLL" que se mate a si mismo.

Nota Traductor: No he traducido Player1(Jugador1) y Myself(yo mismo) por no saber si son codigos o no.

Tambien, ActionOverride() puede ser una mala cosa para usar. Por ejemplo, la acción PlayDead() es una que no quieres usar conjuntamente con ActionOverride(). Aquí esta el motivo:




IF
True()
THEN
RESPONSE#100
CutSceneID(Player1)
ActionOverride("TROLL",PlayDead(180)) // Ver Nota #8
MoveToObject("TROLL") //Ver Note #8
END




8. En este script, justo despues de que el Player1 le diga al "TROLL" que haga la acción de morirse, él debería moverse hasta el "TROLL." De cualquier forma, no lo hace. Con esta combinación, el Player1 solo se movera hasta el "TROLL" después de qu la acción PlayDead() este completa. Esto es porque el Player1 debe controlar ambas acciones, la del "TROLL" y la suya. Te preguntarás como puedes arreglar esto. Es muy sencillo. Con multiples sentencias IF-THEN CutSceneID(). Asi es como debería aparecer...



IF
True()
THEN
RESPONSE#100
CutSceneID("TROLL")
PlayDead(180)
END

IF
True() THEN
RESPONSE#100
CutSceneID(Player1)
MoveToObject("TROLL")
END




Esta combinación de sentencias hace que el "TROLL" se muera mientras que al mismo tiempo el Player1 se hacerca a él.


EJEMPLO

De acuerdo, ahora vamos a ponernos a ello. Haremos un script de escena rápido que transporta a tu grupo a un área dada. Esto es lo que queremos como resultado final. Queremos ser transportados a un area sin interrupciones. La pantalla se volverá negra, y los jugadores se teletransportaran al area simultaneamente. Si no es simultáneamente, entonces la escena no funcionará bien. Una vez alli, la pantalla pasará del Negro al normal. Vamos a ello...



Primero, necesitamos una sentencia que haga comenzar el script de escena. Este debe ser colocado en algo como un script de area, un script de criatura, o cualquier otro. Siempre que se cumplan las condiciones, debería funcionar.



IF
Activador() //sentencia que activa la condición.
THEN
RESPONSE#100
ClearAllActions() StartCutSceneMode() StartCutScene("CUTMOVE") END



Aquí va el Segundo script. Este ejecuta el movimiento de área. Una vez hecho, compilarlo como CUTMOVE.bcs (por el ejemplo). En este script, te permito elegir el área, coordenadas y la dirección de encaramiento. Así que, encuentra un área y unas coordenadas aleatorias si no tienes mucho tiempo.



IF
True()
THEN
RESPONSE#100
CutSceneID(Player1)
FadeToColor([20.0],0) // Cambia a Negro
Wait(2) // Ver Nota #9
LeaveAreaLUA("AREA","",[x.y],FACE) // Ver Nota #10
Wait(2)
FadeFromColor([20.0],0)
Wait(2)
EndCutSceneMode()
END

IF
True()
THEN
RESPONSE#100
CutSceneID(Player2)
Wait(2)
LeaveAreaLUA("AREA","",[x.y],FACE)
END

IF
True()
THEN
RESPONSE#100
CutSceneID(Player3)
Wait(2)
LeaveAreaLUA("AREA","",[x.y],FACE)
END

IF
True()
THEN
RESPONSE#100
CutSceneID(Player4)
Wait(2)
LeaveAreaLUA("AREA","",[x.y],FACE)
END

IF
True()
THEN
RESPONSE#100
CutSceneID(Player5)
Wait(2)
LeaveAreaLUA("AREA","",[x.y],FACE)
END

IF
True()
THEN
RESPONSE#100
CutSceneID(Player6)
Wait(2)
LeaveAreaLUA("AREA","",[x.y],FACE)
END



9. Se usa Wait() para esperar unos segundos y así permitir a la pantalla pasar a negro (Esta acción tarda más o menos un segundo, así que le damos dos para asegurarnos).
10. Simplemente explicaré los parámetros de esta acción.


"AREA" = El nombre de fichero del area a la que te estas moviendo.
"" = Esto control que dibujo aparece en la ventana de carga. Dejándolo a "" hacemos que sea aleatorio.
[x.y] = Las coordenadas X e Y del punto en el que personaje aparecerá en el nuevo mapa.
FACE = Es un valor numérico con valores enteros de 0 a 15. El 0 apunta a el sur y el resto esta ordenado como las agujas del reloj.



NOTA GENERAL: Habrás notado, que todas las acciones principales están puestas en sentencias del Player1. Esto es porque el Player1 esta siempre en el juego y algunas de las acciones no necesitan ejecutarse siempre.
Nota del Traductor: He realizado esta traducción intentando mantenerme lo más fiel posible al texto original. Así que, aunque algunas frases las hubiese expresado de otra manera las he escrito así.




Por: Max a.k.a Potencius
Traducido por: DLAN_KOLDAN



Reply to this topic



  


A Bragol. Tus amigos te echan de menos.