JKMAPPERS

Foro de habla Hispana sobre el mapping para la Saga de Juegos Jedi Knight (Jedi Outcast y Jedi Academy) de Star Wars.
 
ÍndiceÍndice  CalendarioCalendario  FAQFAQ  BuscarBuscar  MiembrosMiembros  Grupos de UsuariosGrupos de Usuarios  RegistrarseRegistrarse  ConectarseConectarse  

Comparte | 
 

  Manual del uso del BehavEd para crear scripts (byLarraz)

Ir abajo 
AutorMensaje
Admin
Admin


Mensajes : 12
Fecha de inscripción : 30/03/2018

MensajeTema: Manual del uso del BehavEd para crear scripts (byLarraz)   Lun Abr 09, 2018 4:41 am

Buenas, aqui teneis el segundo tutorial de script, este no es exactamente un tutorial y no esta exactamente hecho por mi, es una traduccion del manual incluido por Raven en el SDK del Jedi academy (añadiendo algun comentario mio), es posible que algunos comandos no queden claros o no salgan traduccidos, eso es posible a que su no he conseguido traduccirlo bien o no lo he comprendido pero si teneis alguna duda podeis hacerla en el apartado DUDAS e intentare resolverlas, espero que os guste

Aqui lo teneis en pdf:
Tutorial_Funcionamiento_Behaved_(byLarraz).pdf

Tutorial:

TUTORIAL DE FUNCIONAMIENTO DE BEHAVED por Javier Larraz

En este tutorial explicare como funciona el programa BehavEd que se usa para realizar los scripts en el Star Wars Jedi Knight Outcas y Jedi Academy. (El programa los instalas junto con otras aplicaciones al instalar el SDK, y se encuentra en la carpeta del juego GameData/Tools)
Al abrir el programa nos encontraremos con esto



El programa se divide en varias partes:
La parte de la izquierda es la parte donde están todos los comandos a usar en el programa (ahora explicare el funcionamiento de la mayoría)
La parte de la derecha o parte central será donde vayamos introduciendo los comandos de nuestro script
A la derecha del todo se encuentran varios botones que explicare en breve
Y abajo se encuentra la parte de status que te dice si has copiados, cuantas líneas llevas, si se ha producido algún error,….
Empezare explicando los botones de la derecha:
Actions
Delete – Elimina la linea seleccionada
Clone – Copy la linea seleccionada a la linea siguiente
Copy – Copia la linea seleccionada
Cut – Corta la línea seleccionado
Paste – Pega la línea que se haya copiado o cortado

File
New – Empieza un Nuevo Script
Open – Abre un script
Append – Añade un script al final del que estas editando
Save – Graba el script sobre el nombre al que le has dado
Save As… - Nombra y guarda tu script

Application
Preferences – Te muestra la lista de carpetas en las que el programa debe estar configurado para que funcione bien
About… - Informacion sobre BehavEd
Exit – Quita BehavEd

Treeview Options
Show Types – Muestra o no los valores de cada comando.
%g floats – Muestra todos lo valores decimals de los comandos numericos

Compile! – Proceso por el cual el script esta listo para usar en el juego, se crea un archivo ICARUS (el usado por el juego)

:
{} – Este icono indica un comando que se puede expandir para aglutinar una serie de comandos  
e – Un comando normal
[] – Un corchete, junta una serie de comandos específicos

Comandos:
flush if loop affect run wait action sound move rotate use kill
remove print rem declare free get random set camera task do wait
dowait walkTo runTo

Para introducir un comando simplemente es hacer sobre el doble click o cogiendolo y arrastrandolo hacia la ventana del script.

Editando Los Comandos

Una vez hayas añadido los commandos a tu script tienes que meter los parametros.  Esto se hace haciendo doble click sobre el pero en la ventana del script, no en la de comandos.
Se te presentaran con una seria de cajas a editar en la que tu puedes alterar el valor

La mayoria son simples cajas donde simplemente escribes el valor que desees.  Estos normalmente tiene un indicador debajo de la caja sobre que tipo de información se espera (string, float, vector,…)

Otras son de tipo drop donde tu seleccionas un valor de una lista segun el comando que sea.  Para mostrar esa lista debes pulsar el boton “Re-Evaluate” y asi el comando mostrara las opciones que este tiene a elegir

Al lado de donde editamos el comando se vera el boton “Helper”.  Pulsando sobre el podras accede al comando get o el random, con ellos podremos añadir mas acciones al comando. SI decides no usar esto simplemente pulsa en revert

Una vez hayas acabado de editar el comando pulsa en ok o en cancel si no quieres que se guarden los cambios.

Comandos de control de Script
(flush, loop, wait, if, affect, run)
Estos comandos son los que controlan el flujo de script. En otras palabras, afectan al como y al cuando son ejecutados

rem – Este comando no afecta en nada al script es simplemente un comentario. Se usa mucho para poner una especie de titulo o nota al script para que otros al leerlo les resulte mejor entenderlo.  Generalmente se pone al principio para explicar que hace el script que estamos leyendo

flush – Este comando anula la ejecución de otros comandos que aun no se hayan ejecutado.  Pero solo elimina commandos que esten en una entidad

Por ejemplo, imaginemos que tenemos estos comandos:

set ( “SET_BEHAVIORSTATE”, “BS_DEFAULT” )
set ( “SET_LOOK_FOR_ENEMIES”, “false” )
set ( “SET_WALKING”, “true” )
set ( “SET_NAVGOAL”, “walk1” )
wait ( 3000 )
print ( “Hello!” )

Pero antes de que los dos primeros commandos se ejecuten, otro script se active con esto:

flush()
set ( “SET_LOOK_FOR_ENEMIES”, “true” )
set ( “SET_WALKING”, “false” )
print( “I kill you!” )

El comando  “flush” anula los comando que no se hayan ejecutado aun en el primer script. Asumiendo que el Segundo script se active antes del comando wait y print del primer script se ejecuten, el NPC ignora esos commandos, va a la caza, mata a sus enemigos y se muestra “I kill you!”.  Nunca esperara los 3 segundos y mostrara ”Hello” (los commandos del primer script), pues esos commandos han sido anulados

Flush es muy util para situaciones donde un npc se mueve patrullando por un loop en el primer script. El comando flush elimina ese loop

loop – Es un comando que te permite realizar una serie de commandos repetidamente. En vez de esto:
wait ( 3000 )
print ( “Hello World!” )
wait ( 3000 )
print ( “Hello World!” )
wait ( 3000 )
print ( “Hello World!” )
wait ( 3000 )
print ( “Hello World!” )

Simplemente usa esto:

Loop ( 4 )
{
wait ( 3000 )
print ( “Hello World!” )
}

Si prefieres que el loop continue para siempre cambia el numero del loop a -1.

Loop ( -1 )
{
wait ( 3000 )
print ( “Hello World!” )
}

Esto hara que estos dos commandos se repitan para siempre al menos hasta que los anulen (flush)

Wait – Es un comando que se usa para hacer que el script espera un cierto numero de milisegundos antes de continuar (1000 milisegundos equivalen a 1 segundo)

Por ejemplo:

print( “Hello…” )
wait( 1000 )
print( “World!”)

Esto hara que el script muestre ”Hello…”, espere 1 segundo y muestre ”World! ”

if – Este comando te permite dar una condición que debe ser satisfecha para poder ejecutar un cierto bloque de comandos
.

El format simple es:

if ( value1 = value2 )
{
print( “Hello World!” )
}

El unico valor que puedes usar son variables y valores que puedes obtener usando el comando ”get”.

For example:

if ( get(FLOAT, “health”) > 0 )
{
print( “Hello World!” )
}

Puedes incluso poner el comando ”else” despues del comando if:

if ( get(FLOAT, “health”) > 0 )
{
print( “Hello World!” )
}
else
{
print( “Hey, I’m dead!” )
}

NOTA: el comando else no esta disponible en el BehavEd

affect – Este comando se usa para mandar a un bloque de commandos a otra entidad que la que esta ejecutandose en el script.  Por Ejemplo:

Print( “Hello, Fred!”)

Affect ( “Fred”, FLUSH )
{
wait( 1000 )
print( “Leave me alone!” )
}

En el ejemplo de arriba la entidad que ejecuta el script muestra “Hello, Fred!”, Despues le dice a fred que espere 1 segundo y que responda “Leave me alone!”

El nombre (“Fred”) debe ser el script_targetname de la entidad que quieres que afecte.  Para los NPCs, su script_targetname se le llama Npc_targetname (en algunas entidades basta con  targetname) estos targetnames deben ser puestos en el GTKradiant.  Si quieres que varias entidades sean afectadas por un mismo affect ponles el mismo targetname.

La segunda variable del comando affect decide  si quieres que al entidad anule lo que estaba haciendo antes o que meta algo nuevo a lo que estaba haciendo. Puedes elegir entre:

FLUSH – Igual que el comando flush, anulara cualquier comando anterior. Fred debería esperar a terminar

INSERT – Cualquier script que Fred este ejecutando, añade estos nuevos comandos. Si Fred se esta sentando en una mesa y alterna entre comer y mirar a su alrededor, este nuevo comando hara que muestre “Leave me alone!” y le permite continuar comiendo y mirando a su alrededor

Recuerda que solo afecta a comando de otra entidad.  El script que tiene el affect no espera a los commandos dentro del affect para terminar

Por Ejemplo:

Print( “Hello, Fred!”)

Affect ( “Fred”, FLUSH )
{
wait( 1000 )
print( “Leave me alone!” )
}

print( “Damn you to Hell, Fred!” )

Esto no espera a que Fred termine de hablar antes de mostrar “Damn you to Hell, Fred!”.  Lo que pasara es esto:

“Hello, Fred!”
“Damn you to Hell, Fred!”

Un Segundo despues, Fred dira:
“Leave me alone!”

Esto es porque affects completa instanteneamente lo que hay en el affect. Si quieres que se le replique a Fred un segundo después de hablar , tienes que ponerlo asi:

Print( “Hello, Fred!”)

Affect ( “Fred”, FLUSH )
{
wait( 1000 )
print( “Leave me alone!” )
}

wait( 2000 )
print( “Damn you to Hell, Fred!” )

La razon de poner 2 segundos es porque Fredy tu correis el script simultáneamente. Tienes que esperar un segundo mas al que espera Fred

run – Este comando se usa para abrir otro script dentro del script actual.

Imagina que tienes un script como este:

print( “Hello World!” )
run( “test/response” )
wait( 1000 )
print( “Oh well, I give up.” )

y un script llamado “test/response” como este:

wait( 1000 )
print( “I said Helloooo World!” )

lo que pasara al iniciar el primer script sera esto:

“Hello World!”
(wait a second)
“I said Helloooo World!”
(wait a second)
“Oh well, I give up.”

Basicamente el comando run inserta un grupo de commandos de otros script dentro del tuyo donde este el comando run. Esto es útil cuando tienes un grupo de comandos que quieres ejecutar de diferentes scripts. Si tomas estos comandos y los aislas a un script, puedes activarlos desde cualquier script que quieras. Esto te evita meter un bloque de comandos una y otra vez. Esto viene bien para corregir errores porque los puedes aislar y es mas fácil arreglarlos.

Macros
(walkTo, runTo, etc)
Macros son simplemente bloques de commandos, agrupados para su uso. Los Macros no tienen una function especial. Pueden ser utiles por contener grandes bloques de  commandos en un grupo plegable de modo que no se pueden editar





Tasks
(task, do, wait, dowait)

Tasks son la manera de hacer que tu script espere unos ciertos commandos a terminar antes de continuar. Esto es util para todo tipo de situaciones. Si, por ejemplo, quieres que un NPC camine a un boton y lo use, debes descirle al script que espere al NPC a llegar al botón antes de decirle que lo use. If you quieres esperar a un NPC a terminar una animación o una línea de dialogo antes de cambiar de cámara, necesitas usar el task.

Generalmente la forma de crear un task es asi:

task ( “TASKNAME” )
{
commands…
}

El TASKNAME es cualquier cosa que quieras, piensa que no debes usar el mismo TASKNAME para dos task diferentes.

Para usar los commandos dentro del task, usa el comando do:

do ( “TASKNAME” )

Esto empezara los commandos que hay dentro del taks que has identificado con el do.

Cuando quieres parar la ejecucion del script hasta que el task se complete, usa este comando:

wait ( “TASKNAME” )

El script no continuara hasta que todos los commandos del task no se completen. NOTA: Si usas el comando wait sin usar el do primero, tu script nunca continuara, vamos que no lo hagas.

A veces, encontraras que quieres usar do e inmediatamente usar el wait. En ese caso puedes usar este comando  :

dowait ( “TASKNAME” )

Esto empezara el task y pausara el script hasta que el task  este completado

Es importante saber que mientras hay algunos commandos que se tomen un tiempo para ser completados (como llegar a un navgoal, terminar una linea de dialogo), otros comandos terminara instantáneamente. En este documento, cualquier comando comando que no acabe instantáneamente is marcado con un asterisco. SI va a hacer un task, tienes que tener al menos uno de estos comandos en el, sino tu task se completara tan pronto como empieze

Una de las cosas mas importantes acerca de los task a recordad es esta: Un task es único a una entidad a la que se define. Esto significa que si defines un task  en una entidad e intentas usar el task con una entidad diferente, recibiras este error ”cannot find task block TASKNAME”.

Por ejemplo:

task ( “Go to the door” )
{
commands…
}

affect ( “Fred”, FLUSH )
{
dowait ( “Go to the door”);
}

Es incorrecto.  “Fred” Fred no tiene ni idea de que task es “Go to the door” , porque ese task fue definido con la entidad que afecta   “Fred”, no en “Fred”

La forma correcta seria:

affect ( “Fred”, FLUSH )
{
task ( “Go to the door” )
{
commands…
}
dowait ( “Go to the door”);
}

Este es un error comun al principio, pero te acostumbraras.
Por ultimo deberias recordar acerca de los tasks si los defines solo una vez
Puedes ejecutar una task tantas veces como quieras, pero definirlo solo una vez.

Por ejemplo:

loop ( 50 )
{
task ( “Go to the door” )
{
commands…
}
dowait ( “Go to the door”);
}

Es incorrecto.  Esto dice define el task ”Go to the door”  50 veces. Como tiene  que ser es asi :

task ( “Go to the door” )
{
commands…
}

loop ( 50 )
{
dowait ( “Go to the door”);
}

De esta forma defines el task una vez pero la ejecutas 50 veces.





Sound Command
sound( CHANNEL, filename )
El comando sonido se usa para reproducer un sonido. Hay varios canales para reproducir un sonido. Reproducir un sonido en un canal que ya esta en uso cortara el sonido anterior

CHAN_AUTO Toma un canal para reproducer el sonido automaticamente
CHAN_LOCAL canal de sonidos de menu,etc
CHAN_WEAPON reproduccion en el canal de los sonidos de armas
CHAN_VOICE Sonido de voz que causa animacion facial y lo atenua despacio
CHAN_VOICE_ATTEN Causa animacion facial, (atenuacion rapida)
CHAN_ITEM reproduccion en el canal del item
CHAN_BODY reproduccion en el canal de sonidos del cuerpo (pasos, sonidos de impacto,…)
CHAN_AMBIENT sonidos de ambiente
CHAN_LOCAL_SOUND mensajes de chat,….
CHAN_ANNOUNCER voz de comentarista,etc lo reproduce globalmente
CHAN_LESS_ATTEN atenuacion similar a chan_voice pero usa un comportamiento de CHAN_AUTO’s para buscar un canal vacio
CHAN_MENU1, cosas del menu, etc
CHAN_VOICE_GLOBAL causa animacion facial, y transmite, como un narrador

Para esperar a que termine un sonido de voz antes de continuar con el script :

task( “say hello” )
{
sound( CHAN_VOICE, “sound/voice/test/helloworld.wav” )
}

print( “Hello yourself! )

Tambien puedes esperar a sonidos reproducidos en los canales CHAN_VOICE_ATTEN and CHAN_VOICE_GLOBAL. No puedes esperar a sonidos reproducidos en otro canal


Comandos de Manipulacion de Brush
(move, rotate)
El comando move hara que un brush se mueva de una coordenada especifica  a otra en un cierto numero de milisegundos, de esta forma:

move (<0 0 0>, <0 0 1000>, 1000 )

hara que el brush se mueva de un origen (<0 0 0>) a un destino 1000 en el mapa en el tiempo de 1 segundo.

Puedes incluso usar el comando get y tag para las coordenadas que quieras, asi:

move ( tag(“spot1”, ORIGIN), tag(“spot2”, ORIGIN), 1000 )

move ( get(VECTOR, “parm1”), get(VECTOR, “parm2”), 1000 )

mas de estos commandos luego
Para rotar un brush a un angulo especifico, asi:

rotate( <0 90 0>, 1000 )

El brush girara a el angulo 90 en 1 segundo.

Ten en cuenta de que la duracion 0 hara que el brush se mueva o gire a esa nueva posicion/angulo instantaneamente.


CAMERA Commands
(enable, disable, move, pan, zoom, roll, follow, track, distance, fade, shake, path)
El comando camara se usa para las cinematicas: eventos del script donde la camara del jugador cambia a una vista de camara, como en una pelicula.

Enable – Esto active el modo camara. Cambia la vista del jugador a la de la camara

Disable – Esto desactiva el modo camara y vuelve a la camara del jugador

Move – Esto se usa para mover la camara a un punto specifico o coordenada. Esto se puede hacer de una de estas 3 maneras:

camera( MOVE, <0 0 0>, 0 )

mueve la camara a la coordenada  <0 0 0>, en el mapa

camera( MOVE, tag( “cameraSpot1”, ORIGIN ), 0 )

mueve la camara al punto en el mapa donde esta el ref_tag llamado “cameraSpot1”.

camera( MOVE, get( VECTOR, “SET_ORIGIN” ), 0 )

mueve la camara de un origen a la actual entidad

El ultimo parametro controla cuanto tiempo (en milisegundos) necesita la camara para llegar a la posición especifica. El valor 0 movera la cámara instantáneamente. Un valor de 1000 movera la cámara a esta posición en un segundo.

Pan – Esto se usa para cambiar el angulo de la camara. Puedes darle un valor de izq, dcho, arriba o abajo, e incluso inclinar la cámara izq o dcho

Camera ( PAN, Angulo de destino, direccion, duracion )

El format general es:

Camera( PAN, <0 0 0>, <0 0 0>, 0 )

El valor del vector es : <pitch yaw roll>

El Angulo de destino es el angulo final que intentas darle, la direccion es la direccion que deseas al que cada eje se mueva. Cualquier valor es valido, pero solo veras si cada dirección de eje tiene un valor positivo o negativo.

Como el comando MOVE, se puede hacer de tres maneras:

camera( PAN, <0 0 0>, <1 1 1>, 0 )
camera( PAN, tag( “cameraSpot1”, ORIGIN ), <1 1 1>, 0 )
or
camera( PAN, get( VECTOR, “SET_ORIGIN” ), <1 1 1>, 0 )

Una duracion de 0 hara que la camara inmediatamente cambie el angulo al preciso, una duración mas larga hara que la cámara gire (pan) a ese nuevo angulo.

Zoom – Cambia el Zoom de la camara.  Puede ser con mas o con menos zoom.

Camera( ZOOM, 80, 0 )

The Segundo valor es el zoom que deseas darle a tu camara. 80 es lo normal, 1 es el zoom máximo y 120 es lo minimo que puedes darle. EL ultimo parámetro es la duración del zoom, 0 instantaneo, mayor que 0 duracion en milisegundos que tardara en dar ese zoom

Roll – Este comando te permitirá rodar la cámara sin fastidiar los angulos.  La razón de la existencia de este valor es que el ref_tag no tiene posibilidad de giro.

Camera( ROLL, 45, 0 )

Un valor positivo rueda la camara a la derecha y uno negative a la izquierda. El ultimo valor es la duración del giro

Follow – Permite a la camara apuntar a un grupo de entidades.

camera( FOLLOW, “cameraGroup”, speed, initialLerp )

El  “cameraGroup” es un string. Cualquier entidad con el mismo string en el “cameraGroup” sera parte de la escena.  La camara se centrara en cada actor en la escena y estara apuntandole en el centro. Esto no es solo util para seguir a un actor en movimiento, tambien para un grupo de actores. Para poner a alguien un cameraGroup, usa el comando SET_CAMERA_GROUP  (mira en la seccion de Variables de Comando).

El Segundo parametro es la velocidad del giro de camara. Cuando mas alto sea la cámara estará mejor en la acción. Un valor 0 usara el valor normal (100)

“initialLerp” es un comando verdadero/falso (1/0) que le dice a la camara cambiar del actual angulo al angulo de la escena que quieres.

Track – Hace que la camara se mueva a lo largo de un camino.

Camera( TRACK, “trackName”, speed, initialLerp )

El  “trackName” deberia ser el targetname de la primera serie de path_corves de tu mapa. La cámara se moverá de un path_corner a otro hasta llegar al final. Debes dar el ultimo path_corner donde quieras y la cámara se moverá hasta llegar a el

El “speed” es la velocidad a la que la camara sigue el camino

“InitialLerp”  hara que la camara se mueva de la posicion actual al comienzo del camino que has especificado. Se moverá  a la velocidad que le digas en este comando.

Distance – Hace que la camara se mantenga a una distancia del cameraGroup’s center.

Camera( DISTANCE, distance, initialLerp )

Este comando funciona en conjunction con el comando “FOLLOW”  and a veces con el comando “TRACK” .  El  “distance” que especificas le dice a la camara si acelerar o reducer para mantener una constant distancion con el  “cameraGroup” especificado en el comando  “FOLLOW” Si la camara esta a un camino, se mantendrá en el camino e intentara mantener la distancia.

El “initialLerp” hara que la camara acelere para tomar una distancia adecuada al cameraGroup.

Fade – Hace que la camara cambie de RGB color y opacidad de un valor a otro

Camera( FADE, startRGB, startOpacity, endRGB, endOpacity, duration )

Camera( FADE, <0 0 0>, 0, <0 0 0>, 1, 2000 )


Shake – Hace que la camara tiemble a un periodo de tiempo

Camera( SHAKE, intensity, duration )

“intensity” puede ser desde 1 a 16.

“duration* en milisegundos

Path* - hace que la camara siga un camino ROF

Especifica un archive ROF para la camara. La cámara se moverá  a lo largo del ROF.

Camera( PATH, “roff/bob.rof” )


Get
Get( FLOAT/VECTOR/STRING, “” )
Cualquier cosa que puedes poner, puedes tomar (get) Get se usa para copier un valor de un valor Set field/variable a otro y en los comandos if.

set(“SET_PARM1”, “Fred”)

if( get(STRING, “SET_PARM1”) = “Fred” )
{
print(“Hello World!”)
}


En el BehavEd Get es accessible pulsando el boton helper.  

Variables
(global/local)
All variables must be declared before being used.  Provide the type of the new variable and the name.

declare( FLOAT, “counter” )
declare( VECTOR, “position” )
declare( STRING, “myName” )

You can then set the variable like so:
set( “myName”, “Fred” )

Then you can get the variable any time you want, for instance, in an if statement:

If ( get(STRING, “myName”) = “Fred” )
{
print( “Hello, World!” )
}

When you’re done with the variable you can free it:

free( “myName” )

All variables are freed when the level ends, but you might want to free one yourself if you’re running low on available variables (there are 32 of each type available at a time).

Additionally, you can get info from a variable in set commands, as below:

set( “SET_NAVGOAL”, get(STRING, “globalNavGoal”) )

This way you could have some other script set the value of the globalNavGoal (it would be the targetname of a navgoal), then someone else just has to run this generic script that would tell them to go to whatever the globalNavGoal is.  They would set the globalNavGoal like so:

set( “globalNavGoal”, “FredsHome” )

or, if that script is meant to be a generic script, they can use parms, like so:

set( “globalNavGoal”, get(STRING, “SET_PARM1”) )

This way you can have 50 ents use this script to set a navgoal to whatever their parm1 is.


Random
Random( minNumber, maxNumber )
Random es un valor que se usa para obtener valores aleatorios en los scripts.  Simplemete introducelo en un punto donde estaria un numero normalmente y este cogera un numero aleatorio.

random( 0, 3.5 )

Situara un numero entre 0 y 3.5.

La unica manera de accede a esto es pulsando el boton helper.


TAGs
TAG( “targetname”, ORIGIN/ANGLE )
En el Q3Radiant, puedes poner objetos llamados ref_tags. Puedes darle un angulo uniéndolo a un info_null o simplemente dándole un valor de angulo. Estos ref_tags pueden ser usados en un script como una buena forma de obtener coordenadas y angulos sin tener que liarte con números.

Por ejemplo:

camera( MOVE, tag(“cameraSpot1”, ORIGIN), 0 )

Esto movera la camara al ref_tag con el targetname *cameraSpot1*.

Puedes incluso darle angulo asi:

camera( PAN, tag(“cameraSpot1”, ANGLES), <1 1 1>, 0 )

La ventaja de usar este sistema es que muchas veces no disponemos de las coordenadas actuales de la camara y es mucho mas facil ajustarlas con el info_null y los valores ahora dichos.
Set Command
set( SET_TABLE, value )

EL commando set es probablemente el commando mas usado en los scripts. Generalmente esta función cambirara el valor de cualquier Variable que elijas de una lista.

Uso:

set( “SET_BEHAVIORSTATE”, “BS_WANDER” )

Este commando simple, por ejemplo, hara que el npc actue deambulando en el mapa buscando un waypoint .

Para la lista de las Comandos SET, mira la siguiente seccion.

Un vistazo rapido a la variable SET_PARM:

Hay ocho de estos commandos (SET_PARM1, SET_PARM8). Estos sin cambiarles su valor no hacen nada en particular. Piensa en ellos como depósitos. Cada entidad puede depositar hasta 8 valores en estos parms. Pueden ser números, vectores, o strings. El propósito principal de estos es que puede ser asignados a una entidad en el editor del mapa. Tienen el efecto de permitirte escribir un script que funcione ligeramente diferente para un numero infinito de entidades que lo muevan

Un ejemplo:

En tu mapa tienes un NPC y quieres que ande entre 3 navgoals, llamados nav1, nav2 y nav3. Este es el script que normalmente se usaria:

set( “SET_BEHAVIORSTATE”, “BS_DEFAULT” )
set( “SET_WALKING”, “true” )
Loop( -1 )
{
task( “walk to nav1” )
{
set( “SET_NAVGOAL”, “nav1” )
}

task( “walk to nav2” )
{
set( “SET_NAVGOAL”, “nav2” )
}

task( “walk to nav3” )
{
set( “SET_NAVGOAL”, “nav3” )
}
}

Con esto andara entre estos navgoals para siempre.

Ahora pones otro NPC que supuestamente camina entre otros tres navgoals totalmente diferentes, point1, point2 y point3, deberias hacer un Nuevo script para esto, pero seria una Buena idea usar el mismo script de antes.  
Aqui es donde los parms entran en juego.  


Para el primer NPC, ponle a sus navgoals estos valores en vez del nav en el editor del mapa:

parm1 nav1
parm2 nav2
parm3 nav3

Para el Segundo NPC, lo mismo:

parm1 point1
parm2 point 2
parm3 point 3

Despues ambos NPCs pueden usar el mismo script que se ve aqui:

set( “SET_BEHAVIORSTATE”, “BS_DEFAULT” )
set( “SET_WALKING”, “true” )
Loop( -1 )
{
task( “walk to nav1” )
{
set( “SET_NAVGOAL”, get( STRING, “SET_PARM1” ) )
}

task( “walk to nav2” )
{
set( “SET_NAVGOAL”, get( STRING, “SET_PARM2” ) )
}

task( “walk to nav3” )
{
set( “SET_NAVGOAL”, get( STRING, “SET_PARM3” ) )
}
}

Cada commando get obtendra su navgoal correspondiente que sera depositado en las entidades parm del editor del mapa

Esto permite reusar un script una y otra vez. Puede parecer que se realiza mas trabajo al principio, especialmente para solo dos npcs, pero si tienes 50 Npcs haciendo lo mismo , veras que haciéndolo con un solo script ahorraras mucho tiempo. Estos scripts pueden ser usados por varios NPCs en un mismo mapa o incluso por Npcs de mapas totalmente diferentes.

Una cosa que debes recordar es que si vas a hacer que varios NPCs usen el mismo script, ten en cuenta que cualquier cambio en el script afectara a todo el NPC que lo este usando. Sin embargo, si tienes que hacer un cambio, solo tendrías que hacerlo en un script y no en 50 si lo hicieses de la otra forma.


SET Command Variables:

Aqui es donde reside la majoria de los commandos especificos del juego. Cada set tiene una función especifica en el juego
Dos tipos,l Behavior Sets y el Behavior States:

Behavior Sets (spawnscript, usescript, awakescript, etc.) – Esto es un script que usara un NPC cuando se produzca una cierta condicion

Behavior States – Esto es un comportamiento especifico  - una rutina creada por la IA que usa el NPC para actuar

Ten en cuenta de que todo con un asterisco parara la ejecucion del script hasta que se complete el comando.

Los comandos en gris no estan implementados

Ten en cuenta de que el  “targetname” y el “NPC_targetname” son virtualmente sinonimos

Behavior Sets :

Set Field Name Parm Type Description
SET_ANGERSCRIPT script file path Corre el script la primera vez que el NPC adquiere un enemigo
. SET_ATTACKSCRIPT script file path Corre el script cuanto la entidad ataca
SET_AWAKESCRIPT script file path Corre el script cuando empieza por un evento.
SET_BLOCKEDSCRIPT script file path El script corre cuando una entidad es bloqueada por otra y no se puede mover.
SET_DEATHSCRIPT script file path El script corre cuando te matan, Nota: Su tienes puesto SET_UNDYING en true, este script se ejecutara cuando la vida baje de 1.
SET_DELAYEDSCRIPT script file path El script se ejecuta despues de que haya pasado una cierta cantidad de tiempo (mira “SET_DELAYSCRIPTTIME”)
SET_FFIRESCRIPT script file path El script se ejecuta cuando el jugador ha disparado a su propio equipo repetidamente.
SET_FFDEATHSCRIPT script file path El script se ejecuta cuando el jugador mata a un compañero de equipo
SET_FLEESCRIPT script file path El script se ejecuta cuando una entidad es golpeado y tiene menos de 1/3 de la salud inicial
SET_LOSTENEMYSCRIPT script file path El script se ejecuta cuando un enemigo no puede ir a un objetivo y se rinde.
SET_MINDTRICKSCRIPT script file path El script se ejecuta cuando un jugador usa el poder mental jedi en un NPC.
SET_PAINSCRIPT script file path El script se ejecuta cuando una entidad es golpeada, teniendo en cuenta de que el “ignorepain” esta en false.
SET_SPAWNSCRIPT script file path El script se ejecuta cuando la entidad aparece.
SET_STUCKSCRIPT script file path El script se ejecuta cuando se bloqueado y no puede maniobrar a ningun lado .
SET_USESCRIPT script file path El script se ejecuta cuando wa usado por otra entidad. El campo en el que debe ser puesto en un NPC para ser usado por otra entidad es NPC_targetname. ASi que si quieres un trigger para usar el NPC, pon en el trigger target  Joe (por ejemplo) y en el Npc Npc_targetname Joe. Esto puede ser aplicado a No NPCs
SET_VICTORYSCRIPT script file path El script se ejecuta cuando matas a alguien.

Ten en cuenta que la ruta del archive del script no debe tener la ruta complete:
“Q:\quake\baseq3\real_scripts\test\getmad.scr”
Sino que deberia ser asi:
“test\getmad”

Ten en cuenta de que estos scripts se ejecutan siempre que ocurran los eventos, si quieres ejecutarlos solo una vez debes limpiar puerto del behavior set que ejecuta para un evento.
Ejemplo:
Si quieres que alguien empieze con un comportamiento normal y pase a comportamiento de cazar y matar, haz esto:
Set ( “SET_BEHAVIORSTATE”, “BS_DEFAULT” );
Set ( “SET_IGNOREALERTS”, “true” );
Set ( “SET_LOOK_FOR_ENEMIES”, “false” );
Set ( “SET_PAINSCRIPT”, “test\getmad” );

Y, el “test/getmad” deberia ser asi:

Set ( “SET_IGNOREALERTS”, “false” );
Set ( “SET_LOOK_FOR_ENEMIES”, “true” );
Set ( “SET_PAINSCRIPT”, “NULL” );


Behavior Set - Related Script Set Fields:
SET_DELAYSCRIPTTIME int Cuanto tiempo en segundos espera antes de ejecutar el “delayedscript”.


NPC-ONLY SET FIELDS:

Speeds, Origins & Angles :

SET_ORIGIN ”x y z” Pone el origin en una entidad, en Q3Radienat marca las coordenadas.
SET_COPYORIGIN targetname Copia el origen de una entidad con un nombre y se la da a otro.
SET_TELEPORT_DEST* “x y z” Pone el origen aqui tan pronto como el area este limpia
SET_ANGLES ”pitch yaw roll” Pone el angulo de una entidad
SET_DPITCH* int Pitch entity will try to turn to.  Positive looks down,
negative looks up, straight ahead is 0.
SET_DYAW* int GIra la entidad, los valores con de 0 a 360 correspondientes a los del Radiant.
SET_LOCKYAW “off/auto/float” Bloquea el giro de las piernas de una entidad. La cabeza y el torso giraran libremente pero solo tanto como su cuerpo se lo permita.
SET_XVELOCITY float Añade una velocidad X a una entidad. Coincide con el angulo X del Radiant, negativo es hacia el oeste y positivo al este.
SET_YVELOCITY float Añade una velocidad Y a una entidad. Coincide con el angulo X del Radiant, negativo es hacia el sur y positivo al norte
SET_ZVELOCITY float Añade una velocidad Z a una entidad. Coincide con el angulo X del Radiant, negativo es hacia arriba y positivo abajo.
SET_Z_OFFSET float ??
SET_RUNSPEED int Velocidad de carrera a la que se mueve una entidad
SET_WALKSPEED int Velocidad a la que se mueve una entidad cuando camira
SET_YAWSPEED int Velocidad a la que una entidad gira
SET_FORWARDMOVE int Fuerza a una entidad a moverse hacia adelante.
(con datos positivos hacia atrás) 127=runSpeed 64=walkSpeed 0= no fuerza ningun movimiento
SET_RIGHTMOVE int Fuerza a una entidad a moverse hacia la derecha (datos negativos= a la izquierda).
127=runSpeed 64=walkSpeed 0= no fuerza ningun movimiento
.
SET_NOAVOID ”true/false” La entidad no intent esquivar la geometria del mundo y otras entidades

Targets & Goals :

Ten en cuenta de que la mayoría de los objetivos son waypoint_navgoals, pero puedes poner cualquier  entidad como un objetivo.

SET_CAPTUREGOAL targetname Entidad a la que otra entidad se dirige cuando esta en el estado BS_ADVANCEFIGHT.
SET_ENEMY targetname Impone a una entidad un enemigo con el targetname impuesto.
SET_LOCKEDENEMY ”true/false” La entidad no para de atacar a un enemigo hasta que este muerto.
SET_PAINTARGET targetname Cuando es golpeado, la entidad usara la entidad con el targetname especifico.
SET_TARGET targetname Pone o cambia el objetivo
SET_TARGET2 targetname Pone o cambia el Segundo objetivo
SET_TARGETNAME targetname Cambia el targetname de una entidad.
SET_VIEWTARGET* targetname Pone el desiredYaw y desiredPitch a una entidad basado en la posicion de la entidad con el targetname
SET_NAVGOAL* targetname Pone un navgoal con el targetname dicho a una entidad, no continuara hasta que haya llegado al Navgoal
SET_AFFIRMNEGTARG ”self/name” ?.
SET_ENEMYTEAM Team Table Pone el equipo al que atacara, su enemigo.
SET_PLAYERTEAM Team Table Pone el equipo al que ayudara, su aliado.
SET_REMOVE_TARGET targetname Objetivo que dispara cuando alguien complete del comportamiento BS_REMOVE
SET_LOCATION* trigger msg En que trigger_location estas



Animation Data :

SET_ANIM_UPPER* Anim Table Animacion superior de un modelo . SET_ANIM_LOWER* Anim Table Animacion inferior de un modelo .
SET_ANIM_BOTH* Anim Table Animacion complete de un modelo.
SET_ANIM_HOLDTIME_LOWER* int Cantidad de milisegundos que la animacion inferior durara. -1= para siempre.
SET_ANIM_HOLDTIME_UPPER* int Cantidad de milisegundos que la animacion superior durara. -1= para siempre.
SET_ANIM_HOLDTIME_BOTH* int Cantidad de milisegundos que la animacion completa durara. -1= para siempre.
SET_FACEAUX float Pone la expression Aux por una cantidad de segundos
SET_FACEBLINK float Pone la expression Blink por una cantidad de segundos
SET_FACEBLINKFROWN float Pone la expression Blinkfrown por una cantidad de segundos

SET_FACEFROWN float Pone la expression frown por una cantidad de segundos
SET_FACENORMAL float Pone la expression normal por una cantidad de segundos
SET_FACEEYESCLOSED float Pone la cara con los ojos cerrados
SET_FACEEYESOPENED float Pone la cara con los ojos abiertos SET_ADDRHANDBOLT_MODEL string Añade un modelo .glm a la mano derecha
SET_REMOVERHANDBOLT_MODEL string Elimina un modelo .glm de la mano derecha
SET_ADDLHANDBOLT_MODEL string Añade un modelo .glm a la mano izquierda
SET_REMOVELHANDBOLT_MODEL string Elimina un modelo .glm de la mano izquierda
SET_SCALE float Cambia el tamaño de una entidad


Behavioral :

SET_BEHAVIORSTATE bState Table Cambia el comportamiento de una entidad.  Mira la lista del Behavior State Table
SET_DEFAULTBSTATE bState Table Pone un comportamiento a una entidad.
SET_TEMPBEHAVIOR bState Table Pone un comportamiento temporal, una vez completado, volvera a su comportamiento normal.
SET_AGGRESSION int A cuanto se pone la capacidad de disparo (1 – 5), es lo mismo que en el  NPCs.cfg.
SET_AIM int A cuanto se pone la capacidad de pumteria (1 – 5), es lo mismo que en el  NPCs.cfg.
SET_VIGILANCE float Pone la capacidad de una entidad de vigilancia de un enemigo, es decir, cuantas veces comprueba la aparicion de enemigos – 0 = nunca 1 = siempre
SET_IGNOREPAIN ”true/false” La entidad no reacciona al dolor
SET_IGNOREENEMIES “true/false” No presta atencion a los enemigos
SET_IGNOREALERTS,//## %t="BOOL_TYPES" # No toma enemigos en el area
SET_DONTSHOOT ”true/false” Nadie disparara a la entidad
SET_DONTFIRE ”true/false” La entidad no disparara
SET_NOTARGET ”true/false” Nadie tomara la entidad como enemigo.
SET_SHIELDS “true/false” NOT IMPLEMENTED
SET_ALT_FIRE ”true/false” Fuerza al NPc a usar el ataque Alt
SET_NO_RESPONSE ”true/false” El Npc no realiza las respuestas normales  
(usescripts no responde tampoco)
SET_NO_COMBAT_TALK ”true/false” El NPC no realiza los sonidos de combate
SET_NO_ALERT_TALK ”true/false” El NPC no realiza los sonidos de alerta, pero si se mantiene en alerta
SET_SHOT_SPACING int Cuantos milisegundos pasan entre cada disparo en un NPC, vuelve a normal cuando se cambia de arma
SET_FOLLOWDIST float A que distancia esta del lider en el comportamiento BS_FOLLOW_LEADER
SET_NO_GROUPS ”true/false” El Npc no puede alertar a grupos o ser parte de uno
SET_FIRE_WEAPON ”true/false” Hace que el NPC mantenga pulsado el boton de disparo hasta que se desactive
SET_NO_MINDTRICK ”true/false” Hace al NPc immune al truco mental Jedi
SET_USE_CP_NEAREST ”true/false” El Npc usara sus puntos de combate mas cercanos
SET_NO_ACROBATICS ”true/false” El Jedi no saltara o rodara
SET_CROUCHED ”true/false” Hace a la entidad agacharse.
SET_LEAN ”left/right/none” NOT IMPLEMENTED
SET_RUNNING ”true/false” Hace a la entidad corer ,runSpeed.
SET_WALKING ”true/false” Hace a la entidad caminar, walkSpeed.
SET_CHASE_ENEMIES ”true/false” El Npc ira a por los enemigos
SET_LOOK_FOR_ENEMIES ”true/false” El Npc estara en el punto de mira de los enemigos
SET_FACE_MOVE_DIR ”true/false” NOT IMPLEMENTED
SET_DONT_FLEE ”true/false” El Npc no huira del peligro
SET_FORCED_MARCH ”true/false” NPC will not move unless you aim at him
SET_LOOK_TARGET ”targetname” EL Npc gurara la cabeza para mirar al NPC/entidad que se especifique. Ten en cuenta de que esto se activa automáticamente cuando el NPC tiene un enemigo.
Stats :

SET_SHOOTDIST float Distancia a la que una entidad disparara a un enemigo
SET_VISRANGE float Distancia a la que una entidad detecta a un enemigo
SET_HFOV int Pone la distacia de visionado horizontal.
SET_VFOV int Pone la distacia de visionado vertical.
SET_EARSHOT float Distancia a la que una entidad escucha un evento
Misc NPC-Specific:

SET_ICARUS_FREEZE targetname Especifica la entidad a congelar. NOTA!!. La entidad no se descongelara hasta que se lo digas con el siguiente comando
SET_ICARUS_UNFREEZE targetname Especifica la entidad a descongelar. NOTA!!. La entidad no se descongelara hasta que se lo digas,


GENERAL SET FIELDS:

Player-Only
SET_TREASONED “true/false” El jugador se vera traicionado
SET_PLAYER_LOCKED “true/false” El jugador nose podra mover
SET_LOCK_PLAYER_WEAPONS “true/false” El jugador no podra cambiar las armas
SET_VIEWENTITY targetname Hace al jugador ver a traves de las entidades

Players and NPCs
SET_INVISIBLE “true/false” Hace al Npc no solido e invisible
SET_INVINCIBLE “true/false” Invencible
SET_FORCE_INVINCIBLE “true/false” Invencible a la fuerza
SET_SABERACTIVE “true/false” Apaga/enciendo la espada laser
SET_NO_KNOCKBACK “true/false” Hace que el NPc no se caiga tras ser disparado
SET_HEALTH int Pone la salud
SET_FRICTION int   Pone la friccion de una entidad, 0(min) – 6(max)
SET_GRAVITY float Pone la gravedad de una entidad, 0 = ninguna, 0.8 es normal.
SET_WEAPON Weapon Table Pone un arma, si esta en drop dejara soltar el arma. NOTA: en el JK2 el comportamiento depende del arma, si tiene una espada se comporta como un Jedi, si tiene un disruptor como un francotirador,….
SET_UNDYING ”true/false” La entidad puede ser dañado por debajo de 1 pero no muere
SET_SOLID* ”true/false” Hara a una entidad solida o no.
SET_WIDTH int Anchura del player/NPC
SET_VAMPIRE “true/false” Se muestra solo en espejos o portales
SET_NO_IMPACT_DAMAGE “true/false” La entidad no recibe daño
SET_MORELIGHT “true/false” El NPC/Player tendra un minimo de luz de 96
SET_DISMEMBERABLE “true/false” EL NPC/Player sera o no desmembrado
SET_NO_FORCE “true/false” El NPC/Player no se vera afectado por la fuerza
SET_NO_FALLTODEATH “true/false” El NPC/Player no tendra miedo a tirarse a grandes alturas.
SET_ITEM item table Da objetos
SET_FORCE_HEAL_LEVEL force level Cambia el nivel del poder de la salud
SET_FORCE_JUMP_LEVEL force level Cambia el nivel del poder del salto
SET_FORCE_SPEED_LEVEL force level Cambia el nivel del poder de la velocidad
SET_FORCE_PUSH_LEVEL force level Cambia el nivel del poder del empujon
SET_FORCE_PULL_LEVEL force level Cmabia el nivel del poder del tiron
SET_FORCE_MINDTRICK_LEVEL force level Cambia el nivel del truco mental
SET_FORCE_GRIP_LEVEL force level Cambia el nivel del agarre
SET_FORCE_LIGHTNING_LEVEL force level Cambia el nivel del rayo
SET_SABER_THROW force level Cambia el nivel del lanzamiento del sable
SET_SABER_DEFENSE force level Cambia el nivel de la defense Jedi
SET_SABER_OFFENSE force level Cambia el nivel del ataque Jedi
All Entities
SET_COUNT int Cambia la cuenta de una entidad
SET_WAIT float Cambia la espera de una entidad
SET_PLAYER_USABLE “true/false” Le entidad puede ser activada por un boton accionado por un jugador
SET_EVENT event table NO INCLUIDO
SET_PARM1 – 8 any value Deposita y devuelve los valores que necesita por el script en varias situaciones. Descripcion dicha anteriormente.
SET_LOOPSOUND filename Repite un sonido que se reproduce en una entidad.
SET_DMG_BY_HEAVY_WEAP_ONLY “true/false” Cuando esta en true, solo un arma grande como misiles o lasers pueden hacer daño a la entidad
SET_SHIELDED “true/false” Cuando es true, ion_cannon protégé de cualquier tipo de daño.
SET_INACTIVE “true/false” Lo mismo que usar el target_activate o target_deactivate (previene de ser usado o no)
SET_FUNC_USABLE_VISIBLE “true/false” Da un camino alternative para cambiar el func_usable a visible o no


Text Printing control:

SET_SCROLLTEXT int Texto ID a mostrar
SET_CAPTIONTEXTCOLOR string Color de la leyenda, Rojo, Blanco, Azul o Amarillo
SET_CENTERTEXTCOLOR string Color del texto central Rojo, Blanco, Azul o Amarillo SET_SCROLLTEXTCOLOR string Color del texto de rollo,

Non-NPC Animation:
These commands are for use on misc_model_breakables only

SET_STARTFRAME int Frame en el que  empieza la animacion
SET_ANIMFRAME int Frame en el que se pone una animacion de una sequencia
SET_ENDFRAME* int Frame en el que acaba una animacion
SET_LOOP_ANIM “true/false” Sequencia de animacion a repetir
SET_DISABLE_SHADER_ANIM “true/false” Permite apagar la animacion shader en un script
SET_SHADER_ANIM “true/false” Pone un shader con una imagen del mapa bajo control de frames

Other (do not affect entities):
SET_TIMESCALE int Disminuye el tiempo del juego, 1.0 es lo normal.
SET_PRECACHE filename El archive pre que lista todos los sonidos que seran usados por tu script. Esto hara que el script se mueva mas suave desde que el sonido no sea necesario cargar cuando son reproducidos
SET_CAMERA_GROUP string Esto es un valor que el commando FOLLOW de la camara mire a quien la camara este apuntando.
SET_CAMERA_GROUP_TAG string Que tag intenta seguir
SET_CAMERA_GROUP_Z_OFS float Cuando siga a un ent con la camara aplica este z offset.
SET_INTERFACE “true/false” Activa o desactiva la interfaz del jugador
SET_CINEMATIC_SKIPSCRIPT script file path  Script que se ejecuta cuando un script se salta.
SET_VIDEO_FADE_IN “true/false” Hace que la reproduccion de un video aparezca  cuando empieza
SET_VIDEO_FADE_OUT “true/false” Hace que la reproduccion de un video desaparezca  cuando termina
SET_ADJUST_AREA_PORTALS “true/false” Solo usa esto en cosas que mueves con los commandos del script que quieras abrir/cerrar area portals.
SET_SECRET_AREA_FOUND “true/false” Incrementa el contador de areas secretas encontradas
SET_END_SCREENDISSOLVE “true/false” Disolucion de camara para mostrar los creditos finales
SET_USE_SUBTITLES “true/false” Hace que un NPC muestre siempre sus subtitulos
SET_CLEAN_DAMAGING_ENTS “true/false” Elimina las entidades que pueden fastidiar las escenas (explosivos, torretas,…)
SET_HUD “true/false” Activa/desactiva el HUD
SET_MUSIC_STATE music states Cambia el estado de la musica
SET_OBJECTIVE_SHOW objectives Muestra el objetivo en la pantalla de mission
SET_OBJECTIVE_HIDE objectives Esconde el objetivo en la pantalla de mission
SET_OBJECTIVE_SUCCEEDED objectives Marca el objetivo como completado
SET_OBJECTIVE_FAILED objectives Marca el objetivo como fallido
SET_MISSIONSTATUSACTIVE objectives Activa el Status de la mision
SET_MISSION_STATUS_SCREEN objectives Muestra el Status de la mission antes de avanzar al siguiente nivel
SET_MISSIONFAILED “missionfailed” Se activa la pantalla de mission fallida
SET_MISSIONSTATUSTEXT “statustext" Texto a aparecer en la pantalla del Status de la misison
SET_TACTICAL_SHOW “tactical” Muestra la informacion tactica en el objetivo de la mision
SET_TACTICAL_HIDE “tactical” Esconde la informacion tactica en el objetivo de la mision
SET_OBJECTIVE_CLEARALL Fuerza a todos los objetivos a esconderse
SET_MENU_SCREEN menuscreens NO INCLUIDO
SET_CLOSINGCREDITS Muestra los creditos finales
.



TABLES

ANIM TABLE

Usado por SET_ANIM_LOWER, SET_ANIM_UPPER, SET_ANIM_BOTH.

Ten en cuenta de que toda animacion listada aqui vale para todo esqueleto!

Tambien: ciertas animaciones (gestos,..) no se garantiza que valgan para todos los esqueletos.

Lee el archivo anims.h en la carpeta “gamesource” donde el BehavEd esta instalado. Puedes ver el nombre y descripción de las animaciones (los mismos comentarios aparecen en el BehavEd).

Behavior State Table

BS_DEFAULT   El comportamiento por defecto de un NPC. El que usa el 90% por cierto del tiempo.
BS_ADVANCE_FIGHT* Se dirige a un objetivo y lucha mientras se dirige a el, continua cuando llega a el.
BS_FOLLOW_LEADER Sigue e un lider y dispara a los enemigos que se encuentre
BS_JUMP* Se gira a un navgoal y salta hacia el
BS_REMOVE Una vez que el jugador este fuera del alcanze del NPC este se borra.
BS_SEARCH Desde el waypoint inicial, busca una rama aleatoria y vuelve.
BS_WANDER Busca un navgoal.
BS_NOCLIP Se mueve a traves de paredes,….
BS_CINEMATIC No hace nada salvo mirar en direccion de un objetivo si lo tiene
BS_SLEEP NO INCLUIDO

Weapons Table

Drop Tira el arma
WP_NONE Sin arma
WP_SABER
WP_BRYAR_PISTOL
WP_BLASTER
WP_DISRUPTOR
WP_BOWCASTER
WP_REPEATER
WP_DEMP2
WP_FLECHETTE
WP_ROCKET_LAUNCHER
WP_THERMAL
WP_TRIP_MINE
WP_DET_PACK
WP_STUN_BATON
WP_MELEE Para NPC’s humanoides y el jugador
WP_EMPLACED_GUN
WP_BOT_LASER Laser del droide Probe
WP_TURRET Torretas
WP_ATST_MAIN
WP_ATST_SIDE
WP_TIE_FIGHTER
WP_RAPID_FIRE_CONC
WP_BLASTER_PISTOL Blasters para enemigos (como imperiales)

Team Table

TEAM_FREE Sin equipo
TEAM_PLAYER Jugador y aliados
TEAM_ENEMY Enemigos
TEAM_NEUTRAL Para droides

Item Table

INV_ELECTROBINOCULARS Binoculares
INV_BACTA_CANISTER Bote Bacta
INV_SEEKER Inquisitor
INV_LIGHTAMP_GOGGLES Lightamp Goggles
INV_SENTRY Portable Assault Sentry

Music States Table

DM_AUTO Permite al juego determinar la musica
DM_SILENCE Para la musica
DM_EXPLORE Pone la música de la exploracion
DM_ACTION Pone la musica de accion
DM_BOSS Pone la musica de lucha con un jefe (si hay uno)
DM_DEATH Pone la musica de cuando muere el jugador
Volver arriba Ir abajo
Ver perfil de usuario http://jaspamapping.activo.mx
 
Manual del uso del BehavEd para crear scripts (byLarraz)
Volver arriba 
Página 1 de 1.

Permisos de este foro:No puedes responder a temas en este foro.
JKMAPPERS :: MAPPING :: TUTORIALES-
Cambiar a: