Ir a contenido

Foto

Capítulo VIII - Las tablas, amigas o enemigas?


  • Please log in to reply
13 Respuesta(s) a este Tema
Metin2

#1
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)
Buenas zoneros, hoy que me encuentro especialmente trabajador (es decir, que no me apetece estudiar) voy a publicar una nueva entrega del curso de creación de quests de metin2zone.
Esta nueva guía se la dedico a mi amigo raul, que siempre me habia dicho que debería aprender esto :trollface: y que era una de las guias que teniamos planeadas cuando configuramos el curso por primera vez pero que no se llego a llevar a cabo.

Como veis la he titulado: amigas o enemigas? es para que os deis cuenta de que como programadores que somos los que nos especializamos en lua es importante reducir el código lo máximo posible por diferentes razones: ocupa menos, es menos texto para la vista, queda mas guay, etc y tu quest seguirá haciendo lo mismo que antes pero con menos código.

1 - Tablas:

Bueno, antes de nada vamos a crear nuestra tabla o array sencillo:

Please Login or Register to see this Hidden Content


Como veis, a diferencia de los selects a los que estáis acostumbrados los elementos de la tabla estan dentro de { }

---------------------------------------------------------------------------------------------------------------------------
Ojo:Los elementos deben estar separados por comas, y el último de ellos NO debe llevar la coma.
---------------------------------------------------------------------------------------------------------------------------

Bueno, ahora que tenemos una mini tabla vamos a llamar a los diferentes elementos de la misma. La sintaxis es la siguiente:

Please Login or Register to see this Hidden Content


Please Login or Register to see this Hidden Content


Como veis escribimos el nombre del local y luego entre [ ] ponemos la posicion del elemento que queramos seleccionar dentro del array.

Asi que ahora ya podeis meter vuestras tablas en la quest del siguiente modo:

Please Login or Register to see this Hidden Content


De todos modos en ese ejemplo un for lo haría mucho mas sencillo, aunque ya os explicare mas a fondo como se usa

Please Login or Register to see this Hidden Content


2 - Arrays con subcategorías:

Bueno, hemos visto una tabla sencillita, vamos a complicar un poco la cosa:

Please Login or Register to see this Hidden Content


Ahora tenemos una tabla con diferentes apartados dentro della. Vamos a ver como sería la sintaxis en este caso:

Please Login or Register to see this Hidden Content


Please Login or Register to see this Hidden Content


-----------------------------------------------------------------------------------------------------
Ojo:Las subcategorias deben estar separadas por comas, y la ultima NO la lleva
-----------------------------------------------------------------------------------------------------

Como veis, de nuevo escribimos el nombre, luego pondremos un primer [ ] con la subcategoría, que es el número de arrays simples dentro del array compuesto:

Please Login or Register to see this Hidden Content


En el segundo [ ] va la posicion del elemento como habiamos hecho con el array simple

Please Login or Register to see this Hidden Content


Please Login or Register to see this Hidden Content


Veamoslo en una quest:

Please Login or Register to see this Hidden Content


3. Arrays + funciones + selects = locura?

Bien, hasta ahora solo hemos visto ejemplos sin llegar a hacer una quest en condiciones. Lo más habitual usando arrays es combinarlos con un local = select del siguiente modo

Please Login or Register to see this Hidden Content


De este modo, segun lo que eligamos en el select, nos asignara uno de los elementos del array, si pinchamos en Ninfa +0 el juego enviara al array la orden de mostrar el elemento de posicion 1, si pinchas en Ninfa +1 te enviará la de posicion 2 y así sucesivamente.

Por lo tanto, al meter el resultado del select en el array

Please Login or Register to see this Hidden Content


Te dara la que hayas seleccionado, y así te evitarás tener que poner tres if y solo pondras 1

Ahora con un array doble:

Please Login or Register to see this Hidden Content


Tal y como está ahora, cogera la subcategoría del select, y una vez la tenga te dara lo que tengas en la posicion 1 y en la cantidad pondra lo que tengas en la posicion 2. De este modo, aunque las cantidades del item sean diferentes podrás hacerlo con un solo if.

Y por último vamos a meterle mas complicacion, una funcion dentro del array!

Please Login or Register to see this Hidden Content


Bien, ahora en este caaso el juego nos va a dar un arma aleatoria, porque hemos incluido la funcion math.random dentro del array. Tal y como la hemos puesto:

Please Login or Register to see this Hidden Content


Nos dara un resultado que puede estar entre 1 y el numero de subcategorias que tiene la tabla items.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------
(table.getn(nombretabla)) es una función muy útil que devuelve el número maximo de elementos que tiene una tabla simple o de subcategorias de una compuesta)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------

Por lo tanto tal y como esta configurada la quest buscara primero la subcategoría, que sera el número aleatorio, y después irá a la posicion dentro de ella que le hemos dicho (1 para la id y 2 para la cantidad)

4 - KeKo, no lo hemos entendido!!!!

Bueno vale, os pondré otro ejemplo:

Please Login or Register to see this Hidden Content


5 - Subcategorías numeradas

Vamos a probar otra cosa: y si metemos un numero determinado para cada subcategoría en vez de 1,2,3,etc?

Please Login or Register to see this Hidden Content


Veamos la sintaxis de esto:

Please Login or Register to see this Hidden Content


De nuevo debemos hacer referencia primero a la subcategoria y luego a la posicion detro de la misma.

Y para que nos sirve esto? Tiene un monton de aplicaciones pero una muy típica es igualar la numeración de la subcategoría a una funcion:

Please Login or Register to see this Hidden Content


De este modo la subcategoría la reconoce el juego segun el item que hayas usado.

Y bueno chicos, eso sería todo. Todavía me quedaría muchísimo de explicar sobre el uso de las tablas, pero el hecho de que no tengo demasiado tiempo y de que mis conocimientos de las mismas no son tan amplios como los de Noa (y muchos otros xd) lo dejaré aqui en esta entrega del curso de quests. Espero que os sea útil.
  • A fuuton97, PACI, Croqueta y a 1 más les gusta esto

#2
LORDCarlo™

LORDCarlo™

    Gran forero

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 549 Mensaje(s)
Muy buena tio!! Oie este lenguaje se basa en python no???

#3
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

Muy buena tio!! Oie este lenguaje se basa en python no???


Ese lenguaje se llama lua ._.

#4
LORDCarlo™

LORDCarlo™

    Gran forero

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 549 Mensaje(s)
Aaaaa tio yo pensaba que era basado en python pero bueno muchas gracias por la guia!!!!

#5
Melany

Melany

    Experimentado

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 357 Mensaje(s)
  • Sexo:Masculino
yo solo se pseudocodigo

#6
Rafa23Alzira

Rafa23Alzira

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 2.015 Mensaje(s)
Muy buena KeKo, como siempre todo es practicar, estaría bien que os ayudara Noa, pero veo que a veces tiene problemas con el Español, Gracias :)

#7
PACI

PACI

    Forero Experto

  • Developer
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.628 Mensaje(s)
  • Sexo:Indefinido
Aqui te falta un ), si no me equivoco KeKo.

Please Login or Register to see this Hidden Content

Supongo que seria así: pc.give_item2(items[math.random(1,table.getn(items))][1],items[math.random(1,table.getn(items))][2])
  • Rafa23Alzira likes this

"My tea's gone cold, I'm wondering why I got out of bed at all. The morning rain clouds up my window, and I can't see at all."

"I guess words are a mothafucka, they can be great, or they can degrade, or even worse they can teach hate."

"Now you shut up bitch! I am talkin'! Thought I was full of horseshit and now you fuckin' worship the ground in which I am walkin'!"

"But no matter how many fish in the sea, it'd be so empty without me."

"I'll probably never get the props I feel I ever deserve."

"I don't mean to be mean, but that's all I can be is just me."


#8
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

Aqui te falta un ), si no me equivoco KeKo.

Please Login or Register to see this Hidden Content

Supongo que seria así: pc.give_item2(items[math.random(1,table.getn(items))][1],items[math.random(1,table.getn(items))][2])


Um sep se me colo el ) las prisas son malas compañeras perdonad ^^

#9
EzekielitohMercury

EzekielitohMercury

    LEGEND OF METIN2ZONE

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.955 Mensaje(s)
  • Skype:ezekielitoh.turritohh
  • Sexo:Masculino
  • Localización:Argentina
Gracias keko buen aporte ;D
  • NataliMontoya likes this

#10
Croqueta

Croqueta

    Experimentado

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 309 Mensaje(s)
keko no lo entiendo por q en la parte esta 2 - Arrays con subcategorías: cordes[4][2] es -> 12300 ami me da nil por q son solo 3 tablas en esta parte 4 - KeKo, no lo hemos entendido!!!! local sitio = select ("Mapa1" , "Mapa2", "Mapa3" , "Cerrar") sito es un select no una tabla por eso me pregunto por q usas esto if sitio == table.getn(sitio)+1 then return end table.getn(tala) esta funcion cuenta las cosas en la tabla por ejemplo a={4,5,6,13,5} print(table.getn(a))-->5 del select debe de ser nil por q el sitio no es una tabla perdona por corregirte pero es mejor saver los errores y no aserlo muchas veses, por q con una script complicada puede ser ese error mui grave

#11
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

keko no lo entiendo por q en la parte esta

2 - Arrays con subcategorías:

cordes[4][2] es -> 12300

ami me da nil
por q son solo 3 tablas

en esta parte
4 - KeKo, no lo hemos entendido!!!!

local sitio = select ("Mapa1" , "Mapa2", "Mapa3" , "Cerrar")

sito es un select no una tabla
por eso me pregunto por q usas esto

if sitio == table.getn(sitio)+1 then return end

table.getn(tala) esta funcion cuenta las cosas en la tabla por ejemplo

a={4,5,6,13,5}
print(table.getn(a))-->5
del select debe de ser nil por q el sitio no es una tabla

perdona por corregirte pero es mejor saver los errores y no aserlo muchas veses, por q con una script complicada puede ser ese error mui grave


Pos en el primer caso era un 3, me equivoque al escribirlo [3][2]

En el segundo caso también me equivoqué, era table.getn(cordes) no (sitio).

#12
libra123

libra123

    Curioso

  • Miembro
  • MarcarMarcarMarcar
  • 33 Mensaje(s)

yo solo se pseudocodigo

Yo sé Visual Basic y si tienes la lógica entonces sabrás programar no importa en que lenguaje esté.



#13
Lynx

Lynx

    Interesado

  • Miembro
  • MarcarMarcarMarcarMarcar
  • 46 Mensaje(s)

Yo sé Visual Basic y si tienes la lógica entonces sabrás programar no importa en que lenguaje esté.

si sabes visual basic sabrás que esa tipa hace 1 año que no se conecta al foro, no? xd



#14
Dilong

Dilong

    Forero Experto

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 2.945 Mensaje(s)

si sabes visual basic sabrás que esa tipa hace 1 año que no se conecta al foro, no? xd

Ya no entra al foro,no se por que algunos responden a alguien en un post de hace años si no sabe si sigue en la comunidad o no,por eso en zone esta lleno de spam no hay moderadores que cierren post antiguos etc.






0 Usuario(s) están leyendo este Tema

0 miembro(s), 0 invitado(s), 0 usuario(s) anónimo(s)