CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 20 Sep 2019 04:53

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 10 mensajes ] 
Autor Mensaje
NotaPublicado: 16 Sep 2011 17:28 
Desconectado
Elfito
Elfito

Registrado: 13 Sep 2011 00:29
Mensajes: 13
Buenas! Vamos progresando satisfactoriamente con el uso del Superglus :) De momento ya cargo imágenes en el área de texto, ya domino algunas condiciones para que salga cierto texto o crear cierto objeto, etc..

Lo que me interesa en especial es si sabéis algún ejemplo de combate automatizado, como los que he visto en algunas aventuras, del estilo: "atacar enemigo", enter, y lo demás lo hace el sistema, diciéndote el daño que infliges y el que recibes, hasta que el enemigo o tú mismo mueres.

Me iría genial poder ver cómo está hecho, así que si alguien sabe de algún juego con fuente incluida que lleve este sistema, me haría un gran favor de compartirlo, y así poder indagar sobre el tema ;)

Ya que estamos, y disculpad si pido mucho pero me es difícil encontrar material sobre esto, algún ejemplo de manejo de PNj's, que se me está resistiendo mirando solamente la ayuda...

Saludos!


Arriba
 Perfil  
 
NotaPublicado: 17 Sep 2011 17:36 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4645
DoZ escribió:
Buenas! Vamos progresando satisfactoriamente con el uso del Superglus :) De momento ya cargo imágenes en el área de texto, ya domino algunas condiciones para que salga cierto texto o crear cierto objeto, etc..

Lo que me interesa en especial es si sabéis algún ejemplo de combate automatizado, como los que he visto en algunas aventuras, del estilo: "atacar enemigo", enter, y lo demás lo hace el sistema, diciéndote el daño que infliges y el que recibes, hasta que el enemigo o tú mismo mueres.

Me iría genial poder ver cómo está hecho, así que si alguien sabe de algún juego con fuente incluida que lleve este sistema, me haría un gran favor de compartirlo, y así poder indagar sobre el tema ;)

Ya que estamos, y disculpad si pido mucho pero me es difícil encontrar material sobre esto, algún ejemplo de manejo de PNj's, que se me está resistiendo mirando solamente la ayuda...

Saludos!

Me temo queno hay código publicado, aunque Héroes de l Mazmorra, que esta en Superglus, tiene algo así. Desgraciadamente sus fuentes no son públicos

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 18 Sep 2011 10:51 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4645
Ahora que tengo un poco mas de tiempo, aunque como digo no hay un codigo publicado que lo use, yo me lo plantearía así:

1) Tener dos flags con los puntos de vida del jugador y del enemigo
2) Tener dos flags con el ratio de golpe (probabilidad de acertar en un golpe) de cada uno, en porcentaje 1-100%
3) Tener dos flags con el ratio de defensa (probabilidad de acertar bloquear un golpe) de cada uno, en porcentaje 1-100%
4) Tener un flag con el daño del arma de cada uno

- Cuando inicia el combate se inician los dos flags de vida al maximo
- Cada vez que el jugador escribe "ATACAR xxxxxxx" lanzamos un proceso que mediante una formula basada en la capacidad de ataque y la de defensa, y cierto valor de azar, determine si el jugador golpea al enemigo
- En caso de que así sea, usando en condacto RANDOM, y el valor del daño, calcule cuanta vida pierde el enemigo, y si llega a 0 o menos esta muerto
- Después el mismo proceso realiza el mismo acto pero en el sentido contrario (el enemigo ataca al jugador)

Obviamente esto implica tener información para cada posible enemigo. Por otro lado, esto no resuelve una situación de enemigos múltiples (luchar contra tres enemigos a la vez), en la cual tendríamos que poner algun sistema por el cual le pasemos al proceso el numero de enemigos que tenemos para que realice la segunda parte n veces, y ademas la vida, defensa y ataque de cada uno de ellos.

El metodo simple sería algo así (pongo solo la parte donde ataca el jugador, la otra es similar pero cambiando flags):

Código:

_ _
 WRITE "Intentas golpear a tu enemigo...."
 CLEAR fHemosGolpeado    ; Marco que por ahora no hemos golpeado
 RANDOM fAux                 ; Obtengo un valor del 1 al 100  (equivalente a 1D100 en juegos de rol)
 LT fAux fAtaqueJugador   ; Si el valor es inferior a las opciones de ataque del jugador es que hemos golpeado salvo que...
 RANDOM fAux                 ; Obtengo un valor del 1 al 100
 GT fAux fDefensaEnemigo ; Si el valor es mayor que las opciones de defensa del enemigo es que no consiguió bloquear
 SET fHemosGolpeado       ; marco que definitivamente, le hemos dado
 
_ _
  NOTZERO fHemosGolpeado   ; Si le hemos dado
  RANDOMX fAux @fArmaJugador      ; Obtengo un valor entre 1 y el daño máximo del arma del jugador
  WRITE "y tu ataque consigue golpearle por "
  PRINT fAux
  WRITELN " puntos de vida."
  GT fAux @fVidaEnemigo       ; Si quite mas puntos de vida de los que quedaban
  LET fAux @fVidaEnemigo      ; le dejo en los que quedaban para que la resta de 0

_ _
  NOTZERO fHemosGolpeado   ; Si le hemos dado, quito los puntos de vida
  MINUS fVidaEnemigo @fAux
 

_ _
  ZERO fHemosGolpeado   ; Si no hemos golpeado
  WRITELN "y fallas."



Al final de cada ronda de ataque el juego deberia comprobar si alguno de los valores de vida es 0 para dar por muerto al que toque. Antes de empezar el combate los valores de ataque, defensa y armas deberían ponerse segun equipo que lleve el jugador (tipica arma que ademas de tener un ataque 1-20, te da +3 en probabilidad de golpe y +5 en defensa, o armadura que lleve que le de tambien modificadores a tus puntos).

Obviamente a partir de esto se puede complicar cuanto se quiera, si en lugar de puntos de ataque y defensa se quieren hacer formulas mas complejas en plan atributos tipicos de RPGs (destreza, intelecto, fuerza, constitución, etc.) pues es complicar mas las formulas pero al final es un poco lo mismo.

Una vez hecho el sistema habrá que comprobar que el sistema es razonable, y que no hay una desventaja enorme para el jugador, o para los monstruos , es decir, que al principio con tu espada de madera puedas matar al zorro que te gruñe, pero para matar al dragon tengas que ir con la espada legendaria (+30 ataque, +90 defensa, +100 vida) y piezas adecuadas de armadura, y también asegurarte de que hay posibilidades de golpear, no sea que los combates acaben durando semanas porque todos los ataques fallan (tanto el enemigo como el jugador tienen capacidad de ataque muy baja y de defensa muy alta).

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 18 Sep 2011 11:40 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4645
Y ahora que tengo más aún, me he currado un ejemplo.

- Tenemos un troll, al que le cuesta moverse y por tanto golpearnos, pero que si nos golpea hace bastante daño
- Tenemos una daga, equipada
- Tenemos en el suelo, una espada
- Tenemos en el inventario una antorcha
- Las tres cosas pueden usarse como arma, en el PROCESO 3 se calculan los atributos del jugador dependiendo de que arma llevemos
- En la tabla de respuestas, aparte de la opcion de "equipar", tenemos el ataque al troll, la primera vez se inicializa y marcamos que estamos en combate con el flag fEnCombate
- Sería cuestion del resto de entradas no dejar hacer otras cosas mientras estamos en combate, incluso que si hacemos otra cosa el troll nos siga atacando
- En el PROCESO 4 se realiza un turno de combate, he hecho que escriba mas de lo habitual para que se vea como va el combate

Tras hacer unas cuantas pruebas he visto que con la antorcha es imposible matar al troll (bueno, imposible no hay nada, pero es francamente difícil). Con la daga es bastante difícil, aunque lo he conseguido una vez, y con la espada es relativamente facil (alguna vez mueres pero en general ganas).

El fichero de demo aqui:

http://www.caad.es/superglus/ficheros/combattest.TXP

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 18 Sep 2011 11:46 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4645
Si se quiere personalizar el combate, para que ponga "El Troll ataca" en lugar de "Tu adversario ataca", lo mejor es usar una secuencia de escape (http://www.caad.es/superglus/doku.php/v ... _de_escape), yo optaria por usar una serie de mensajes y rellenar el flag 11 con el valor correspondiente, usando la secuencia de escape "|", por ejemplo, hacer que el mensaje 1 fuera "El Troll " y al inicio del combate hacer LET 11 oTroll, y en el interior poner el WRITE "| te ataca y....."

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 18 Sep 2011 19:19 
Desconectado
Elfito
Elfito

Registrado: 13 Sep 2011 00:29
Mensajes: 13
Uto, eres un máquina tío!! :o Esto me va a servir muchísimo, muchas gracias.

Por cierto, para no abrir otro hilo y no monopolizar el foro (jeje), hay algún equivalente a los elseif? Y a los case? Y otra duda técnica. Hay forma de cargar animaciones? Es que vi una aventura muy bien hecha en que el personaje se iba para un lado u otro dependiendo de dónde fuéramos.

Saludos y gracias ^_^


Arriba
 Perfil  
 
NotaPublicado: 19 Sep 2011 22:21 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4645
Me temo que no hay elseif ni case, el modelo de Superglus no es la programación estructurada.

En cuanto a las animaciones, las puedes conseguir pintando gráficos mas pequeños sobre el gráfico de fondo con el condacto PICTUREAT (http://www.caad.es/superglus/doku.php/c ... :pictureat)

PD: yo prefiero que abras hilos para nuevos temas, así no solo te servirá a ti sino a futuros usuarios (encontraran mas fácil las cosas por tema). Claro que tampoco hace falta abrir un hilo por pregunta :lol:

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 20 Sep 2011 04:37 
Desconectado
Elfito
Elfito

Registrado: 13 Sep 2011 00:29
Mensajes: 13
No te preocupes, ya abriré hilos ya... jajaja Ok, entonces seguro que era con el PICTUREAT, la aventura que vi... Pues no veas qué conseguido. Es una pena que no acepte formatos como gif o avi, sería la leche :P Pero ya he leído que eso depende del autor del gluxe no?

En fin, aun sin ELSES ni CASES voy buscándome la vida. Ayer hice un jueguecito de dados en el que puedes apostar y tal, tomando de ejemplo tu código. Si no es por tu código nunca me da por poner la maldita @ en el 2º flag en los EQ, GT, etc. y me vuelvo loco jaja

Muchas gracias por tu amabilidad y atención!


Arriba
 Perfil  
 
NotaPublicado: 20 Sep 2011 09:26 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4645
Supongo que ya has pillado lo de la @, pero por si no esta claro, aqui esta explicado:

http://www.caad.es/superglus/doku.php/m ... ndireccion

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 26 Sep 2011 07:45 
Desconectado
Elfito
Elfito

Registrado: 13 Sep 2011 00:29
Mensajes: 13
Como siempre es bueno saber que no se ha ayudado para nada, aquí pongo el enlace de lo que llevo hecho de aventura:

http://legendsf1.net/aventuras/LA.html

La temática es de un campeonato y foro de un juego de coches online, MiniRacingOnline, por lo que hay muchos guiños que no se entienden si no eres del foro, pero bueno... He intentado hacerla lo más dinámica, amena y sencilla posible, ya que va dirigida a jugadores totalmente novatos y que no tienen ni afición ni experiencia para este tipo de aventuras.

Consejos:
1. Ir al norte primero para coger la pistola, es un puzzle de lo más sencillo...
2. Escribir "disparar alonso" en los baños, tras hablar con el hombre que está orinando.
3. Intentar ligarse a la tía que va y viene del paddock
4. Ir al bar (s,s,o desde el inicio) y hablar con el barbudo, podremos jugar a los dados y a la ruleta rusa.
5. Al sur del todo, en la localización pista, tirar del bolardo para acceder a la entrada secreta subterránea.
6. Ir hasta la primera sala grande del mapa, donde hay una celda y un panel. Introducir mal el código 3 veces.
7. Ir hasta el mismo sitio e introducirlo bien (es 1001, sólo que si no juegas al juego del campeonato y no eres del foro no captas la pista que doy en el baúl del pasillo sin salida).
8. Al final de los túneles hay un par de guardias que no nos dejan pasar a no ser que hablemos con ellos y lleguemos a un acuerdo. Para ganar 1000 Euros de golpe, escribe "mirar dinero" (pequeño cheat jeje) y podrás escoger darles los 1000 Euros y que te dejen pasar.

Y bueno, finlamente, una pequeña duda. ¿Por qué en la versión java algunos sonidos no se reproducen?

Saludos.


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 10 mensajes ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM