BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarseGrupos de Usuarios
Eventos Actuales
¡ Bienvenido Invitado!

Editar Perfil

Tus temas
Tus Mensajes ()

Enlaces rápidos








Comparte | .
 

 (v)Jass para principiantes

Ver el tema anterior Ver el tema siguiente Ir abajo 
Ir a la página : Precedente  1, 2
AutorMensaje
XSerozY
Iniciado
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 9
Reputación Reputación : 6
Monedas de oro : 94
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: (v)Jass para principiantes Dom Jun 07, 2015 7:35 pm

Recuerdo del primer mensaje :

JASS Para principiantes
Por @XSerozY


¡¡¡ESPERA!!! ¡¡No te hablaré en Chino!! Al menos lee esto:
A causa de la falta de tutoriales para aprender Jass, hago este, explicando de una forma legible (no te enseñaré binario) como crear un detonador en Jass. Si eres de los que se asustan del Jass, al menos intenta lo que te enseño aquí, que no es tan difícil como parece Wink no juzgues algo sin intentarlo antes.

Antes que nada....


Si te animaste a aprender, Jass, lo primero que harás será conseguir el NewGen, que es un editor de mapas para Warcraft III con muchas más funciones, además de facilitar crear detonadores en Jass y sus variantes. Puedes conseguirlo aquí.


Introducción
Hola gente! En este tutorial trataré les enseñaré Jass en general, es decir, desde lo más básico hasta lo más difícil, osea, no les lanzaré toda la info de golpe, no quiero ser la causa de colapsos cerebrales masivos Very Happy Este tutorial está destinado a los principiantes, GUI'seros y a los que piensan que solo mentes superdotadas pueden entender el Jass. La idea es demostrar que es más fácil de lo que parece, y animarlos a aprenderlo, ya que tiene varias ventajas a comparación del GUI.

¿Qué es Jass?:
 
¿Y vJass?:
 

Funciones
Una función es un conjunto de "acciones" que se ejecutarán en orden Wink ¿más despacio? bueno, compara cada función con el conjunto de acciones de un detonador en GUI:
[gui]Acciones
   -------- deto en GUI --------
   Partida - Display to (All players) the text: Hola !!
   Wait 2.00 seconds
   Partida - Display to (All players) the text: Bienvenido...
[/gui]
Como ya sabrás, todas esas acciones se ejecutarán en orden, lo mismo pasa con las funciones en Jass.

Vamos al grano. ¿Como creo una función? Así:
[jass]
function [nombre de la función] takes [parametros que toma] returns [parametros que devuelve]
 //acciones de la función
endfunction
[/jass]
  ~ Lo de los parámetros por ahora no los tomes en cuenta, en su lugar escribe nothing Cool
  ~ El nombre de la función puede ser cualquiera, pero ojo, no pueden haber dos funciones con el mismo nombre.
  ~ Cuando escribas //, todo lo que siga a su derecha se transformará en un comentario, lo cual al detonador no le sirve para nada, PERO a nosotros si, acostúmbrate a usar los comentarios para mantener tu código ordenado Smile
  ~ No olvides "terminar" la función con endfunction.

Hagamos un ejemplo:
[jass]
function MiFuncion takes nothing returns nothing
  call BJDebugMsg("Hola gente!!!")
endfunction[/jass]

  ~ En este caso, la función se llama MiFuncion.
  ~ Como dije antes, las funciones son como un conjunto de acciones, y antes de ejecutar cada acción, hay que escribir la palabra call Wink Si nos olvidamos del call, nos aparecerá un error...  En el ejemplo anterior, estamos ejecutando la acción BJDebugMsg, la cual muestra un texto en la pantalla a todos los jugadores, en este caso, es el texto que va en los paréntesis ("Hola gente!!!") Very Happy

Variables
Las variables son como "almacenes" en donde guardamos cosas para usarlas más adelante lol! existen dos tipos de variables: locales y globales.

La diferencia?? Las globales pueden usarse en cualquier detonador y en el lugar donde quieras, similar a las variables creadas en el editor de variables XVariable y las locales SOLO pueden ser usadas dentro de la función donde se crean.

Calma, vamos por parte. Primero, como creamos una variable global?? Al principio de todo el código de tu detonador, así:

[jass]
globals
  [tipo de variable] [nombre de la variable] = [valor de la variable]
endglobals [/jass]

  ~ Dentro de globals y endglobals puedes crear todas las variables que quieras Very Happy
  ~ Los nombres de las variables no se pueden repetir
  ~ el valor de la variable, osea, la parte de = [valor de la variable] es opcional, ya que si lo deseas puedes darle a tu variable un valor más adelante Smile

Ya, pero... que es el tipo de variable??
Recuerdas que las variables son como almacenes?? Pues el tipo de variable indica que tipo de cosas habrá dentro del almacén lol! puede ser un número, un texto, una unidad, una región, etc.

Tipos de variables más comunes

  ~ unit = La variable almacena una unidad Cool
  ~ integer = Almacena un numero cualquiera, pero sin decimales. Ejemplos: 1, -10, 2000, 34234...
  ~ real = Almacena un número cualquiera con decimales.
  ~ string = Almacena texto. Recuerda que los "textos" o "cadenas" deben ir entre comillas "" Smile
  ~ boolean = Solo almacena un valor de Verdadero o falso. true o false.
  ~ trigger = Almacena un detonador Cool
  ~ timer = Almacena un reloj..
  ~ location = Almacena un punto en el mapa Shocked
  ~ sound = Almacena un sonido


Vale, así que las globales pueden usarse en cualquier parte... Mmm.. y las locales??

Las locales solo se usan dentro de la función donde se crean. Si creamos una variable local en la función A, no podremos usarla en la función B, en cambio, una global podría usarse tanto en A como en B bounce

Ya, y como creo una local? Al principio de una función, las variables locales se crean así:
[jass]
local [tipo de variable] [nombre de la variable] = [valor de la variable][/jass]

  ~ Igualmente, el valor es opcional y el nombre no debe repetirse. No pueden haber dos variables locales con el mismo nombre dentro de la misma función.

Hagamos un ejemplo. ¿Recuerdas la función que creamos al principio? usemos variables en ella Very Happy

[jass]
function MiFuncion takes nothing returns nothing
 local string texto1 = "Hola "
 local string texto2
 set texto2 = "gente!!!"
  call BJDebugMsg(texto1 + texto2)
endfunction[/jass]

Creamos dos variables del tipo string (texto): texto1 y texto2. A texto1 le asignamos un valor al principio, pero a texto2 no. ¿Cómo le damos valor? Así:
[jass]set [variable] = [valor][/jass]
De la misma forma, podemos cambiarle el valor a una variable Wink

Como ya vimos antes, BJDebugMsg mostraba un mensaje en el mapa, pero en este caso, el mensaje será la "suma" de las variables texto1 y texto2, es decir, "Hola " + "gente!!!" = "Hola gente!!!" Very Happy Se entiende?

Creando un detonador
Sip, para que esa función funcione, debemos crear un detonador que la ejecute, igual que en GUI.

¿Cómo lo hago en JASS? creamos otra función como esta:

[jass]
function Creando takes nothing returns nothing
   local trigger t = CreateTrigger()
   call TriggerRegisterTimerEventSingle (t, 3.0)
   call TriggerAddAction (t, function MiFuncion)
endfunction[/jass]

Calma, calma, explico:

La función se llama Creando

Primero creamos una variable local de tipo trigger (detonador) llamada t, a la cual le asignamos el valor "CreateTrigger()". Con esto, creamos un detonador Very Happy

call TriggerRegisterTimerEventSingle (t, 3.0) es el acontecimiento event que tendrá que ocurrir para que se ejecute el detonador. TriggerRegisterTimerEventSingle es el equivalente a:
[gui]Acontecimientos
   Tiempo - Elapsed game time is 3.00 seconds
[/gui]

¿Qué es esa "t" dentro de los parentesis? es el detonador al cual le estamos asignando el acontecimiento, recuerdas cuando creamos la variable local trigger t? Esa es Very Happy

Ya.. y el "3.0"? Es el tiempo que tendrá que pasar para que se ejecute el acontecimiento n.n similar al ejemplo en GUI que dí antes (3 segundos).

"TriggerAddAction" es la acción que añade las acciones al detonador. La "t" de los parentesis? es el detonador al cual le asignamos las acciones. "function MiFuncion"?? Es la funcion en donde están las acciones del detonador Very Happy !!

Al final, nuestro ejemplo quedaría algo así:

[jass]
function MiFuncion takes nothing returns nothing
   local string texto1 = "Hola "
   local string texto2
   set texto2 = "gente!!!"
   call BJDebugMsg(texto1 + texto2)
endfunction

//=============================================================

function Creando takes nothing returns nothing
   local trigger t = CreateTrigger()
   call TriggerRegisterTimerEventSingle (t, 3.0)
   call TriggerAddAction (t, function MiFuncion)
endfunction[/jass]

Ya está!! Detonador creado!! Wink

Scope & initializer
¿Que pasa? Detonador creado, con acontecimiento y todo, pero no pasa nada... Por que es???

Tranqui, no es error tuyo, ni mio, lo que pasa es que aun no ejecutamos la función que crea el detonador, es decir, la funcion "Creando".

-.- Tedioso? Naa, en la práctica es más simple de lo que parece. Para esto, encapsularemos nuestro detonador en un scope.

Como creo un scope? Así:

[jass]
scope [nombre del scope] initializer [funcion que se inicia primero]
  //...
endscope
[/jass]

En la función que se inicia primero ponemos la que crea nuestro detonador, en mi caso, "Creando". Quedaría entonces así:

[jass]
scope MiScope initializer Creando

   function MiFuncion takes nothing returns nothing
       local string texto1 = "Hola "
       local string texto2
       set texto2 = "gente!!!"
       call BJDebugMsg(texto1 + texto2)
   endfunction

   //=============================================================

   function Creando takes nothing returns nothing
       local trigger t = CreateTrigger()
       call TriggerRegisterTimerEventSingle (t, 3.0)
       call TriggerAddAction (t, function MiFuncion)
   endfunction
   
endscope[/jass]

Prueba el mapa y... ¡¡¡Funciona!!! Very Happy

  ~ El nombre de los scopes no debe repetirse
  ~ "initializer [funcion que se inicia primero] es opcional, pero en este ejemplo usamos el scope solo para esto Smile
  ~ Recuerda terminarlo con "endscope".

FIN


Ya se que el tutorial salió algo largo, pero en la práctica, cuando aprendas, esto se hace en menos de 5 minutos lol! geek

Esta es una manera de crear un detonador en (v)Jass, mi objetivo era animarlos a aprender, a enseñarles a manejar los conceptos básicos (variables, funcion, etc..), así como mostrar un uso de encapsular con scopes Very Happy

Espero que alguien lo lea.. Razz Razz Razz

Críticas(constructivas) son aceptadas, cualquier error u otro dato que me salté o para agregar, házmelo saber Very Happy

Cualquier duda, pregunta !! La idea es que aprendas.. Si no entiendes algo (por no decir todo xD) trataré de explicarlo más simple Smile

Saludos!!!


Like a Star @ heaven ¿Quieres aprender algo nuevo? Like a Star @ heaven

¿Te interesan las campañas o los mapas single player?  Like a Star @ heaven Game Cache Like a Star @ heaven
¿Aquel troll molesta a los jugadores en tu mapa?  Like a Star @ heaven Echar jugadores por medio de votaciónLike a Star @ heaven
¿Convertir una unidad en héroe?Like a Star @ heaven  Agregarle a una unidad la aurora de héroeLike a Star @ heaven
¿Empezando con las spells personalizadas?Like a Star @ heaven  Habilidad "Channel" Like a Star @ heaven

Like a Star @ heaven ¿Por qué no aprendes vJass y haces mapas como todo un PRO? Wink  Like a Star @ heaven


Última edición por XSerozY el Lun Jun 08, 2015 2:27 pm, editado 1 vez
Volver arriba Ir abajo

AutorMensaje
armando368
Caballero
avatar


Barra de Salud : Su salud está al 80% - Este usuario ha recibido una infracción

Mensajes Mensajes : 304
Reputación Reputación : 18
Monedas de oro : 1129
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: (v)Jass para principiantes Sáb Dic 17, 2016 1:41 pm

Marcos_M escribió:
Siempre tienes que guardar el mapa antes de probarlo cuando usas vJASS

Veré


Si me necesitan estoy en Rubattle como "Armando368" , puedo hostearles partidas al azar o la que quieran , de todas formas es a eleccion de Invitado . . .

Si quieres que te haga AI ( Artificial Intelligence , o Inteligencia Artificial ) , en tu mapa , debes tener un Diseño Fijo(Si quieres una AI mas inteligente) , si cambias el diseño varias veces mejor dime para que te haga una AI se forma Regular . . .


InvitadoesNoob.com

Visitenla !
Volver arriba Ir abajo
Trigger.edge

avatar


Barra de Salud : Este usuario es invulnerable ¿Será que es fiel a las normas?

Mensajes Mensajes : 971
Reputación Reputación : 103
Monedas de oro : 1224
Monedas de Platino : 0

Inventario :
Cetro del Rey Armadura Mágica Daga Mística


Mensaje(#) Tema: Re: (v)Jass para principiantes Lun Feb 20, 2017 1:08 pm

Me da curiosidad saber xq la gente no se anima en aprender y/o hacer cosas en jass/vjass. Me recuerda hace 3 o 4 años cuando apenas y hacia detos en GUI, me decía a mi mismo que podrían quedar mejor en jass, pero a su vez veía lo lejos que estaba de poder hacerlo, sin embargo aquí estoy hoy en dia disfrutando cada momento que codeo e.e

Seria interesante que mas usuarios latinos se interesen en esto Wink


Volver arriba Ir abajo
angelcraft
Soldado
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 80
Reputación Reputación : 14
Monedas de oro : 256


Inventario :



Mensaje(#) Tema: Re: (v)Jass para principiantes Lun Feb 20, 2017 11:56 pm

Trigger.edge escribió:
Me da curiosidad saber xq la gente no se anima en aprender y/o hacer cosas en jass/vjass. Me recuerda hace 3 o 4 años cuando apenas y hacia detos en GUI, me decía a mi mismo que podrían quedar mejor en jass, pero a su vez veía lo lejos que estaba de poder hacerlo, sin embargo aquí estoy hoy en dia disfrutando cada momento que codeo e.e

Seria interesante que mas usuarios latinos se interesen en esto Wink

Bueno porque en su mayoria aprender jass seria algo muy complicado para algunos, y para otros aburrido, asi que mejor quedarse en gui que solo es grafico XD. (Es una opinion.)(Ademas que antes existian en varios foros que por ejemplo, posteas un deto en jass y todos se te vienen en sima que esta mal, que por que pones eso, esta mal tu code hay mejores y eso desanima  Neutral , pero bueno ya no hay mucha gente en este momento asi que se podria practicar enviando detos al foro, como una sugerencia claro  Cool )

Aun todavia hay gente que sabe codear  :yes:  y si la gente se interesa capaz se pueda enseñar a manejar jass para cosas simples, para nuevos usuarios. (Lo primero, es saber que desea codear la gente por ahi, ya se sacara algunos tutos opcionales para eso Rolling Eyes )

Saludos..
Volver arriba Ir abajo
WonderWoman
Capitán
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 128
Reputación Reputación : 27
Monedas de oro : 828
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: (v)Jass para principiantes Mar Feb 21, 2017 7:29 pm

Yo creo que jass es genial, no porque sea perfecto bajo ningún punto de vista, sino porque seamos honestos: Uno puede abrir el editor de warcraft donde cuenta no solo con un game engine, sino con todo un juego ya funcionando con todas sus funciones incorporadas, con miles de assets (modelos, sonidos, música, spells, texturas) y con gran facilidad para incorporar mas, ademas es un programa para hacer diseño de nivel y testeo a la vez.
Si yo tuviera que enseñarle OOP a alguien sinceramente haría esto, le enseñaría las bases teóricas, como que es una clase una instancia una interfaz etc... y luego le haría bajar el WC3 porque el editor es un sandbox muy accesible para un principiante que no sabe mucho de programación donde puede sacar algo funcionando en poco tiempo.
Incluso si ya sabes programar el editor tiene la ventaja de ponerte directamente a hacer game desing y poder ver el progreso de forma tangible.

Por ultimo creo que por mas buenos que sean los game engines como Unity o unreal (o frameworks + APIs) hoy en día tienen mucho que aprender de lo que hizo blizzard con esta herramienta para sus level designers, porque gente sin idea de lo que es el código puede hacer grandes mapas, pero gente que quiere aprender vjass sin darse cuenta están tomando el camino mas rápido para aprender las bases de la programación orientada a objetos y a usar game engines.


and it makes me wonder...
Volver arriba Ir abajo
Contenido patrocinado




Mensaje(#) Tema: Re: (v)Jass para principiantes

Volver arriba Ir abajo
 

(v)Jass para principiantes

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 2 de 2.Ir a la página : Precedente  1, 2

 Temas similares

-
» Jass NewGen Pack Para Warcraft lll
» Consejos para matar a un gobul
» Para Cada Monstruo que es mejor?
» !!!!monster hunter para móviles¡¡¡¡
» consejos para el ceadeus

Permisos de este foro:No puedes responder a temas en este foro.
Warcraft III - WorldEditor :: Academia :: Area JASS-