Template:InstructorLessons:es

From Valve Developer Community
Jump to: navigation, search

Lección de Introducción. "Usando tu arma"

Primero debemos abrir el archivo scripts/instructor_lessons.txt ( Que venia con el .zip ) Y al final del archivo ( Pero antes de la } ) debemos agregar la lección que queremos.

Para comenzar debemos decidir que nombre le pondremos a esta lección, en si solo nos servirá para poder identificarlo al momento de probar y de darle una identificación única. En este caso lo llamare "Usando tu arma" así que empezaremos por escribir:

"Usando tu arma"
{
}

Ahora es necesario indicarle que tipo de lección será, en si le indica si la lección podrá abrirse varias veces en la pantalla o solo una vez, etc... Como queremos que solo se muestre una vez tendremos que definir el valor de instance_type como 2. Además es necesario ajustar la prioridad de la lección, por ahora la dejaremos en 0

"Usando tu arma"
{
      "priority"         "1"
      "instance_type"    "2"
}

Aquí el significado original de cada número:

0 = Multiple lessons of same type can be open at once 1 = Only one of each lesson type can be open at once 2 = Replace lesson of the same type 3 = Only one instance will display at a time (but all instances will be open)

Después tendremos que indicarle el mensaje que queremos darle al usuario, ten en cuenta que es posible usar las cadenas para traducir, por ejemplo: #Instructor_UseWeapon pero en este ejemplo usaremos un mensaje normal ( No lo hagas en tu mod, hazlo con las cadenas para traducir )

"Usando tu arma"
{
      "instance_type"    "2"
      "caption"          "Disparo primario"
}

Como en si se trata de una lección en la que le enseñaremos al jugador a como disparar su arma será necesario que el icono sea un comando/tecla, para ello definiremos el valor de on_screen_icon como use_binding que en si significa "Usa un comando/tecla" la cual le definiremos en el campo binding:

"Usando tu arma"
{
      "instance_type"    "2"
      "caption"          "Disparo primario"

      "onscreen_icon"    "use_binding"
      "binding"          "+attack"
}

Como puedes observar ( Y si has practicado algo de esto en Source Engine ) sabrás que el comando +attack sirve para indicar al motor que el botón izquierdo del ratón a sido presionado, por lo que cuando esta lección sea mostrada el icono será un Ratón con el botón izquierdo en rojo ( Indicando que se debe presionar )

Como se puede ver en esta página se puede usar cualquier comando. Por ejemplo +jump mostrará la tecla "Espacio" ( Como se puede ver en la imagen del inicio ) y +use mostrará la tecla "E". Claro esta, si el jugador mantiene la configuración de los controles intacta, si por ejemplo cambio la tecla de uso (E) por U el Game Instructor mostrará la tecla U.

on_screen_icon sirve para indicar el icono que aparecerá cuando el objetivo este visible al jugador, en este caso no hay objetivo por lo que siempre aparecerá, si hubiera un objeto ( Por ejemplo: un botón ) también deberíamos incluir el campo offscreen_icon que será el icono que aparecerá cuando el objetivo no este a la vista ( Junto con una flecha )

Solo como ejemplo/recordatorio lo pondremos:

"Usando tu arma"
{
      "instance_type"    "2"
      "caption"          "Disparo primario"

      "onscreen_icon"    "use_binding"
      "offscreen_icon"   "icon_info"
      "binding"          "+attack"
}

Si hubiera un objetivo el icono que se mostraría sería:

Hint 002 icon info.jpg

Ahora es necesario indicar cuantas veces máximo puede aparecer, para esto hay 2 formas: Por veces que se ha mostrado o Por veces que se ha cumplido.

Por veces que se ha mostrado indica que cuando la lección se haya mostrado cierta cantidad de veces el mismo Ya no volverá a aparecer. Suele ser la más sencilla y se define con el campo display_limit seguido del número de veces que puede aparecer.

Por veces que se ha cumplido indica que cuando una condición ( Generalmente en el código ) se cumpla la lección se marcará como "Cumplida/Aprendida" y después de un número de veces "Aprendida" la misma dejará de aparecer. Esta es la usaremos con esta lección y es definida con el campo success_limit en la cual le ajustaremos 2 veces máximo.

"Usando tu arma"
{
      "instance_type"    "2"
      "caption"          "Disparo primario"

      "onscreen_icon"    "use_binding"
      "offscreen_icon"   "icon_info"
      "binding"          "+attack"

      "success_limit"    "2"
      "timeout"          "8"
}

Como puedes ver también hemos agregado el campo timeout que sencillamente define el tiempo en segundos que puede permanecer abierto, ten en cuenta que si el tiempo se termina se marcará como "Vista" y solo afectará al campo display_limit

Ahora viene lo bueno... es necesario indicarle con que evento se Abrirá esta Lección y con que otro evento se marcará como "Aprendido". En este caso usaremos los eventos: instructor_primaryattack y use_primaryattack ( En si puedes nombrarlos como quieras )

"Usando tu arma"
{
      "instance_type"    "2"
      "caption"          "Disparo primario"

      "onscreen_icon"    "use_binding"
      "offscreen_icon"   "icon_info"
      "binding"          "+attack"

      "success_limit"    "2"
      "timeout"          "8"

      "open"
      {
            "instructor_primaryattack"
            {
            }
      }

      "success"
      {
            "use_primaryattack"
            {
            }
      }
}

Vale, con esto le indicamos con que evento se abrirá y con que evento se marcará como "Aprendida" pero ahora hay que decirle que parámetros se recibirán del evento y como usarlos. En este caso junto con los 2 eventos enviaremos el parámetro userid que indicará el usuario que debe recibir esta lección.

Hay que recordar que los eventos son enviados del Servidor al Cliente y estos son globales es decir Todos los jugadores conectados al servidor lo recibirán por lo que con userid limitamos al Game Instructor a que solo lo muestre en el jugador que le indicamos.

"Usando tu arma"
{
      "instance_type"    "2"
      "caption"          "Disparo primario"

      "onscreen_icon"    "use_binding"
      "offscreen_icon"   "icon_info"
      "binding"          "+attack"

      "success_limit"    "2"
      "timeout"          "8"

      "open"
      {
            "instructor_primaryattack"
            {
                 "local_player is"   "player userid"
                 "icon_target set"   "player local_player"
            }
      }

      "success"
      {
            "use_primaryattack"
            {
                 "local_player is"   "player userid"
                 "void close"        "void"
            }
      }
}

Esta es una de las pequeñas partes difíciles de entender pero aquí vamos...

local_player is

local_player significa el "Jugador local" o en si el Cliente, por lo que con esta línea le indicamos que solo muestre esa lección si el jugador local es el jugador que le indicamos en el valor ( player userid )

player userid

Este es el valor que cada condición debe tener, la primera parte ( player ) indica el tipo de valor que se esta recibiendo, en este caso es un recurso "C_BasePlayer", si fuera una cadena de texto sería string en vez de player y si fuera una entidad entonces sería entity ( C_BaseEntity ) en vez de player.

La segunda parte ( userid ) indica el nombre del valor, en este caso le pusimos así pero puede ser cualquier otro que tu le indiques. Ya lo veras cuando lleguemos a la parte donde enviemos el evento desde el código.

icon_target set

icon_target es el objetivo donde se mostrará el icono, con esto sencillamente le establecemos ( set ) el objeto/jugador/entidad a donde ira el icono.

player local_player

Y con esto solo le decimos que el objetivo es el mismo jugador por lo que el resultado será solo el mensaje e icono mostrándose en la pantalla del mismo.

Para use_primaryattack es básicamente lo mismo solo que al final después de comprobar si es el usuario local cierra la lección ( La desaparece )

Y eso es todo para esta lección, claro que hay muchos más campos y opciones para crear lecciones más avanzadas e interactivas. Si cuentas con Left 4 Dead 2 te recomiendo ver su archivo instructor_lessons.txt para darte una idea. ( Se encuentra dentro del archivo VPK: pak01_dir.vpk )

Por último es necesario agregar los eventos ( instructor_primaryattack y use_primaryattack ) al archivo resource/modevents.res, ábrelo y al final ( Pero antes de } ) escribe:

        "instructor_primaryattack"
	{
		"userid" 	"short"
	}
	"use_primaryattack"
	{
		"userid" 	"short"
	}


¡Siéntente libre de incorporar nuevas lecciones a este tutorial!