Página 3 de 5

Re: Diseñando motor de Items para la Churrera

Publicado: Jue, 27 Feb 2014, 17:05
por Nightwolf
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...

Re: Diseñando motor de Items para la Churrera

Publicado: Jue, 27 Feb 2014, 17:40
por na_th_an
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.

Re: Diseñando motor de Items para la Churrera

Publicado: Lun, 03 Mar 2014, 14:58
por radastan
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.

Re: Diseñando motor de Items para la Churrera

Publicado: Lun, 03 Mar 2014, 15:10
por Nightwolf
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 :(

Re: Diseñando motor de Items para la Churrera

Publicado: Lun, 03 Mar 2014, 15:49
por na_th_an
$this->bbcode_second_pass_quote('radastan', 'V')ale, 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:

$this->bbcode_second_pass_code('', '#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.

Re: Diseñando motor de Items para la Churrera

Publicado: Mar, 18 Mar 2014, 00:35
por Nightwolf
Una preguntilla, ¿dónde puedo cambiar el tile seleccionador del inventario? ¿Dónde se encuentra definido? :)

Re: Diseñando motor de Items para la Churrera

Publicado: Mar, 18 Mar 2014, 07:47
por na_th_an
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:

$this->bbcode_second_pass_code('', '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.

Re: Diseñando motor de Items para la Churrera

Publicado: Mar, 18 Mar 2014, 10:17
por Nightwolf
Como siempre, ¡mil gracias! :cheer:

Re: Diseñando motor de Items para la Churrera

Publicado: Lun, 14 Abr 2014, 10:13
por Nightwolf
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 :)

Re: Diseñando motor de Items para la Churrera

Publicado: Lun, 14 Abr 2014, 10:23
por na_th_an
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:
$this->bbcode_second_pass_code('', ' ' 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.