Diseñando motor de Items para la Churrera

For all things Churrera. ¿Estás haciendo un juego? ¿quieres proponer un cambio? ¿tienes alguna duda? ¡Cuéntanoslo!

Moderador: na_th_an

Nightwolf
Mensajes: 215
Registrado: Sab, 15 Oct 2011, 11:24

Re: Diseñando motor de Items para la Churrera

Mensajepor Nightwolf » Jue, 27 Feb 2014, 17:05

Bueno, pues ya están los objetos pasados al nuevo sistema de inventario. He jugado y podido pasarme el juego :_)

Una preguntilla, ¿poner un texto con el nombre del objeto seleccionado se podría hacer sin tocar C? Usando TEXT valdría...
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Diseñando motor de Items para la Churrera

Mensajepor na_th_an » Jue, 27 Feb 2014, 17:40

No, no se podría. El script sólo se ejecuta cuando pulsas acción, no todo el tiempo. Sería incluso difícil hasta meterlo en C, ya que habría que crear alguna estructura para contener los objetos como entidades y luego relacionarla con el sistema de scripting.
Como diría Rorshach: "Urm..."
Avatar de Usuario
radastan
Mensajes: 692
Registrado: Vie, 20 Ago 2010, 12:54
Contactar:

Re: Diseñando motor de Items para la Churrera

Mensajepor radastan » Lun, 03 Mar 2014, 14:58

Vale, la pregunta del millón. Quiero que hasta no tengas un arma no puedas disparar... ¿es posible con el inventario? presupongo que si, no me ha dado por ponerme a ello.

Me viene de perlas para el próximo juego, porque es un sucedáneo de RPG a lo Brunilda.
Nightwolf
Mensajes: 215
Registrado: Sab, 15 Oct 2011, 11:24

Re: Diseñando motor de Items para la Churrera

Mensajepor Nightwolf » Lun, 03 Mar 2014, 15:10

Hombre, así de cabeza, creo que sí.

Al principio, pones que la munición es de 0, así al principio el jugador no podrá disparar.

Luego, en algún momento, le das al jugador munición y listo :) Lo que no sé es si con este sistema puedes darle munición infinita.

EDIT: pues no veo ningún comando que sirva para recargar la munición, así como RECHARGE lo es para la vida :(
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Diseñando motor de Items para la Churrera

Mensajepor na_th_an » Lun, 03 Mar 2014, 15:49

radastan escribió:Vale, la pregunta del millón. Quiero que hasta no tengas un arma no puedas disparar... ¿es posible con el inventario? presupongo que si, no me ha dado por ponerme a ello.

Me viene de perlas para el próximo juego, porque es un sucedáneo de RPG a lo Brunilda.


Esto está en el cambio que he hecho para Alessandro y que subiré en muy breve como versión 3.99.3c. Puedes definir un flag que controle el comportamiento de los disparos. Si ese flag vale 0, no se puede disparar. Si vale 1, sí se puede. ¿Te sirve?

Si quieres probar, échale un vistazo. Además de definir PLAYER_CAN_FIRE tienes esta otra:

Código: Seleccionar todo

#define PLAYER_CAN_FIRE_FLAG   1


Si defines las dos, el flag cuyo número sea el que se referencia en la directiva controlará el comportamiento de los disparos.
Adjuntos
mt-churrera-3.99.3c.zip
(1.4 MiB) Descargado 97 veces
Como diría Rorshach: "Urm..."
Nightwolf
Mensajes: 215
Registrado: Sab, 15 Oct 2011, 11:24

Re: Diseñando motor de Items para la Churrera

Mensajepor Nightwolf » Mar, 18 Mar 2014, 00:35

Una preguntilla, ¿dónde puedo cambiar el tile seleccionador del inventario? ¿Dónde se encuentra definido? :)
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Diseñando motor de Items para la Churrera

Mensajepor na_th_an » Mar, 18 Mar 2014, 07:47

No es un tile, son dos caracteres de tu charset (los cachitos que se usan para pintar los tiles o poner textos), y se pintan ambos del mismo color:

Código: Seleccionar todo

ITEMSET
   # Número de huecos:
   SIZE 3
   
   # Posición x, y
   LOCATION 2, 21
   
   # Horizonta/vertical, espaciado
   DISPOSITION HORZ, 3
   
   # Color y caracteres para pintar el selector
   SELECTOR 66, 82, 83
   
   # Flag que contiene qué hueco está seleccionado
   SLOT_FLAG 14
   
   # Flag que contiene qué objeto está en el hueco seleccionado
   ITEM_FLAG 15
END


Es el comando "SELECTOR". Primero el atributo, luego los números de los dos caracteres que vas a usar, de 0 a 255.
Como diría Rorshach: "Urm..."
Nightwolf
Mensajes: 215
Registrado: Sab, 15 Oct 2011, 11:24

Re: Diseñando motor de Items para la Churrera

Mensajepor Nightwolf » Mar, 18 Mar 2014, 10:17

Como siempre, ¡mil gracias! :cheer:
Nightwolf
Mensajes: 215
Registrado: Sab, 15 Oct 2011, 11:24

Re: Diseñando motor de Items para la Churrera

Mensajepor Nightwolf » Lun, 14 Abr 2014, 10:13

Una preguntilla. ¿Cómo sería posible que no se "coma" la parte inferior del gráfico del item cuando no está elegido? Quiero decir, que si un item está apuntado, se dibuja el gráfico selector, pero sino, dibuja uno negro. ¿Esto se podría cambiar para que dibujase otro gráfico?

Un saludete :)
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Diseñando motor de Items para la Churrera

Mensajepor na_th_an » Lun, 14 Abr 2014, 10:23

Claro, todo puede hacerse, pero modificando código. No es demasiado directo porque el código que maneja los items lo genera el compilador de scripts. Habría que modificar msc.bas y recompilarlo.

A partir de la linea 638:

Código: Seleccionar todo

   ' Generate display_items
   If itemSetOr = 0 Then
      ' Horizontal
      print #f, "void display_items (void) {"
      print #f, "    its_p = " & itemSetX & ";"
      print #f, "    for (its_it = 0; its_it < MSC_MAXITEMS; its_it ++) {"
      print #f, "        draw_coloured_tile (its_p, " & itemSetY & ", items [its_it]);"
      print #f, "        if (its_it != flags [FLAG_SLOT_SELECTED]) {"
      print #f, "            sp_PrintAtInv (" & (itemSetY + 2) & ", its_p, 0, 0);"
      print #f, "            sp_PrintAtInv (" & (itemSetY + 2) & ", its_p + 1, 0, 0);"
      print #f, "        } else {"
      print #f, "            sp_PrintAtInv (" & (itemSetY + 2) & ", its_p, " & itemSelectClr & ", " & itemSelectC1 & ");"
      print #f, "            sp_PrintAtInv (" & (itemSetY + 2) & ", its_p + 1, " & itemSelectClr & ", " & itemSelectC2 & ");"
      print #f, "        }"
      print #f, "        its_p += " & itemSetStep & ";"
      print #f, "    }"
      print #f, "}"
   Else
      ' Vertical
      print #f, "void display_items (void) {"
      print #f, "    its_p = " & itemSetY & ";"
      print #f, "    for (its_it = 0; its_it < MSC_MAXITEMS; its_it ++) {"
      print #f, "        draw_coloured_tile (" & itemSetY & ", its_p, items [its_it]);"
      print #f, "        if (its_it != flags [FLAG_SLOT_SELECTED]) {"
      print #f, "            sp_PrintAtInv (its_p + 2, " & itemSetX & ", 0, 0);"
      print #f, "            sp_PrintAtInv (its_p + 2, " & (itemSetX + 1) & ", 0, 0);"
      print #f, "        } else {"
      print #f, "            sp_PrintAtInv (its_p + 2, " & itemSetX & ", " & itemSelectClr & ", " & itemSelectC1 & ");"
      print #f, "            sp_PrintAtInv (its_p + 2, " & (itemSetX + 1) & ", " & itemSelectClr & ", " & itemSelectC2 & ");"
      print #f, "        }"
      print #f, "        its_p += " & itemSetStep & ";"
      print #f, "    }"
      print #f, "}"
   End If


Donde pone "0, 0" se refiere al atributo 0 y el tile 0, que es lo que se usa para borrar. Habría que cambiar por el atributo y el número de caracter que se quiere poner.
Como diría Rorshach: "Urm..."

Volver a “La Churrera”

¿Quién está conectado?

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