CAAD http://foro.caad.es/ |
|
Problemas con la tabla de respuestas y manejo de NPC-flg bit http://foro.caad.es/viewtopic.php?f=6&t=6378 |
Página 1 de 1 |
Autor: | guillermo [ 29 Jun 2019 05:48 ] |
Asunto: | Problemas con la tabla de respuestas y manejo de NPC-flg bit |
Saludos, buen día/tarde/noche segun corresponda. Escribo esta nota, para ver si alguien podría resolverme este gran enigma. ![]() Estoy tratando de realizar lo siguiente: Entrar a una posada, en la cual existe un NPC llamado juan el posadero. Nuestro amiguito Juan hará emotes siempre y cuando no estemos hablando con él. De manera que hay que buscar la manera de hablar con él. Voy a darle al jugador experiencia de manera randómica. ya bien sea que descubre algun objeto, bien, por que descubrió alguna pista para hablar con algun NPC u otro tipo de cosas. Descubrir como hablar con juan, otorga experiencia al jugador. Si la px es mayor o igual a 10, podemos proceder a hablar con juan. De lo contrario, tendremos que hacer mas experiencia. Bien, hasta aquí logro que marche todo a la perfección hasta lo siguiente: Pongo el texto de la aventura: La posada del pueblo. Quizá aquí puedas descansar o adquirir algo más. Aquí está Juan, el posadero. Salidas visibles: fuera. Juan el posadero, realiza anotaciones en su libro de cuentas. > EX JUAN Juan, el posadero feliz y sonriente, podría quizá hablar contigo. Ganas 11 puntos de experiencia. Juan el posadero, sirbe unas bebidas. > EXP Tienes 11 puntos de experiencia. Juan el posadero, realiza anotaciones en su libro de cuentas. > HABLAR JUAN Juan el posadero, levanta una ceja mirándote. > EXP Tienes 11 puntos de experiencia. > HABLAR JUAN "PISTA Juan el posadero, levanta una ceja mirándote. > HABLAR JUAN "COMPRAR Tengo a la venta una rica tarta de manzana. > HABLAR JUAN "COMPRAR TARTA Tengo a la venta una rica tarta de manzana. > HABLAR JUAN "COMPRAR MANZANA Juan el posadero dice: Bien, aquí tienes tu tarta de manzana, son 5 monedas de oro! Bien! optienes 7puntos de experiencia! Juan el posadero, sirbe unas bebidas. Juan el posadero, barre la posada. > I Tienes 20 monedas de oro. y ningún objeto. > EXP Tienes 18 puntos de experiencia. Juan el posadero, realiza anotaciones en su libro de cuentas. > EX JUAN Juan, el posadero feliz y sonriente, podría quizá hablar contigo. Es de mala educación. Juan el posadero, checa su reloj. Como podrán darse cuenta, hay una línea la cual quiero evitarla es esta: "Es de mala educación." ahora paso a explicar mi código. /definiciones ; MIS DEFINICIONES #define flg fDinero = 100 #define flg fHablaJuan 101 #define flg fTiradas 102 #define flg fTotalPx 103 ; flg fObjs para definir la bandera de los objetos examinados. ;Nota: trabajaremos con los bites del flag. ; este flag lo vamos a utilizar para determinar si los objetos ya se han examinado, para evitar dar mas experiencia. ; flg fObjs 0 lo usaremos para Ex a juan. #define flg fObjs 104 /pro0 ; ********************* [[[ Coloca aqui tus propias respuestas ]]] ********************* ;aquí examinamos a nuestro amigo juan, el cual es un NPC, por ende. hay atributo en nuestro objeto definido como juan **Creo que eso es lo que le hace fallar...** EXAMINAR JUAN AT lPosada PRESENT oPosadero WRITELN "Juan, el posadero feliz y sonriente, podría quizá hablar contigo." ,aquí ponemos esta sintax así, para dar siempre que juan nos de la pista de hablar, pero. solo una y nada mas que una única vez daremos Experiencia. BZERO fObjs 0, consultamos que el bit 0 del flg fObjs esté en 0, para levantarle despues. BSET fObjs 0 ,levantamos banderita del bit. es decir, ponemos a 1 el bit 0 del flg fObjs. RANDOMX fTiradas 10 PLUS fTiradas 1 WRITE "Ganas " PRINT fTiradas WRITELN " puntos de experiencia." ADD fTiradas fTotalPx DONE ; Segun yo. Con el código de arriba, podremos examinar a juan cuantas veces queramos dando experiencia solo la primer ves que le examinemos... Pero algo falla y cae al "Es de mala educación." ;consultar px. _ EXP ZERO fTotalPx writeln "Tienes 0 puntos de experiencia." DONE _ EXP NOTZERO fTotalPx WRITE "Tienes " PRINT fTotalPx WRITELN " puntos de experiencia." DONE ;Hablar con juan el posadero. HABLAR JUAN AT lPosada PRESENT oPosadero LE fTotalPx 9 ; si fTotalPx es menor o igual a 9... WRITELN "Juan el posadero no te hará caso hasta tener mas experiencia." DONE HABLAR JUAN AT lPosada PRESENT oPosadero GE fTotalPx 10 ;si fTotalPx es igual o mayor a 10. SET fHablaJuan PROCESS 3 DONE ; ############################### RESPUESTAS POR DEFECTO ################################## ; # # ; # Estas entradas devuelven las respuestas por defecto. Si no ponemos antes ninguna # ; # entrada que lo evite, se llegará hasta aquí y se dará la respeusta por defecto. # ; # # ; ######################################################################################### _ _ HOOK "RESPONSE_DEFAULT_START" ; Back call a el sistema de hooks, por defecto no hace nada pero algunas librerías plugin podrían hacer que hiciera algo. No borrar. I _ WRITELN "Tienes " PRINT fDinero WRITE " monedas de oro." INVEN /pro2 ; consultamos cada turno, la posibilidad de enviar al pro3. el cual es quien tiene la converzación y emociones de Juan. _ JUAN ZERO fHablaJuan PROCESS 3 /pro3 ; ** PROCESS 3 ** ; ** JUAN ** ; JUAN HABLARÁ CONTIGO. _ _ NOTZERO fHablaJuan PARSE WRITELN "Juan el posadero, levanta una ceja mirándote." DONE LISTAR _ NOTZERO fHablaJuan WRITELN "Juan el posadero dice: Saludos, puedes comprarme una tarta de manzana!" DONE COMPRAR MANZANA NOTZERO fHablaJuan WRITELN "Juan el posadero dice: Bien, aquí tienes tu tarta de manzana, son 5 monedas de oro!" MINUS fDinero 5 CLEAR fHablaJuan RANDOMX fTiradas 8 NEWLINE WRITE "Bien! optienes " PRINT fTiradas WRITELN " puntos de experiencia!" NEWLINE ADD fTiradas fTotalPx DONE COMPRAR _ NOTZERO fHablaJuan WRITELN "Tengo a la venta una rica tarta de manzana." DONE _ _ NOTZERO fHablaJuan WRITELN "Juan el posadero, te mira despreciativamente y vuelve a sus ocupaciones." DONE ; EMOTES DE JUAN. _ _ AT lPosada PRESENT oPosadero CHANCE 20 RNDWRITELN "Juan el posadero, checa su reloj." "Juan el posadero, sirbe unas bebidas." "Juan el posadero, realiza anotaciones en su libro de cuentas." _ _ AT lPosada PRESENT oPosadero CHANCE 30 RNDWRITELN "Juan el posadero, barre la posada." "Juan el posadero, seca el sudor de su frente." "Juan el posadero, cuenta las ganancias del día." DONE /obj ;obj loc peso nombre adjetivo atributo ;num ini /0 lCentroPlaza 100 FUENTE _ ATTR aDrinkable aFemale aStatic /1 lPosada 10 POSADERO _ ATTR aMale aNPC /2 lCentroPlaza 1 LETRERO _ ATTR aMale aStatic Estoy tratando de no hacer 2 bloques para Examinar Juan. Gracias de ante mano! |
Página 1 de 1 | Todos los horarios son UTC + 1 hora |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |