-=LK-site=-
Usted no se conecto a su cuenta. O Bien no esta registrado , Registrarte a la Comunidad LKSITE y Se parte del Mismo!!!

Para que se valla este cartel molesto, registrarte o conectate a tu cuenta Wink



[Guia] JASS: Introduccion.

Ver el tema anterior Ver el tema siguiente Ir abajo

[Guia] JASS: Introduccion.

Mensaje por xZetH el Sáb Mar 21, 2009 10:59 pm

Me ahorro las palabritas de introduccion.

Creditos: Bueno esto no lo saque de otra pagina, se puede decir que lo hice en base de lo que aprendi de http://world-editor-tutorials.thehelper.net , en realidad yo aprendi jass de una sola guia de esa pagina asi que quiza esta se parezca bastante, solo que en esta les explico mejor y esta en español Very Happy. Pero tiene la misma estructura porque me gusto la forma de explicarlo.

Thanks a Vexorian, ya que, en realidad esto es un tutorial basado en el de el.

Comenzemos.

1 Parte: Lo basico y las variables locales.

Aver... miren esto..

Código:
function JASS_Actions takes nothing returns nothing
    call DisplayTimedTextToForce( GetPlayersAll(), 30, "Probando el jass" )
endfunction

Código:
function

Significa que se esta declarando una funcion.

Código:
JASS_Actions

Es el nombre de la funcion (necesario si queremos llamar a esa funcion despues)

Código:
takes nothing returns nothing

Los valores que toman y devuelven, por ejemplo para hacer condiciones pondremos que devuelta una boolean, osea "true" o "false", para algunos casos.

Bueno esta es la funcion que llamamos dentro de la funcion que nosotros mismos estamos creando:

Código:
DisplayTimedTextToForce

Es una funcion que muestra un mensaje en la pantalla, el primer valor que toma es "GetPlayersAll()" que indica a que jugadores les va a salir el msj, en este caso a todos.
el 30 es la duracion del mensaje en la pantalla(segundos), y despues lo q esta entre comillas se llama "string" (cadena),, es el texto q va a salir...

Si quieren probarlo y cambiarle la duracion o el mensaje para ir probando antes pongan el evento:

Código:
function InitTrig_JASS takes nothing returns nothing
    set gg_trg_JASS = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_JASS_test, EVENT_PLAYER_HERO_LEVEL )
endfunction


Nota: JASS es el nombre del trigger, asegurense de no poner espacios, solo "_" (guion bajo) (en las strings pueden ir espacios)

Código:
set gg_trg_JASS = CreateTrigger(  )

aca declaramos la variable anteriormente creada por el WE automaticamente al crear el trigger.

Código:
call TriggerRegisterAnyUnitEventBJ( gg_trg_JASS, EVENT_PLAYER_HERO_LEVEL )

aca llamamos el evento, después de que ponen la función de “registrar evento” abren paréntesis y : primero ponen la variable, luego ponen el evento, yo uso el de cuando un heroe sube de lvl >.<.

Quedaria:

Código:
function JASS_Actions takes nothing returns nothing
    call DisplayTimedTextToForce( GetPlayersAll(), 30, "Probando el jass" )
endfunction

function InitTrig_JASS takes nothing returns nothing
    set gg_trg_JASS = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_JASS_test, EVENT_PLAYER_HERO_LEVEL )
endfunction

Esto hace que cuando un hero suba de lvl aparezca el mensaje "Probando el jass" en la pantalla, por 30 segundos.

Bien, ahora veremos las variables locales.

Una variable local solo puede ser usada en el trigger que se creo.

Para declarar una variable local usamos esto:

local

Si queremos crear una variable del tipo String,

local string s

Si queremos que la variable comienze con un valor (si no declaramos el valor comenzara nula), hacemos asi

local string s = "Probando el jass" (nota: recuerden que va entre comillas porque es un string)

Si queremos dejarla asi nomas, para darle un valor mas abajo del trigger tendremos que poner

set =

Estos son otros tipos de variables comunmente utilizados:

string : (texto(entre comillas))
integer: (numero)
real: (numero(Decimal)
Boolean: ( true o false )
Group : (grupo de unidad)
Effect : (efecto especial)
Player : (jugador)
Angle :(angulo real)

Ahora veremos una variable del tipo "integer”, O sea como valor tiene un numero (no decimal)

local integer i = 10

Esto crea una variable que almacena el número 10, como verán estos dos valores pueden ser usados en nuestra función creada anteriormente:

Código:
function JASS_Actions takes nothing returns nothing
    call DisplayTimedTextToForce( GetPlayersAll(), [b]30, "Probando el jass"[/b])
endfunction

function InitTrig_JASS takes nothing returns nothing
    set gg_trg_JASS = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_JASS_test, EVENT_PLAYER_HERO_LEVEL )
endfunction

Como podrán ver, en esa función se necesita un valor numérico y una cadena, es el texto en negrita.

Eso lo podemos reemplazar con variables. Miren bien la siguiente función. Donde yo creo 2 variables locales antes de poner la función que mostrara el texto.

Código:
function JASS_Actions takes nothing returns nothing
    local string s = "Probando el jass"
    local integer i = 30
    call DisplayTimedTextToForce( GetPlayersAll(), i, s )
endfunction

function InitTrig_JASS takes nothing returns nothing
    set gg_trg_JASS = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_JASS_test, EVENT_PLAYER_HERO_LEVEL )
endfunction

Como veran ahora en vez de el 30 y el texto, aparecen los nombres de las variables, pues es exactamente lo mismo, hacer esto no nos sirve de nada en esta funcion, pero les puede ahorrar muchas cosas a la hora de hacer, spells por ejemplo.

Aquí hay otros eventos para que vayan viendo

EVENT_DIALOG_BUTTON_CLICK = cuando se clikea un boton de dialogo
EVENT_GAME_LOADED = cuando se carga una partida
EVENT_GAME_VICTORY = cuando se gana una partida
EVENT_PLAYER_DEFEAT = cuando pierde un player la partida
EVENT_PLAYER_LEAVE = cuando un noob nos kitea
EVENT_UNIT_ATTACKED = cuando una unidad es atacada
EVENT_UNIT_SPELL_EFFECT = Cuando una unidad comienza el efecto de una habilidad.


En google pueden buscar un programa llamado JassCraft que les ayudara bastante ya que viene con una lista de todas las funciones, ustedes solo escriben por ejemplo "EVENT_" y les aparecen todas las funciones que comienzan asi, osea les van a aparecer eventos como los q puse arriba.

PD: Para el evento de Map intialization no hace falta poner nada, osea borran la funcion TriggerRegisterAnyUnitEventBJ.

Sigamos viendo este tema..

Ahora por ejemplo ponemos en el trigger

Código:
local string a = “proban”
local string b = “do”

ahora lo ponemos en el trigger y cambiamos al ultimo:

Código:
function JASS_Actions takes nothing returns nothing
local string a = “proban”
local string b = “do”
    call DisplayTimedTextToForce( GetPlayersAll(), 30, a+b)
endfunction

El resultado sera Probando . Como ya explique esto no sirve mucho aqui pero mas adelante lo pueden aplicar con otras cosas mas grandes.

En el caso de arriba unimos 2 variables, de la misma manera se puede unir un string y una variable poniendo

Código:
call DisplayTimedTextToForce( GetPlayersAll(), 30, a+”aqui el texto que quieren que se una a la variable”)

La “a” es la variable que ira primero.

.

Arrays:

Un array es un grupo de variables con el mismo nombre pero diferentes índices.

Para declarar arrays usamos

local array

No puedes darle un valor al array al crearlo.

Si quieres saber cuanto es el maximo numero de indices que puede tener un array. Van de 0 a 8191 .. no es poco no?

Para que el editor sepa cual es el indice que queremos usar se pone:

[numero de indice]

Miramos un ejemplo:

Código:
function JASS_Actions takes nothing returns nothing
local string array a
    set a[1] = “Primer indice”
    set a[2] = “Segundo indice”
    call DisplayTimedTextToForce( GetPlayersAll(), 30, “Los valores de los indices del array es: ” +a[1]+a[2] )
endfunction

El resultado en la pantalla sera:

Los valores de los indices del array es: Primer indice Segundo indice

Si les confunde eso de arriba es asi:

Primero la string entre comillas, luego cerramos comillas y SUMAMOS el primer indice, luego volvemos a sumar el otro indice.
Integers:

Ahora veremos mas a fondo este tipo de variables.
Mas que nada veremos esto:

I2S
Esta funcion convierte un integer a un string, osea si tenemos una variable del tipo integer con el numero 34, y lo ponemos en la parte donde debemos poner un string no les aparecera el numero 34, porque no es un string, esta funcion sirve para que si lo sea.

Y se usa de esta manera:

Código:
function JASS_Actions takes nothing returns nothing
local integer a = 34
    call DisplayTimedTextToForce( GetPlayersAll(), 30, “El valor de el integer a es “ +I2S(a) )
endfunction

Como veran se usa poniendo I2S(nombre de variable)

Ahora un poco de matematicas:

Los operadores de los integer son:

+ : Adicion.
* : Producto
/ : Division
- : Sustraccion

[quote] As a standard, computer languages and math in general consider product and division before addition and substraction.

(): You can use parenthesis to determine which operation goes first. [/quote ]

Esto dice algo como que la pc considera el producto y la division antes de la adicion y la sustraccion.

Para solucionar esto puedes usar parentesis para determinar que operacion va primero.

Si prestan atencion en las clases de matematica (operaciones combinadas, ecuaciones), entenderan esto, y si no, yo no soy su profesor/a de matematica Very Happy.

Ejemplifiquemos el uso de operaciones entre variables.











Código:
function JASS_Actions takes nothing returns nothing
local integer a=1
local integer b=2
local integer c=3
local integer d=4
local integer r
    set r= a+b+c*d
    call DisplayTextToForce( GetPlayersAll(), "1. r= "+I2S(r) )
    set r= (a+b+c)*d
    call DisplayTextToForce( GetPlayersAll(), "2. r= "+I2S(r) )
    set r= a+(b-c)
    call DisplayTextToForce( GetPlayersAll(), "3. r= "+I2S(r) )
    set r= (a+b+c+d)/5
    call DisplayTextToForce( GetPlayersAll(), "4. r= "+I2S(r) )
endfunction

Espero que hayan entendido esto, el resultado sera:

1. r= 15
2. r= 24
3. r= 0
4. r= 2

Como veran antes de llamar la funcion siempre seteamos la variable "r",

a+b+c*d

Seria: 1+2+3*4

Entonces el resultado de esa operacion (15) sera el nuevo valor de "r"

Es igual con lo demas, como veran (igual que en las operaciones combinadas ¬¬), agrupamos con parentesis para obtener distintos resultados, notese aqui:

a+b+c*d

(a+b+c)*d

El resultado de lo primero es 15 porque 1+2+ el resultado de 3*4 es 15... y bueno despues se agrupan con parentesis y cambian blah blah blah.. eso deberian saberlo, (ya dije q no soy su profesor ¬¬)


Pero aqui tienen una explicacion de nuestro amigo Vexorian (si ese que hakeo el jass):

1+2+3*4 = 1+2+12 = 15
(1+2+3)*4 = 6*4 = 24
1+(2-3) = 1 + (-1) = 0
(1+2+3+4) / 5 = 10 / 5 = 2

Para convertir un String a un Integer usamos S2I.

Nose muy bien como explicar esto asi que lo quoteo a vexorian:


If you want the result to be an integer, you will have to convert the string back to an integer. For this we use S2I(string) .

Código:
function Trig_JASS_test_Actions takes nothing returns nothing
 local integer a = 2
 local integer b = 3
 local string st= I2S(a)+I2S(b)
 local integer new = S2I(st)

    set a= new-1

    call DisplayTextToForce( GetPlayersAll(), I2S(a) )
endfunction

El resultado es 22.

Para los que no saben ingles:

Spoiler:
Que se jodan

Bueno gente llego hasta aqui pueden ir usando otros tutoriales, este lo ire extendiendo (ya que el de vexorian sigue mas largo) cuando pueda.

PD: LuchioK en los spoilers las letras son grises y no se nota mucho, el color "fosforecente" del code tampoco queda bien, aver si podes cambiarlos 0k

_________________



Mas vale telecaster en mano, que cientos de stratos sonando
avatar
xZetH
GameTester
GameTester

Cantidad de envíos : 1462
Edad : 23
Localización : En la puerta de tu casa
Experiencia Foro :
160 / 500160 / 500

Puntos : 3256
Fecha de inscripción : 01/11/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Guia] JASS: Introduccion.

Mensaje por LuchioK el Sáb Mar 21, 2009 11:35 pm

Buenisima, Esto Voy a leerlo Wink

Se agradece el Aporte Wink

Subo Post !.

PD: Ya arregle los Code del foro.

_________________
]
avatar
LuchioK
Admin
Admin

Cantidad de envíos : 1627
Edad : 27
Localización : Haciendo deporte informatico!
Experiencia Foro :
500 / 500500 / 500

Puntos : 3486
Fecha de inscripción : 09/09/2008

Ver perfil de usuario http://lksite.superforo.net

Volver arriba Ir abajo

Re: [Guia] JASS: Introduccion.

Mensaje por SainT_CamuS el Lun Mar 23, 2009 7:56 pm

:O , estoy jodido por que se poco de ingles >.<

_________________



avatar
SainT_CamuS
GameTester
GameTester

Cantidad de envíos : 1736
Edad : 24
Localización : En el Santuario
Experiencia Foro :
120 / 500120 / 500

Puntos : 3142
Fecha de inscripción : 17/09/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Guia] JASS: Introduccion.

Mensaje por xZetH el Lun Mar 23, 2009 10:04 pm

:arrowdup No creo, todo el tuto lo hice yo en español, lo unico q esta en ingles es lo de abajo, que es facil de entender.. como vos dijiste.. hace falta saber "poco" nomas..

PD: Era broma? Razz

PD2: Luchiok ya arregla eso de que noseve cuanta (en numeros) exp tengo ¬¬.. si no me equivoco la exp es aparte de los puntos

_________________



Mas vale telecaster en mano, que cientos de stratos sonando
avatar
xZetH
GameTester
GameTester

Cantidad de envíos : 1462
Edad : 23
Localización : En la puerta de tu casa
Experiencia Foro :
160 / 500160 / 500

Puntos : 3256
Fecha de inscripción : 01/11/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Guia] JASS: Introduccion.

Mensaje por Jlba el Dom Mayo 31, 2009 2:55 pm

Hola, supongo que ya me conocen Very Happy
Esta bueno el tuto, realmente lo necesitaba, pero tengo un problema:



Me aparece eso y no se como arreglarlo, espero me ayuden.

PD: continua el tuto que esta muy chevere Smile


Edit>> Duda solucionada, estaba demas el "_test" y faltaba esto
Código:
call TriggerAddAction(gg_trg_JASS,function JASS_Actions)

Bueno tuto 0k

Jlba
Campesino
Campesino

Cantidad de envíos : 3
Edad : 21
Localización : Venezuela
Experiencia Foro :
0 / 5000 / 500

Puntos : 3100
Fecha de inscripción : 31/05/2009

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Guia] JASS: Introduccion.

Mensaje por Contenido patrocinado


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.