Ir a contenido

Foto

Capitulo IV - Profundicemos en las condiciones


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

#1
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

*
MENSAJE POPULAR!

Buenas zone!
De nuevo tras otro emocionante capítulo del curso brindado por el gran raul es mi turno de seguir con el curso. El capítulo de hoy tratará sobre las condiciones en las quests, lo que popularmente conoceis todos como usar if en una quest.

Esta vez también nos vamos a centrar en el cuerpo de una quest, y como mi colega raul empezare con la estructura básica de un if. Recordad esto primero:

Llamaremos [X] a una variable que nos sirva para todos los casos.


Pero como la variable [X] que nos hemos inventado no existe, tendremos que poner algo en su lugar, ¿no?
Podemos poner muchas acciones que puede realizar el usuario (pc) dentro del servidor.


De nuevo la idea es la misma que con los whens:



Por lo tanto la estructura es asi:

Please Login or Register to see this Hidden Content


Como veis cada if le corresponde un end y para que nos os de error al cargar tiene que ir un then al final del if, si no os saltara este error:

Imagen enviada

La sintaxis es incorrecta: el servidor espera encontrar un "then" después de la condición, pero no lo encuentra.


Bien si ya tenemos claro la estructura vamos a profundizar un poco en el uso de las condiciones. Lo primero de todo me gustaría hacer una pequeña distinción entre varios tipos de condiciones:

- Condiciones simples: Son aquellas que solo tienen un unico if (con sus posibles elseifs).

- Condiciones compuestas: Son aquellas que se dan en las quests en las que si superamos la primera condicion se nos pone otra condición. Ojo! Son 2 condiciones diferentes, que llevan dos if y dos ends.

- Condiciones opuestas: Que son las que usan habitualmente un else, o si no un return+end (ya os explicare como funcionan en el capi), y que son aquellas en las que ponemos una condicion y lo que pasara si se cumple lo contrario a esa condicion.

Bueno vamos aver un pequeño ejemplo de una quest que usa una condicion:

Please Login or Register to see this Hidden Content


Hasta aquí todo bien no? Como veis es una quest que se activa si te logeas en el mapa de city1 de jinno, pero te pone la condicion de que si eres del reino 1 (shinsoo) te aparece un mensaje diciendo que no estas en el mapa de tu reino.

Respecto a los ends, como hay un if lleva un end y los otros tres son del when y de la apertura.

Por lo tanto hagamos un resumen: cuando quieres poner una condicion en una quest primero pones el when [X] begin al que queremos ponerle la condicion, luego escribimos la condicion en si, la accion que se realiza una vez cumplida la condicion y el end.

Please Login or Register to see this Hidden Content



Ahora pongamos otro ejemplo con esta misma mision pero ya con algunos elseif:

Please Login or Register to see this Hidden Content


Ahora ya tenemos 3 condiciones, pero como os fijais solo 1 lleva if, ya que son continuacion de la primera y por lo tanto solo llevan un end por las tres.

Y también otro ejemplo del uso de un elseif, con un local select que es cuando mas vais a ver un elseif:

Please Login or Register to see this Hidden Content




A estas alturas ya os habreis dado cuenta de como funciona el uso de un elseif:

Please Login or Register to see this Hidden Content


Al igual que cuando usabamos un solo if, ponemos el when [X] begin, luego la condicion if [X] then y esta vez las otras posibilidades que queremos que haya unidas al primer if [X] then (podemos poner las que queramos) con la estructura elseif [X] then. Por último cerramos el if con un end.

Vayamos ahora a un caso de condicion compuesta, por ejemplo un teletransportador para un mapa:

Please Login or Register to see this Hidden Content


Ahora en vez de usar condiciones unidas a la primera (el if [X] then) ponemos diferentes condiciones, cada una de estilo if [X] then y con su respectivo end.

Usando las condiciones compuestas conseguimos que para llegar a la accion propia del when [X] begin haya que ir cumpliendo cada una de las condiciones. Es decir, si cumplimos la primera condicion el juego mirará aver si cumplimos la segunda.

Si no cumplimos la segunda no se ejecutará, y si la cumplimos mirará aver si cumplimos la tercera. Si cumplimos todas las condiciones, la accion principal se ejecutará.

Otra cosa a tener en cuenta es que podemos meter condiciones dentro de otras condiciones, y para eso os pondré un ejemplo en el que mezclaré condiciones simples con condiciones opuestas (hare mas compleja la quest de antes de las potas):

Please Login or Register to see this Hidden Content


Ahora hemos metido una condición dentro de otra: primero metemos la condicion de elegir la opcion 1 (la de potas rojas) y luego dentro de esa hacemos que el juego mire si tenemos 30k para comprar las potas.

Os habreis fijado que ahi usamos una condición opuesta:

Please Login or Register to see this Hidden Content


Ponemos la condicion:

Please Login or Register to see this Hidden Content


Luego lo que pasa si la cumplimos:

Please Login or Register to see this Hidden Content


Y para cerrar la condicion ponemos:

Please Login or Register to see this Hidden Content


De esta manera, lo siguiente que pongamos se cumplirá EN CUALQUIER CASO EN EL QUE NO CUMPLAMOS LA CONDICION ANTERIOR. Y como veis si tenemos mas de 45k de yang (es decir, no cumplimos la condicion) pues nos da las potas:

Please Login or Register to see this Hidden Content


Para acabar me gustaría hablarlos de la palabra else. Esta palabra se utiliza para hacer una condicion opuesta, ya que implica que si la cumplimos estará pasando cualquier cosa contraria a la de la condicion anterior. Veamos un ejemplillo, y os recalco que UN ELSE NO TIENE QUE LLEVAR SU CORRESPONDIENTE END.

Please Login or Register to see this Hidden Content


En este caso la condicion primera es que no tengamos ningun 5o bonus en el inventario, y si no la cumplimos (es decir, si que tenemos 5o bonus) pues nos dice que ya lo tenemos. Como usamos un else no especificamos una cantidad de bonus que tenemos que tener, si no que en cualquier caso contrario a que no tengamos ninguno nos dirá que sí lo tenemos.

Y bueno eso es todo en el capítulo de hoy, espero que lo hayais disfrutado y que os ayude a la hora de hacer nuevas quests .
  • A fuuton97, Joakin47, ElRaulxX y a 7 más les gusta esto

#2
Santy!.

Santy!.

    Forero Experto

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.047 Mensaje(s)
wow lo tengo que leer de vuelta me embrollo la cabeza muy bueno!

#3
ElRaulxX

ElRaulxX

    Forero

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcar
  • 97 Mensaje(s)
  • Sexo:Masculino
  • Localización:Barcelona, España
Aún no han acabado de leerse mi capítulo y les pones el tuyo xD ¡Les estallará la cabeza de tanta información! El próximo me toca a mí, a ver que tal se os dan los states :fuckyeah:

Imagen enviada


Imagen enviada

Imagen enviada


#4
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

Aún no han acabado de leerse mi capítulo y les pones el tuyo xD ¡Les estallará la cabeza de tanta información!

El próximo me toca a mí, a ver que tal se os dan los states :fuckyeah:


sip este lo hice ants de lo normal porque mañana no estare en todo el dia

#5
fuuton97

fuuton97

    Forero Profesional

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 610 Mensaje(s)
Excelente keko, aún así necesitaría todas las funciones de las quest y que hacen, solo tengo como 150 o 200 variables de la misma questlib.lua xD, sería genial que pusieras que hace cada una en específica. Saludos.

#6
Dialfoar

Dialfoar

    Novato

  • Miembro
  • Marcar
  • 5 Mensaje(s)
Ayer haciendo una quest y ya casi terminada, le quise agregar mas items que hace mi quest son muchos if con elseif que me comparan si el pj tiene cierta cantidad de x item en cada elseif le hago la comparacion

pero en el ultimo elseif le pongo que sea todo => a la cantidad de items que pido anteriormente, y todo lo uno con and pero cuando hago unir dos items con 1 and funciona y al poner 3 o 4 and ya no corre bien la quest me :S

Yo creo que no se puede mas de 1 and por linea de if , estoy en lo correcto ? tengo esa duda dejo una parte de lo que hablo

Please Login or Register to see this Hidden Content



Y excelentes aportes los que llevan en esta Web cada dia se esta mejorando mas la web ;)
Los Felicito

#7
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

Ayer haciendo una quest y ya casi terminada, le quise agregar mas items que hace mi quest son muchos if con elseif que me comparan si el pj tiene cierta cantidad de x item en cada elseif le hago la comparacion

pero en el ultimo elseif le pongo que sea todo => a la cantidad de items que pido anteriormente, y todo lo uno con and pero cuando hago unir dos items con 1 and funciona y al poner 3 o 4 and ya no corre bien la quest me :S

Yo creo que no se puede mas de 1 and por linea de if , estoy en lo correcto ? tengo esa duda dejo una parte de lo que hablo

Please Login or Register to see this Hidden Content


Pues sí, por desgracia no se pueden encadenar ifs con ands o ors (lo que es una pena la verdad) así que en tu caso yo probaria asi:


Please Login or Register to see this Hidden Content


No estoi seguro de que funcione que no tengo tiempo ahora para probarla y recuerda que el comando para ver si tienes un item es pc.count_item("item", cantidad) o si estas haciendo comparaciones pc.count_item("iditem") == cantidad.

#8
Dialfoar

Dialfoar

    Novato

  • Miembro
  • Marcar
  • 5 Mensaje(s)
Sip lo hize parecido pero despues me puse a mirar y dije eso son rebundancias.... por que compruebo que tenga <=9 por logica el pj tiene 10 o mas entonces ya no nesecito comprobar en el resto del codigo, y al final haciendolo a mi manera no podre dar la advertencia del ultimo item, pero como ya se que ese item no esta lo hago con un else.....

Gracias = tu forma tambien funciona pero creo que asi como digo haorramos codigo y como no salimos de la ventana, no veo provabilidades de que la bugueen

Please Login or Register to see this Hidden Content



Asi la termine dejando y corre muy bien, Gracias nuevamente por aportar, e igualmente por dar tu opinion sirve mucho para mirar los diferentes conociemientos y aprender mas ^^

#9
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

Sip lo hize parecido pero despues me puse a mirar y dije eso son rebundancias.... por que compruebo que tenga <=9 por logica el pj tiene 10 o mas entonces ya no nesecito comprobar en el resto del codigo, y al final haciendolo a mi manera no podre dar la advertencia del ultimo item, pero como ya se que ese item no esta lo hago con un else.....

Gracias = tu forma tambien funciona pero creo que asi como digo haorramos codigo y como no salimos de la ventana, no veo provabilidades de que la bugueen

Asi la termine dejando y corre muy bien, Gracias nuevamente por aportar, e igualmente por dar tu opinion sirve mucho para mirar los diferentes conociemientos y aprender mas ^^


Pues la verdad ni mire como tenias la parte anterior a la del problema asi que simplemente intente hacer lo que comentaras xd, pero si asi te iba mejor pos listo ^^

Me alegra ver comentarios como el tuyo ^^ es un placer compartir conocimiento y entre todos ir haciendo la comunidad cada vez mejor :D

#10
Hawk Server's

Hawk Server's

    Gran forero

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 516 Mensaje(s)
Amigo tengo una duda para hacer que un pj baje o suba su lv que pc......... tengo que poner yo antes de leer esto sabia muy poco de quest y ps recien termino este capitulo e intente hacer una aun no la pruebo pero si puedes decirme si tengo algo mal

Please Login or Register to see this Hidden Content



#11
Yori

Yori

    Forero Profesional

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 769 Mensaje(s)
no existe la funcion pc.set_level() tendrias que crearla usando mysql, pero para que fuese viable el jugador tendria que estar un tiempo off, como cuando se desbuguea un pj desde la web, que si se conecta rapido no se desbuguea. tambien tienes un un par de errores, te falto un end al final y pc.get.level() tienes que poner asi pc.get_level(). a simple vista no veo mas fallos Saludos, Yori
  • Hawk Server's likes this

#12
Hawk Server's

Hawk Server's

    Gran forero

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 516 Mensaje(s)
pero como hago para bajar al pj a lv 1?

#13
Yori

Yori

    Forero Profesional

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 769 Mensaje(s)
si tienes el sistema de mysql implementado en tu server, con esta funcion cambias el level, pero ya te digo que si el pj no esta off y pasa un tiempo hasta que se vuelva a conectar no creo que sirva. pero siempre puedes intentarlo.

Please Login or Register to see this Hidden Content


Saludos, Yori

Suerte

#14
Hawk Server's

Hawk Server's

    Gran forero

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 516 Mensaje(s)
no pues entonces no me sirve xq los user's son muy atorrantes y eso generaria problemas a cada momento con los user's :S hice la quest para nada LOL de igual manera gracias =)

#15
Desagradable

Desagradable

    Interesado

  • Miembro
  • MarcarMarcarMarcarMarcar
  • 57 Mensaje(s)

gracias por tu me gusta






0 Usuario(s) están leyendo este Tema

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