Entidad 3D :: Creación de juegos en 3D sin programar

Foro de Entidad 3D
 
PortalÍndiceBuscarMiembrosGrupos de UsuariosFAQChatAnalisisRegistrarseConectarse
. . . . . . . . . . . . . . . . . . . . . . . .
Visita el sitio oficial de Entidad 3D para descargar la última versión!
Si encuentras un bug en la útlima versión de Entidad 3D, comunícaselo directamente al autor de Entidad 3D, Jordi Perez via correo electronico. Si no estás seguro si es un bug o no, consúltalo con la gente del foro!
Si eres un usuario nuevo preséntate en el subforo de saludos y despedidas para asegurar tu cuenta! (Los usuarios que tengan 0 mensajes pasados los primeros 10 días de creada su cuenta serán eliminados como política de limpieza del foro)

Comparte | 
 

 (Tutorial) Barra de vida para multiples enemigos

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Wizard
Experto
Experto
avatar

Último Juego : Murciélago v3.0
Sexo : Masculino
Mensajes : 589
Edad : 30
Localización : Perdido

MensajeTema: (Tutorial) Barra de vida para multiples enemigos   Sáb Nov 28, 2015 10:44 pm

Este es un sistema de barras de vida para multiples enemigos al mismo tiempo.

Con solo los 10 tipos de barras que permite tener Entidad-3d y con 17 variables podrás manejar todos los enemigos que quieras y que cada uno, al recibir un impacto con un arma, muestre su nivel de vida en una barra.

Como es lógico habrá enemigos que compartan el mismo número de barra. En este caso se irá intercambiando el valor de vida del último impacto.

Variables reservadas (17):
Código:
ce3d_enemigo_barra_num
ce3d_enemigo_barra_vacia
ce3d_enemigo_barra_valor
ce3d_enemigo_barra_valor_total
ce3d_enemigo_impactos
ce3d_enemigo_num
ce3d_enemigo_vida
ce3d_enemigos_barra_num
ce3d_enemigos_fragmento_ini
ce3d_enemigos_fragmento_fin
ce3d_enemigos_vida_inicial
ce3d_enemigos_vida_real
ce3d_barras_llenas
ce3d_barras_vacias
ce3d_posFin
ce3d_posIni
ce3d_posMed

¿Como funciona?

Primero hay que iniciar los valores de las barras y enemigos con este archivo:
ce3d_barra_iniciar.ini
Código:
;
; Inicia los valores de los enemigos
;
   ACCI PONE ce3d_enemigos_vida_inicial=x2x5x20x3x3x8xf
   ACCI PONE ce3d_enemigos_vida_real=%ce3d_enemigos_vida_inicial%
   ACCI PONE ce3d_enemigos_barra_num=x2x1x2x3x3x2x
  
;
; Establece limites de las barras
;
   ACCI PONE ce3d_barras_vacias=x4x4x20xxxxxxxxx
   ACCI PONE ce3d_barras_llenas=x163x163x210xxxxxxxxx

En:
ACCI PONE ce3d_enemigos_vida_inicial=x2x5x20x3x3x8xf

Se especifica la cantidad de impactos que debe recibir un enemigo para morir.
Como se ve hay unas x que separan los valores de cada enemigo y una xf al final que siempre debe de estar.
En ese ejemplo el:

  • Enemigo 1 muere tras 2 impactos
  • Enemigo 2 muere tras 5 impactos
  • Enemigo 3 muere tras 20 impactos
  • Enemigo 4 muere tras 3 impactos
  • Enemigo 5 muere tras 3 impactos
  • Enemigo 6 muere tras 8 impactos

Si solo necesitas 3 pones:
ACCI PONE ce3d_enemigos_vida_inicial=x7x3x100xf
Y significaría:

  • Enemigo 1 muere tras 7 impactos
  • Enemigo 2 muere tras 3 impactos
  • Enemigo 3 muere tras 100 impactos

Puedes añadir todos los que necesites siguiendo el mismo patrón.


En la siguiente variable a tocar sería:
ACCI PONE ce3d_enemigos_barra_num=x2x1x2x3x3x2x

Aquí se especifica que tipo de barra (1-10) va a mostrar cada enemigo y sigue el mismo patrón que los impactos. Con la diferencia de que esta vez termina la variable en x en vez de en xf

En ese ejemplo el:

  • Enemigo 1 usa la barra número 2
  • Enemigo 2 usa la barra número 1
  • Enemigo 3 usa la barra número 2
  • Enemigo 4 usa la barra número 3
  • Enemigo 5 usa la barra número 3
  • Enemigo 6 usa la barra número 2


Las siguientes variables siguen el mismo patrón con la diferencia de que especifican el valor mínimo y máximo de las barras:
ACCI PONE ce3d_barras_vacias=x4x4x20xxxxxxxxx
ACCI PONE ce3d_barras_llenas=x163x163x210xxxxxxxxx

Con eso ejecutándolo al comienzo del nivel tendrías preparados los valores.

Ahora toca el segundo y último archivo. Este archivo tiene que ejecutarse al recibir un impacto el enemigo:
ce3d_barra_impacto1.ini:
Código:

;
; Ejecutamos en cada disparo
;
   ;
   ; Establecemos los valores iniciales que necesita cada enemigo
   ;
   ACCI PONE ce3d_enemigo_num=1




   ;
   ; Saca el valor de la barra del enemigo
   ;
   ; busca inicio del valor
   ACCI BUSCAR_CADENA ce3d_enemigos_barra_num,%ce3d_enemigo_num%,x
   ACCI PONE ce3d_posIni=%POS_CADENA_ENCONTRADA%

   ; busca fin del valor
   ACCI OPE+ ce3d_enemigo_num 1
   ACCI BUSCAR_CADENA ce3d_enemigos_barra_num,%ce3d_enemigo_num%,x
   ACCI PONE ce3d_posFin=%POS_CADENA_ENCONTRADA%

   ; Extraemos el valor de barra vacia
   ACCI OPE- ce3d_posFin 1
   ACCI OPE+ ce3d_posIni 1
   ACCI COPIAR_SUB_CADENA ce3d_enemigos_barra_num,ce3d_enemigo_barra_num,%ce3d_posIni%,%ce3d_posFin%

   ; Devolvemos el numero del enemigo
   ACCI OPE- ce3d_enemigo_num 1




   ;
   ; Saca el valor vacio de la barra
   ;
   ; busca inicio del valor
   ACCI BUSCAR_CADENA ce3d_barras_vacias,%ce3d_enemigo_barra_num%,x
   ACCI PONE ce3d_posIni=%POS_CADENA_ENCONTRADA%

   ; busca fin del valor
   ACCI OPE+ ce3d_enemigo_barra_num 1
   ACCI BUSCAR_CADENA ce3d_barras_vacias,%ce3d_enemigo_barra_num%,x
   ACCI PONE ce3d_posFin=%POS_CADENA_ENCONTRADA%

   ; Extraemos el valor de barra vacia
   ACCI OPE- ce3d_posFin 1
   ACCI OPE+ ce3d_posIni 1
   ACCI COPIAR_SUB_CADENA ce3d_barras_vacias,ce3d_enemigo_barra_vacia,%ce3d_posIni%,%ce3d_posFin%

   ; Devolvemos el numero de la barra
   ACCI OPE- ce3d_enemigo_barra_num 1




   ;
   ; Saca el valor lleno de la barra
   ;
   ; busca inicio del valor
   ACCI BUSCAR_CADENA ce3d_barras_llenas,%ce3d_enemigo_barra_num%,x
   ACCI PONE ce3d_posIni=%POS_CADENA_ENCONTRADA%

   ; busca fin del valor
   ACCI OPE+ ce3d_enemigo_barra_num 1
   ACCI BUSCAR_CADENA ce3d_barras_llenas,%ce3d_enemigo_barra_num%,x
   ACCI PONE ce3d_posFin=%POS_CADENA_ENCONTRADA%

   ; Extraemos el valor de barra llena
   ACCI OPE- ce3d_posFin 1
   ACCI OPE+ ce3d_posIni 1
   ACCI COPIAR_SUB_CADENA ce3d_barras_llenas,ce3d_enemigo_barra_valor_total,%ce3d_posIni%,%ce3d_posFin%

   ; Devolvemos el numero de la barra
   ACCI OPE- ce3d_enemigo_barra_num 1




   ;
   ; Saca el valor de vida total del enemigo
   ;
   ; busca inicio del valor
   ACCI BUSCAR_CADENA ce3d_enemigos_vida_inicial,%ce3d_enemigo_num%,x
   ACCI PONE ce3d_posIni=%POS_CADENA_ENCONTRADA%

   ; busca fin del valor
   ACCI OPE+ ce3d_enemigo_num 1
   ACCI BUSCAR_CADENA ce3d_enemigos_vida_inicial,%ce3d_enemigo_num%,x
   ACCI PONE ce3d_posFin=%POS_CADENA_ENCONTRADA%

   ; Extraemos el valor de vida total del enemigo
   ACCI OPE- ce3d_posFin 1
   ACCI OPE+ ce3d_posIni 1
   ACCI COPIAR_SUB_CADENA ce3d_enemigos_vida_inicial,ce3d_enemigo_impactos,%ce3d_posIni%,%ce3d_posFin%

   ; Devolvemos el numero del enemigo
   ACCI OPE- ce3d_enemigo_num 1




   ;
   ; Saca el valor de vida real del enemigo
   ;
   ; busca inicio del valor
   ACCI BUSCAR_CADENA ce3d_enemigos_vida_real,%ce3d_enemigo_num%,x
   ACCI PONE ce3d_posIni=%POS_CADENA_ENCONTRADA%

   ; Extraemos el fragmento inicial
   ACCI COPIAR_SUB_CADENA ce3d_enemigos_vida_real,ce3d_enemigos_fragmento_ini,1,%ce3d_posIni%

   ; busca fin del valor
   ACCI OPE+ ce3d_enemigo_num 1
   ACCI BUSCAR_CADENA ce3d_enemigos_vida_real,%ce3d_enemigo_num%,x
   ACCI PONE ce3d_posMed=%POS_CADENA_ENCONTRADA%

   ; Extraemos el valor de vida del enemigo
   ACCI OPE- ce3d_posMed 1
   ACCI OPE+ ce3d_posIni 1
   ACCI COPIAR_SUB_CADENA ce3d_enemigos_vida_real,ce3d_enemigo_barra_valor,%ce3d_posIni%,%ce3d_posMed%

   ; busca fin del fragmento
   ACCI BUSCAR_CADENA ce3d_enemigos_vida_real,1,f
   ACCI PONE ce3d_posFin=%POS_CADENA_ENCONTRADA%

   ; Extraemos el fragmento final
   ACCI OPE+ ce3d_posMed 1
   ACCI COPIAR_SUB_CADENA ce3d_enemigos_vida_real,ce3d_enemigos_fragmento_fin,%ce3d_posMed%,%ce3d_posFin%




   ;
   ; Calculamos el valor relativo de la barra a mostrar
   ;
   ; Restamos el disparo
   ACCI OPE- ce3d_enemigo_barra_valor 1
   ACCI PONE ce3d_enemigo_vida=%ce3d_enemigo_barra_valor%
  
   ; Hacemos la regla de tres
   ACCI OPE* ce3d_enemigo_barra_valor %ce3d_enemigo_barra_valor_total%
   ACCI OPE/ ce3d_enemigo_barra_valor %ce3d_enemigo_impactos%

   ; Modificamos el valor mostrado
   ACCI BARRAVALOR %ce3d_enemigo_barra_num% %ce3d_enemigo_barra_valor%

   ; Ponemos la barra
   ACCI BARRAVISIBLE %ce3d_enemigo_barra_num%




   ;
   ;Matamos al enemigo si ha llegado al minimo y eliminamos la barra de la vista
   ;
   IF COND ce3d_enemigo_vida<1
      ; Asignamos el valor de la vida real entera
      ACCI PONE ce3d_enemigo_vida=%ce3d_enemigo_impactos%
      ; Hacemos invisible la barra al morir
      ACCI BARRAINVISIBLE %ce3d_enemigo_barra_num%
      ; Pon aqui lo que quieras que se ejecute cuando muera el enemigo
      ACCI TEXT Enemigo muerto
   ENDIF




   ;
   ; Actualizamos el valor de vida real
   ;
   ACCI PONE ce3d_enemigos_vida_real=%ce3d_enemigos_fragmento_ini%
   ACCI OPEC ce3d_enemigos_vida_real %ce3d_enemigo_vida%
   ACCI OPEC ce3d_enemigos_vida_real %ce3d_enemigos_fragmento_fin%
En este archivo solo hay que modificar una variable que está al comienzo:
ACCI PONE ce3d_enemigo_num=1

Ahí tienes que poner el número de enemigo. Este número tiene que ser único. Vamos, empiezas por el 1, sigues por el 2... así hasta 100 o 200...

¿Para que mostrar tanta barra de vidas?
Recuerdo esos juegos retro en los que en el final del nivel tenías que matar al jefe. Este tenía una gran barra de energía que parecía no acabar nunca y varios escoltas con barras de energía mas pequeñas que reaparecían hasta que acababas con el jefe.

También se pueden usar por todo el nivel para tener unos enemigos con distinto nivel de vida y acorde a lo que queramos sin limitarnos al 100 de vida de serie que trae entidad.

Para cualquier duda por aquí estaremos.

________________________________________
[Tienes que estar registrado y conectado para ver este vínculo]
| [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] |
Volver arriba Ir abajo
Ver perfil de usuario http://www.comunidad-e3d.com
 

(Tutorial) Barra de vida para multiples enemigos

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» ¿Como poner una barra de vida?
» Barra tipo wibilla, para el pie de mi foro
» Como editar la barra de vida de un usuario
» Problema en tutorial barra-de-navegacion-despegable
» Barra de Vida

Permisos de este foro:No puedes responder a temas en este foro.
Entidad 3D :: Creación de juegos en 3D sin programar :: Entidad 3D :: Comandos :: Tutoriales-