Sólo los miembros del foro pueden comentar o descargar los contenidos. ¡Regístrate, es gratis! o si ya estás registrado, ¡Conéctate!

Unirse al foro, es rápido y fácil

Sólo los miembros del foro pueden comentar o descargar los contenidos. ¡Regístrate, es gratis! o si ya estás registrado, ¡Conéctate!
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Por favor, permita las ventanas popup de nuestro foro en su navegador para descargar contenidos. Gracias.
¡Aprende a usar el Editor de Detonadores con la W3W School! ¿Qué esperas? Entra ya!
¿Estás aburrido de tu perfil? Pués la Cámara Arcana es el lugar ideal. Compra ítems y decoraciones para tu perfil, a un módico precio.
Últimos temas
» Cierre del Foro
Tutorial básico de vJASS EmptyMar Mayo 15, 2018 11:19 pm por lukario!

» Deepholm Drake armado + pieles
Tutorial básico de vJASS EmptySáb Mayo 05, 2018 2:06 am por mausermg42

» [Model]Paladin Humano
Tutorial básico de vJASS EmptyDom Abr 22, 2018 12:52 pm por Daniel Eduardo Rincon

» Corona de Hielo (Northrend) _ World of Warcraft Cataclysm
Tutorial básico de vJASS EmptyLun Abr 09, 2018 9:39 pm por cagp88

» La Historia y Las Estadísticas De Todos Los Vuelos
Tutorial básico de vJASS EmptyDom Abr 01, 2018 1:52 pm por lJonnir

» [Model]Alto Elfo Kael
Tutorial básico de vJASS EmptyDom Abr 01, 2018 1:06 pm por lJonnir

» Pack Soldados WoW
Tutorial básico de vJASS EmptyMiér Mar 14, 2018 6:51 pm por Saúll

» [Model]Pack Arqueros
Tutorial básico de vJASS EmptyVie Nov 10, 2017 11:29 pm por Ayrton2017

» (MODELO) Hechizera de la alianza
Tutorial básico de vJASS EmptyDom Ago 13, 2017 2:27 pm por Ayrton2017

Conectarse

Recuperar mi contraseña



Tal vez te interese:
Chatbox

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1Tutorial básico de vJASS Empty Tutorial básico de vJASS Mar Ene 10, 2012 1:03 pm

lukario!

lukario!
Administrador
Administrador
Hola!

He estado estudiando vJass en estos días y les traigo un tutorial de lo que he aprendido Very Happy

Antes que nada, quiero dar un agradecimiento muy especial a Sauron y Musk sin los cuales no podría haber aprendido esto.

Esperá, cómo querés que aprenda vJass si ni siquiera sé qué es Jass???
Vamos por partes.

¿Qué es JASS?

Jass(Just Another Scripting Syntax) es el lenguaje de programación interno de Warcraft III.

¿Qué es vJASS?

Es una extensión personalizada de las funciones del JASS con algunas características extras.

¿Por qué vJASS?
La "v" viene de "very" y no por "Vexorian"(Un gran usuario de wc3c). Vexorian quería llamarlo JASS++, mientras que Zoxc sugirió vJASS por "veryJASS" y a Vexorian le gustó la idea.

¿Qué es JESP?

Muchos piensan que JESP es otro lenguaje o extensión de JASS o vJASS, pero en realidad no es ninguno de los dos.

JESP(JASS Enhanced Spell Pseudotemplate) es un argumento de la comunidad de codificadores que dice: "Toda spell debe tener una sección de CONFIGURACIÓN en el código. Denstro de esta configuación, el usuario debe ser capaz de modificar la spell sin necesidad de adentrarse en el código o sin necesidad de entenderlo. Una sección de configuración puede estar en CUALQUIER lugar de la spell"

¿Qué necesito para usar vJASS?

Necesitas el Jass NewGen pack ---> [Tienes que estar registrado y conectado para ver este vínculo]

¿Es difícil aprender vJASS?

Si alguna vez has programado no te será tan difícil. A medida que vas aprendiendo te va resultando más fácil.

¿Cómo uso JASS?

Simplemente crea un detonador vacío y ve a Editar > Convertir a texto personalizado.

Comencemos con el tuto:

¿Qué son las variables?

Las variables, como bien ha dicho Sauron, son como cajas, en las que se pueden almacenar datos. Podés guardar unidades, números o cadenas de texto(string).

Crear una variable

Se pueden crear dos tipos de variables: locales y globales

Variables locales

Las variables locales se pueden usar UNICAMENTE en la función en la cual han sido declaradas.

Tutorial básico de vJASS 369335ah?

Las funciones son otras cajas en las que se almacenan acciones, tales como crear o matar una unidad. Éstas pueden tomar valores y devolver un valor.

Por ejemplo:

Tenemos dos funciones: Función A y función B.

Si en la función A creamos una variable local, esta variable NO PUEDE SER USADA EN LA FUNCION B y viceversa.

Declarar una variable local

Para crear una variable local debemos poner lo siguiente( las variables locales SOLO SE PUEDEN CREAR DENTRO DE UNA FUNCION):

Código:
local <tipo de variable> <nombre> 

También podemos crear una variable y darle un valor:

Código:
local <tipo de variable> <nobmre> = <valor>

Por ejemplo:

local unit = miunidad

Tipos de variables:

Hay varios tipos de variables en warcraft, las más usadas (comunes) son las siguientes:

unit - guarda cualquier tipo de unidad.
boolean - guarda valores "true" o "false"
integer - guarda valores enteros, también Rawcodes (ID's de habilidades, unidades, etc)
real - guarda números con coma,.
effect - guarda un efecto especial del juego.
location - guarda un punto específico del mapa.
group - guarda un grupo de unidades.
trigger - guarda un detonador

Globales

Las variables globales pueden ser utilizadas en cualquier función.

Sim embargo hay que tener cuidado, ya que éstas se declaran dentro de un bloque Globals

Asi:

Código:
globals
<tipo de variable> <nombre> = <valor>
endglobals

Este bloque puede ir en cualquier parte, pero es recomendable que que valla en la parte superior del detonador.

Creando un detonador

Con lo aprendido hasta ahora ya estamos en condiciones de crear nuestro primer detonador en vJASS.

Para poder hacer nuestro detonador, primero necesitamos saber la ESTRUCTURA de la función.

Código:
function <nombre de la función> takes <argumento> returns <argumento>
endfunction

ejemplo:

Código:
function Init takes nothing returns nothing
endfunction

function Init - declaramos la función y le damos el nombre Init

takes nothing - toma el argumento ninguno. pueden ser uno o más argumentos separados por una coma, , y especificando que tipo de datos se estan tomando. En este casom al ser ninguno, no se especifica.

returns nothing - devuelve el valor ninguno

Ahora para crear nuestro detonador necesitamos saber como llamar a las acciones. Las acciones se llaman usando "call"(llamar)

Por ejemplo:

Código:
call KillUnit()

Si no usamos call nos tirará error

Ahora sí, creemos el detonador:

solo necesitamos una cosita más: scope

Código:
scope Trigger1 initializer Init
private function Init takes nothing returns nothing
//acciones
endfunction
endscope

PrimerTrigger : es el nombre que le damos a nuestro scope, NO PUEDEN REPETIRSE LOS NOMBRES Y SE ACEPTAN SOLO LETRAS Y NUMEROS.

initializer Init : Es la función que se ejecutará primero. En este caso, será la función Init (Init, es el nombre de la función. La función que primero se ejecuta, es la función que crea el trigger (detonador) y es donde nosotros le podemos decir en que función se encuentra el evento/condición/acción del trigger que acabamos de crear.

private function : El private, es para que sea una función privada, es decir, que esta función SOLAMENTE se podrá utilizar dentro del scope en donde se encuentra.

Ahora agreguemos las acciones:

Código:
scope Trigger1 initializer Init
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddAction(t, function Actions)
call TriggerAddCondition(t, Condition(function Conditions))
set t = null
endfunction
endscope

Expliquemos que significa todo eso

local trigger t = CreateTrigger() - Se crea una variable de tipo trigger llamada t, que almacena un detonador. Create de crear, Trigger de detonador, Crear Detonador .

call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT) - En esta línea, estamos diciéndo qué evento será el que dispare el detonador. En este caso, el evento es EVENT_PLAYER_UNIT_SPELL_EFFECT, osea, al lanzar una habilidad se dispara el detonador. La t es el detonador.

call TriggerAddAction(t, function Actions) - Decimos que las acciones del detonador t están en la función Actions.

call TriggerAddCondition(t, Condition(function Conditions)) - Decimos que las condiciones del detonador t están en la función Conditions.

set t = null - Seteamos el valor de t a nulo, para evitar memory leaks.

Y? Es tan difícil como pensaban?

ahora cramos la función Acions en la cual se encuentran las acciones.
Recuerden: las funciones que contienen las acciones NO PUEDEN TOMAR NI DEVOLVER VALORES.

Código:
private function Actions takes nothing returns nothing
call KillUnit(GetTriggerUnit())
call BJDebugMsg("Un héroe ha muerto por lanzar una habilidad")
endfunction

Creo que no necesita explicación XD

Ahora creamos la función que contiene las condiciones:

Código:
private function Conditions takes nothing returns boolean
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) == true then
return true
else
return false
endif
endfunction

Esta si la explico un poco:

returns boolean - hace que la función devuelva un valor verdadero o falso

Ahora les explico la estructura de un bloque If Then Else:

Código:
If <argumento> then
else
endif

Si la condición es verdadera se realizan las acciones siguientes. En caso de que sea falsa, tenemos el bloque Else donde pondremos las acciones si es falsa.
Por último, cerramos el bloque If/Then/Else mediante endif

if IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) == true then - Si la unidad que lanzó el conjuro es un héroe, entonces realiza las acciones que siguen.

return true - la función devuelve un valor verdadero

else - el bloque en el que están las acciones si la condición es falsa

return false - devuelve un valor falso

endif - terminamos el bloque If/Then/Else

Recordemos que TODA FUNCIÓN QUE CONTENGA UNA CONDICIÓN DEBE DEVOLVER UN VALOR BOOLEAN(true o false). Si se devuelve false, la función no se ejecuta.

Ahora nuestro detonador quedaría así:

Código:
scope Trigger1 initializer Init
private function Conditions takes nothing returns boolean
    if IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) == true then
    return true
    else
    return false
    endif
endfunction
private function Actions takes nothing returns nothing
    call KillUnit(GetTriggerUnit())
    call BJDebugMsg("Un héroe ha muerto por lanzar una habilidad")

endfunction
private function Init takes nothing returns nothing
    local trigger t = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(t, Condition(function Conditions))
    call TriggerAddAction(t, function Actions)
    set t= null
endfunction
endscope

Ahora probamos nuestro mapa y a ver como funciona nuestro trigger Very Happy

Cuando una una unidad lanza un hechizo, se activa el trigger. Comprueba si la unidad es un héroe o no. Si lo es, lo mata. Si no, no pasa nada Very Happy

Eso es todo por ahora, SI TIENEN DUDAS PREGUNTEN!!!

Fuentes:

Parte de este post fue hecho a base de experiencias personales con vJASS. Mayor parte del contenido se basa en aportes de [Tienes que estar registrado y conectado para ver este vínculo]



Última edición por lukario! el Sáb Mayo 19, 2012 5:51 pm, editado 6 veces

https://embers.ml

2Tutorial básico de vJASS Empty Re: Tutorial básico de vJASS Mar Ene 10, 2012 1:20 pm

tauren

tauren
Novato
buen aporte +rep

3Tutorial básico de vJASS Empty Re: Tutorial básico de vJASS Mar Ene 10, 2012 2:42 pm

AGUGROM

AGUGROM
Experto
Experto
wow excelente aporte para mi XDD voy a tratar de aprender vJASS merecido +rep

http://www.warcraft3world.net/

4Tutorial básico de vJASS Empty Re: Tutorial básico de vJASS Mar Ene 10, 2012 4:29 pm

byron

byron
Señor de la Guerra
Señor de la Guerra
muy bueno exelente bueno es mi turno de ponerme a aser tutoriales +rep Me Gusta

5Tutorial básico de vJASS Empty Re: Tutorial básico de vJASS Lun Jun 25, 2012 2:46 am

Lord NelThaRioN

Lord NelThaRioN
Usuario Respetado
Usuario Respetado
Buen trabajo

https://www.facebook.com/Warcraft.Modelos.Mapas/

6Tutorial básico de vJASS Empty Re: Tutorial básico de vJASS Lun Jun 25, 2012 10:23 pm

Cefiro

Cefiro
Moderador
Moderador
pff si esto es básico como sera avanzado . . . +rep por tu paciencia

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.