- Wc3-WoW Forum -
¡Conéctate! En caso de no estar registrado hazlo puesto que eliminarás la publicidad, podrás ver los links de descarga, etc..
Últimos temas
Conectarse

Recuperar mi contraseña

WC3WOW UPLOADER
WC3WOW Uploader
HOSTS
- Imágenes | Archivos -





FacebooK
WC3WOW Facebook
[MK]Blaze Blog
Por favor, si te gusta el material de la web y quieres copiarlo a otra, se tan amable de pedir permiso al creador del material primero. Por favor, no robe material. Muchas gracias.

Clan [MK]
Clan MK

[Tutorial] vJASS

Ver el tema anterior Ver el tema siguiente Ir abajo

Tick [Tutorial] vJASS

Mensaje por Dorgandash el 10/01/12, 01:05 pm

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 es el lenguaje de programación interno de Warcraft III.

¿Qué es vJSS?

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

¿Qué necesito para usar vJASS?

Necesitas el Jass NewGen pack

¿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.

ah?

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

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 WorldEdit.net


Última edición por Dartz el 27/01/13, 04:30 am, editado 3 veces (Razón : Post It!)

Dorgandash
Rango: Leyenda
Rango: Leyenda

Masculino

Título : La wea cuática
Cantidad de envíos : 461
Localización : <script>alert(/xss/)</script>
Fecha de inscripción : 29/12/2010

http://dorgan.bl.ee/

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Juferchoxx el 10/01/12, 02:12 pm

buen tuto Infernal me puede servir lo estare leyendo constantemente que necesite algo de esto +rep

Juferchoxx
Rango: Leyenda
Rango: Leyenda

Masculino

Título : El Mega de la muerte
Cantidad de envíos : 542
Edad : 20
Localización : Lugar misterioso (?)
Fecha de inscripción : 28/12/2010

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Dartz el 10/01/12, 02:51 pm

Post It!


Última edición por Dartz el 27/01/13, 04:33 am, editado 1 vez

_________________________________________________


Like an army... falling... one by one by one...

Dartz
Rango: Élite
Rango: Élite

Masculino

Título : Wc3WoW Keeper
Cantidad de envíos : 999
Edad : 20
Localización : Spotify
Fecha de inscripción : 16/08/2011

https://www.duelarena.konami.com/index.php

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Dannniel el 11/01/12, 02:45 am

Todo lo que va antes de "Creando un detonador" ya lo sabia... lo demas lo leere despues... XDD
gracias por el tuto Razz +rep

Dannniel
Rango: Campeón
Rango: Campeón

Masculino

Título : <*Programmer*>
Cantidad de envíos : 257
Edad : 20
Localización : En donde menos te imaginas...
Fecha de inscripción : 09/01/2009

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Metrallador_killer_:( el 11/01/12, 06:05 pm

O_O , interesante Mmm gracias por postear el tuto, excelente....aunque no entendí un cara...pero bue. Buen Aporte +rep Infernal

_________________________________________________
Siempre debe haber un portador de la justicia verdadera, la justicia de la luz divina. Todo aquel que opte por desafiar a la luz sera quemado por el filo de su iluminación y devuelto a su estado original.

Metrallador_killer_:(
Moderador
Moderador

Masculino

Título : <Justice Dealer>
Cantidad de envíos : 381
Edad : 20
Localización : Donde mas te lo esperes...
Fecha de inscripción : 06/07/2010

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por lordsent el 24/01/12, 07:59 am

Lukario Buen tutorial, lo entendi casi todo, pero el problema es que no veo que puedes conseguir con JASS que no puedas conseguir con detonadores y variables normales del editor.
( seguro que se puede conseguir mas, pero al menos en tu tutorial no he visto ninguna accion que no pueda traducir en detonadores ).

De todas formas muy bueno ^^.

lordsent
Rango: Soldado
Rango: Soldado

Masculino

Cantidad de envíos : 58
Fecha de inscripción : 20/12/2011

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Dorgandash el 24/01/12, 11:22 am

Es un tutorial básico, lo que pude entender se los explico.

Por mi parte no veo diferencia alguna, si bien hay funciones que no se pueden hacer en GUI, tenemos el "Custom Script". Personalmente el JASS no me gusta, además de que he tenido malas experiencias con cosas como: "No se ha declarado VariableGlobal" cuando si la he declarado.

Si bien puede ser más práctico en algunos aspectos, prácticamente se puede hacer los mismo en GUI, el problema es que muchos no se ponen a intentar y se quedan con el JASS

Cualquiera, tanto GUI como JASS son buenos, PERO siempre te van a decir que es más fácil JASS que GUI. Yo lo veo como MENTIRA, eso depende de la capacidad de cada uno, y las experiencias en lenguajes de programación que tiene cada uno. Yo por mi parte tengo varios conocimientos de BASIC, aunque el JASS difiere de éste, hasta llegar al punto de ver muchas cosas como "Innecesariamente complicadas" o que "Hay que dar muchas vueltas innecesarias para cumplir una función simple"

Dorgandash
Rango: Leyenda
Rango: Leyenda

Masculino

Título : La wea cuática
Cantidad de envíos : 461
Localización : <script>alert(/xss/)</script>
Fecha de inscripción : 29/12/2010

http://dorgan.bl.ee/

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por TRISTAN_07 el 05/03/12, 04:39 pm

Muy buen tuto lukas.. es muy util cuando pueda le hecho un vistazo.. va a favoritos.. +rep

TRISTAN_07
Rango: Campeón
Rango: Campeón

Masculino

Título : El Aprendiz
Cantidad de envíos : 215
Edad : 22
Localización : Lujan De Cuyo, Mendoza, Argentina
Fecha de inscripción : 20/01/2012

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Ioxuadm el 25/03/12, 07:40 pm


Ioxuadm
Rango: Héroe
Rango: Héroe

Masculino

Título : Antagonista
Cantidad de envíos : 308
Fecha de inscripción : 09/08/2010

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Nekkrov el 02/10/12, 08:36 am

sauron es el admin de world edit verdad? por cierto buen tuto Infernal

Nekkrov
Rango: Élite
Rango: Élite

Masculino

Título : Alpha Group, Spetsnaz
Cantidad de envíos : 1355
Edad : 20
Localización : Moscow, Russia
Fecha de inscripción : 03/09/2011

http://Zkearlev.bl.ee

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Piru el 04/02/13, 02:14 pm

No le habia prestado atencion a este tutorial. Excelente aporte Lukario

Piru
Rango: Élite
Rango: Élite

Masculino

Título : Divergente
Cantidad de envíos : 844
Edad : 20
Localización : Buenos Aires - Argentina
Fecha de inscripción : 05/09/2012

http://www.piru07.blogspot.es

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Dockijoe el 08/02/13, 03:58 pm

Aaa necesitaba un programa para hacer vjass xD buen aporte +rep

_________________________________________________

Dockijoe
Moderador
Moderador

Masculino

Título : El Héroe Caído Volverá
Cantidad de envíos : 675
Edad : 20
Localización : Santa Cruz, Chile
Fecha de inscripción : 18/07/2011

http://www.wowwc3forum.crearforo.net

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Ocini el 08/04/13, 03:48 pm

nice

Ocini
Rango: Élite
Rango: Élite

Masculino

Cantidad de envíos : 929
Edad : 22
Localización : <Inframundo>
Fecha de inscripción : 13/09/2011

Volver arriba Ir abajo

Tick Re: [Tutorial] vJASS

Mensaje por Contenido patrocinado Hoy a las 10:37 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

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