ElRaulxX Posted July 28, 2012 Report Share Posted July 28, 2012 En el anterior capítulo, keko os explico más o menos como podemos estructurar una quest. En este capítulo nos centraremos en el cuerpo, exactamente en los whens. El uso de los whens es lo más básico dentro de una quest. A partir de aquí podremos desarrollar cualquier acción de una quest. Estructura básica de un when. Antes de todo, tenemos que recordar la estructura de un when: when [x] begin -- end *Esta es la estructura básica. Podemos añadirle muchísimas más cosas que explicaré en este capítulo, pero de momento, no nos avancemos. Llamaremos [x] a una variable que nos sirva para todos los casos. ¿Qué pasaría si no siguiéramos esta estructura? Pues que nos saltaría este error: Debéis recordar siempre que todos los whens siguen esa estructura. Sino, no funcionará y no la reconocerá el servidor. 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. Voy a listarlas todas (o casi todas). Las pondré en orden de uso y dificultad. Es posible que algunas de ellas ahora no les encontréis utilidad en este momento. Es recomendable que dentro de un tiempo las volváis a repasar para acabar de entenderlas y poder darles su debido uso. *Lo que está en cursiva puede ser sustituido. idnpc.chat."texto" : Al utilizarlo se abrirá un dialogo con opciones. Al dar click al texto empieza el contenido del when. idnpc.click : Al hacer click en el npc, empieza el contenido del when. kill : Cuando el jugador mata un enemigo, comienza el contenido del when. idmob.kill : Cuando el jugador mata al enemigo con idmob empieza el contenido del when. party_kill : Cuando un miembro del grupo mata a un enemio, comienza el contenido del when. idmob.party_kill : Cuando un miembro del grupo mata a aun enemigo con idmob, empieza el contenido del when. login : Cuando el jugador se logea, empieza el contenido del when. logout : Cuando el jugador se deslogea, empieza el contenido del when. letter : Relacionado con las letters (explicación en otro capitulo). button : Relacionado con las letters (explicación en otro capitulo). info : Relacionado con las letters (explicación en otro capitulo). nombre.timer : Cuando el timer llamado con nombre llega a 0, empieza el contenido del when. nombre.server_timer : Cuando el server_timer llamado con nombre llega a 0, empieza el contenido del when. nombre.target.click : Cuando haces click al tarjet nombre empieza el contenido del when. nombre.target.arrive : Cuando llegas al punto con el tarjet nombre empieza el contenido del when. ( ) Unos cuantos ejemplos: quest cap3_1 begin state start begin when login begin --cuando te logeas say("¡Hola mundo!") -- muestra en dialogo end end end quest cap3_2 begin state start begin when 9012.chat."Quest de prueba" begin --cuando hablas con el npc 9012 say("¡Hola mundo!") --muestra en dialogo end end end quest cap3_3 begin state start begin when 101.kill begin --cuando matas al mob con id 101 say("¡Hola mundo!") --muestra en dialogo end end end Sabiendo todo esto que acabo de explicar ya tenemos una gran parte avanzada, pero ¡aquí no acaba toda la información de los whens! Hasta ahora he puesto tan solo un when por quest ¿no se pueden poner más? ¡Claro que sí! Veamos: (recordar cerrar todos los whens!) quest cap3_4 begin state start begin when 9012.chat."Quest de prueba 1" begin --cuando hablas con el npc haciendo click a Quest de prueba 1 9012 say("¡Hola mundo!") --muestra en dialogo end when 9012.chat."Quest de prueba 2" begin --cuando hablas con el npc haciendo click a Quest de prueba 2 9012 say("¡Hola mundo!") --muestra en dialogo end end end quest cap3_5 begin state start begin when 9012.chat."Quest de prueba" begin --cuando hablas con el npc 9012 say("¡Hola mundo!") --muestra en dialogo end when login begin --cuando te logeas say("¡Hola mundo!") -- muestra en dialogo end end end En este momento ya deberíais empezar a entender el funcionamiento básico de las quests. Si no es así, revisa estos 3 capitulos de nuevo antes de continuar el capítulo y el curso restante. Es importante que nunca escribáis algo que no entendáis. Si no, (me cito a mí mismo) pasaría esto en un futuro: [/size][/font] A mi parecer, este lenguaje os empezará siendo bastante sencillo. Aún así, esta sencillez puede ir complicándose hasta llegar al punto de que sino entendéis realmente el funcionamiento básico de las quests no entenderéis nada. Expandiendo la estructura básica de un when. Como dije antes, esa tan solo era la estructura básica de un when. Esta estructura podemos complicarla tanto como queramos añadiendo condiciones o juntando varias acciones de distintos whens. Partiremos de la quest básica: (A partir de ahora tan solo pondré la parte del when. No os olvidéis nunca de poner el inicio de la quest y los states, igual que su correspondiente cierre) when 101.kill begin --cuando matas al mob con id 101 say("¡Hola mundo!") --muestra en dialogo end Empezaremos poniendo una condición. En este caso, que el usuario sea mayor de nivel 5. when 101.kill with pc.get.level() > 5 begin --cuando matas al mob con id 101 + con nivel mayor de 5 say("¡Hola mundo!") --muestra en dialogo end De esta manera (utilizando with) podemos añadirle una condición. Si el usuario no coincide con la condición, el servidor omitirá el when en el que estamos trabajando. Esto nos puede ahorrar escribir codigo. En vez de poner una condición dentro del when, la ponemos en el propio when (más información sobre las condiciones en el capítulo IV de keko). Más ejemplos: when 101.kill with pc.get_map_index == 41 begin --cuando matas al mob con id 101 + estando en el mapa con index 41 say("¡Hola mundo!") --muestra en dialogo end when 101.kill with pc.get_max_hp > 5000 begin --cuando matas al mob con id 101 + teniendo un valor de HP mayor de 5000 say("¡Hola mundo!") --muestra en dialogo end when 101.kill with pc.is_mount begin --cuando matas al mob con id 101 + estando montado en una montura say("¡Hola mundo!") --muestra en dialogo end Hasta ahora hemos trabajado con una sola condición ¿podemos añadir más? Claro! Cogemos nuestro ejemplo anterior. when 101.kill with pc.get.level() > 5 begin --cuando matas al mob con id 101 + con nivel mayor de 5 say("¡Hola mundo!") --muestra en dialogo endAhora queremos que, demás de ser mayor de nivel 5, posea el item con vnum 19: when 101.kill with pc.get.level() > 5 and pc.count_item(19) > 1 begin --cuando matas al mob con id 101 + con nivel mayor de 5 + en posesión del item con id 19 say("¡Hola mundo!") --muestra en dialogo endDe esta manera (utilizando and) podemos añadirle todas las condiciones que queramos, poniendo siempre antes un with. Partiremos de nuevo (aunque ahora algo diferente) de dos whens básicos. when 101.kill begin --cuando matas al mob con id 101 say("¡Hola mundo!") --muestra en dialogo end when login begin --cuando te logeas say("¡Hola mundo!") --muestra en dialogo end Podemos juntarlos? Claro! Veamos: when login or 101.kill begin --cuando matas al mob con id 101 / te logeas say("¡Hola mundo!") --muestra en dialogo endDe esta manera (utilizando or) podemos poner que la acción se efectúe en diversas situaciones o con diferentes condiciones.Todo lo que hemos visto hasta ahora podemos combinarlo como queramos. when 101.kill or 102.kill or 103.kill begin say("¡Hola mundo!") --muestra en dialogo end when login with pc.get_map_index == 41 or 101.kill with pc.get.level() > 5 and pc.count_item(19) > 1 begin say("¡Hola mundo!") --muestra en dialogo end when 101.kill with pc.get_map_index == 1 or 101.kill with pc.get_map_index == 41 begin say("¡Hola mundo!") --muestra en dialogo end Podemos hacer tantas combinaciones de whens como queramos. Tan solo es saber entender el funcionamiento de las quests. Y lo más importante! Sin práctica no se aprende! La mejor manera de aprender quest es mirar otras quests ya echas e intentar imitarlo, hacer pruebas y pruebas hasta ver el funcionamiento, o leer este curso. Pero claro! Solo con este curso no vais a aprender. Recordar que, sin práctica, nada se aprende! Kryzz, Blesse, Wutong and 6 others 9 Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted July 28, 2012 Report Share Posted July 28, 2012 Capitulo mas corto pero para mi el mas practico de los 3. Poco a poco voy aprendiendo, intentare hacer alguna quest sencilla y os la pondré aquà para que me digáis fallos o recomendaciones. ElRaulxX 1 Link to comment Share on other sites More sharing options...
Pathits! Posted July 28, 2012 Report Share Posted July 28, 2012 Es la contiene mayor información y conocimiento que todas pero me enredo xD ElRaulxX 1 Link to comment Share on other sites More sharing options...
Santy!. Posted July 28, 2012 Report Share Posted July 28, 2012 muchas gracias ademas me distes una idea :trollface: ElRaulxX 1 Link to comment Share on other sites More sharing options...
KeKo Posted July 28, 2012 Report Share Posted July 28, 2012 Buena raul, me gusto el guiño (no se si alguien se habra fijado) a los programadores novatos para los que tan aprendiendo lua xd: say("¡Hola mundo!") Que es lo tipico que hace una persona cuando aprender a programar, un programa que diga Hello World. P.D: Siguiente capi me toca a mi. Link to comment Share on other sites More sharing options...
ElRaulxX Posted July 28, 2012 Author Report Share Posted July 28, 2012 Buena raul, me gusto el guiño (no se si alguien se habra fijado) a los programadores novatos para los que tan aprendiendo lua xd: Que es lo tipico que hace una persona cuando aprender a programar, un programa que diga Hello World. P.D: Siguiente capi me toca a mi. No podemos hacer un curso sin decir eso Link to comment Share on other sites More sharing options...
destroyer Posted July 28, 2012 Report Share Posted July 28, 2012 Un curso genial , en cuestión de minutos aprendes sobre la estructura basica de una quest y ya puedes realizar tu primera quest , la verda faltaba una guia asi para que todos pudieramos aprender sobre el lenguaje quest. Felicitaciones por este gran curso !! ElRaulxX 1 Link to comment Share on other sites More sharing options...
fuuton97 Posted July 28, 2012 Report Share Posted July 28, 2012 Excelente Raúl, ya he tenido muchas ideas de crear quest, otra cosa, si es posible que hagas la guÃa de como poner o la función para que te cargue una imagen en la quest, asà como en el .sg :okay: Link to comment Share on other sites More sharing options...
Santy!. Posted July 28, 2012 Report Share Posted July 28, 2012 seeeee eso. Link to comment Share on other sites More sharing options...
SeMa™ Posted July 28, 2012 Report Share Posted July 28, 2012 Muy buena Raul y Keko , ya voy aprendiendo algo Link to comment Share on other sites More sharing options...
iluvatar Posted July 28, 2012 Report Share Posted July 28, 2012 Excelente Raúl, ya he tenido muchas ideas de crear quest, otra cosa, si es posible que hagas la guÃa de como poner o la función para que te cargue una imagen en la quest, asà como en el .sg :okay: Mira la mision de caza ahi aparesen: setbgimage('level_bg.tga') y luego mas adelante addimage(20,12,special.levelup_img[special.levelup_quest[lev][s*2-1]]) eso lo puedes utilizar para poner imagenes en las misiones de forma simple, reemplazando y/o agregando las imagenes que quieras cargar. Link to comment Share on other sites More sharing options...
Recommended Posts