O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Tela Title e Design de Batalha - LifaSoul!

Iniciado por Lycanimus, 19/10/2014 às 19:30

19/10/2014 às 19:30 Última edição: 19/01/2015 às 01:22 por Lycanimus
Olá galera, a um tempo atrás eu postei a tela título que eu estava desenvolvendo para o meu projeto, e agora já fiz todas as correções e creio que já está praticamente pronta, gostaria de saber se está bom ou se preciso melhorar alguma coisa.

Também estou postando um novo design que eu fiz para a batalha do jogo, esse ainda não está totalmente pronto, ainda estou fazendo correções, mas da mesma forma gostaria da avaliação de vocês. Obrigado!

Bom, segue os trabalhos:

Tela Título antiga:



Nova Tela Title:


Agradeço ao SevenM pela correção feita na BG.

Design de Batalha antigo:
Spoiler
[close]


Novo design de Batalha:

Spoiler
[close]

Obs: O máximo de integrantes no grupo será de 3 membros, avaliações ou sugestões são bem vindas!
Fazer mapas é uma arte, faça como se fosse o seu último.




A Title está linda, gostaria de saber fazer uma assim. Agora sobre a cena de batalha... eu gostei
das HUD's, só que a fonte não combinou muito com o tema e os chars de goblin ficaram bem diferentes dos
chars de heróis.

No mais, meus parabéns!
Prazer, Terror dos Modinha

Makers - Obrigado pela avaliação cara, pois é, a fonte eu ainda estou procurando uma melhor mesmo, também achei que essa não ficou tão legal,vou ver se encontro uma melhor, quanto aos goblins, coloquei eles apenas de exemplo mesmo, pois eu vou deixar todos os inimigos do jogo no mesmo estilo dos personagens, obrigado pelo comentário!
Fazer mapas é uma arte, faça como se fosse o seu último.




Achei legal a title também. Lembra as dos primeiros RPGs que saíram pra N64 e PS1.
Só não vi se colocou BGM ou não pois estou sem som aqui, mas tá bem legal.
Eu acho que se o efeito das folhas e a névoa aparecessem desde o início ficaria
melhor, mas daí é preferencial.
Quanto à batalha tenho as mesmas observações que o Makers, mas como são
elementos provisórios, o restante está muito bom.

20/10/2014 às 17:36 #4 Última edição: 20/10/2014 às 22:52 por Lycanimus
Obrigado pelo comentário King, na title tem uma BGM sim, vou testar os efeitos da névoa e folhas começarem antes, vou ver como fica, pode ser que fique melhor mesmo.

Pois é, na batalha ainda é provisório, mas obrigado por reforçar o que eu devo corrigir, em breve atualizo o tópico com essas observações, novamente obrigado pelo comentário.
Fazer mapas é uma arte, faça como se fosse o seu último.




 Cara... que title. *-*
Muito bom, eu gostei bastante dela, nem sei o que apontar. Eu gostei do design da batalha também, mas é como o Makers falou antes, a fonte e os inimigos tem um estilo diferente mesmo.

E vai ter espaço para 4 personagens nesse design? Ou vai usar apenas 3?

Enfim, espero ver novas atualizações.

2010 ~ 2016 / 2024

Obrigado pelo comentário Vash, a Title ainda estou dando uns pequenos ajustes, mas a ideia final vai ser essa mesmo, já o design de batalha, eu já fiz na intenção de ser apenas 3 personagens mesmo, embora no game vai ser possível pegar mais membros para o grupo, na batalha será apenas 3 mesmo.

Estou arrumando esses pontos citados e em breve posto aqui as novas atualizações, vlw pelo comentário, abraços.
Fazer mapas é uma arte, faça como se fosse o seu último.




19/01/2015 às 00:31 #7 Última edição: 19/01/2015 às 01:22 por Lycanimus
Depois de algum tempo, consegui trabalhar um pouco mais em cima do projeto e fiz algumas correções na Tela Title e também no design de batalha, gostaria que avaliassem ou dessem sugestões sobre o mesmo, obrigado.


Nova Tela Title:


Agradeço ao SevenM pela correção feita na BG.


Novo design de Batalha:

Spoiler
[close]

Fazer mapas é uma arte, faça como se fosse o seu último.




Bom, a title eu achei bacana. Acho que não tenho nada a acrescentar.

Agora, a batalha, eu não achei que... combinaram, os elementos da tela. Tipo,
A imagem dos personagens clarinha, a HUD e o menu, principalmente as bordas,
achei "apagadas" e não estão tão boas quanto a barrinha que tá lá em cima, saka.
A de cima tá boa pra caramba, numa qualidade bem legal.
Mas bem, sou muito chato, ainda mais com design.
Gostei do fundo, e da ideia das barrinhas circundarem a face também, aliás
esse script tem nome? Fiquei curioso pra saber como funciona.

No mais, parabéns, Lyca. E continue progredindo.
  :XD:

É, a title não percebi muita diferença, mas continua legal sim, nada espetacular mas ficou legal.

Já a batalha realmente tem alguma coisa aí que não está combinando, tipo os elementos e o estilo dela são bons, muito bons, mas a combinação das imagens não flui como algo natural, acho que elas não criam um conjunto, ficaram meio diferentes umas coisas das outras.

As faces tão bem apagadas e não combinam com a interface das barras de hp, já a barra de comandos está com uma qualidade ruim, pixelizada e não combina nada com os ícones em PA que representam os comandos, já a caixa de texto lá em cima tem um design bem legal, mas não combina com os demais itens, além de estar com uma cor que acaba apagando um pouco os detalhes legais que ela tem, e pra finalizar o fundo é bem legal mas não combina com o restante também, ele é meio 3d e está com proporções muito maiores se comparando os chars, tanto é que uma tábua da ponte é muito maior que o char.

Então, acho que o layout tá ótimo (inclusive se puder dizer qual script eu adoraria), mas falta deixar todas as imagens com a mesma cara pra sair uma combinação legal.

Citação de: King Gerar online 19/01/2015 às 08:34
Bom, a title eu achei bacana. Acho que não tenho nada a acrescentar.

Agora, a batalha, eu não achei que... combinaram, os elementos da tela. Tipo,
A imagem dos personagens clarinha, a HUD e o menu, principalmente as bordas,
achei "apagadas" e não estão tão boas quanto a barrinha que tá lá em cima, saka.
A de cima tá boa pra caramba, numa qualidade bem legal.
Mas bem, sou muito chato, ainda mais com design.
Gostei do fundo, e da ideia das barrinhas circundarem a face também, aliás
esse script tem nome? Fiquei curioso pra saber como funciona.

No mais, parabéns, Lyca. E continue progredindo.
  :XD:

Obrigado pelas dicas King, vou refazer essas HUDS ou tentar deixa-las numa qualidade melhor, quanto ao script eu encontrei em um site russo se não me engano e não encontrei o nome do autor e no mesmo também não possui, vou postar o script se alguém souber me avise, para eu dar os devidos créditos, ele chama apenas HUDBattleSystem.

Obrigado pelo comentário King, vou rever tudo o que mencionou para melhorar, abraços.

Citação de: Uhtred online 19/01/2015 às 13:56
É, a title não percebi muita diferença, mas continua legal sim, nada espetacular mas ficou legal.

Já a batalha realmente tem alguma coisa aí que não está combinando, tipo os elementos e o estilo dela são bons, muito bons, mas a combinação das imagens não flui como algo natural, acho que elas não criam um conjunto, ficaram meio diferentes umas coisas das outras.

As faces tão bem apagadas e não combinam com a interface das barras de hp, já a barra de comandos está com uma qualidade ruim, pixelizada e não combina nada com os ícones em PA que representam os comandos, já a caixa de texto lá em cima tem um design bem legal, mas não combina com os demais itens, além de estar com uma cor que acaba apagando um pouco os detalhes legais que ela tem, e pra finalizar o fundo é bem legal mas não combina com o restante também, ele é meio 3d e está com proporções muito maiores se comparando os chars, tanto é que uma tábua da ponte é muito maior que o char.

Então, acho que o layout tá ótimo (inclusive se puder dizer qual script eu adoraria), mas falta deixar todas as imagens com a mesma cara pra sair uma combinação legal.

Obrigado pelo toque Uht, como falei para o King vou refazer essas HUDS ou deixa-las em uma qualidade melhor, vou tentar combinar melhor os elementos para tentar deixar algo mais natural e fluido como você falou, o fundo vou ver se modifico o tamanho também para tentar combinar melhor com o tamanho do char ou então trocarei mesmo.

É sempre bom receber essas dicas de pessoas que entendem da parte de Design, portanto muito obrigado pelo comentário.

Obs: Quanto ao script achei em um site russo se não me engano e não encontrei o nome do autor e no mesmo também não possui, mas estou postando ele para vocês, se souberem o autor me avisem, abraços.

#==============================================================================
# �–� Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Selectable
  # Skin File name
  BTSKIN_00 = "Btskin_main"   # Main Skin
  BTSKIN_01 = "Btskin_hp"     # HP(Gauge)
  BTSKIN_02 = "Btskin_mp"     # MP(Gauge)
  BTSKIN_04 = "Btskin_n00"    # HP(Numbers)
  BTSKIN_05 = "Btskin_n00"    # MP(Numbers)
  BTSKIN_03 = "Btskin_state"  # State
  # Skin coordinates[  x,  y]
  BTSKIN_B_XY = [-179, -10]     # �Ÿ��–座�™
  BTSKIN_00XY = [-38, -11]     #Main Skin
  BTSKIN_01XY = [-38,  -11]     # HP(gauge)
  BTSKIN_02XY = [-38, 22]     # MP(gauge)
  BTSKIN_04XY = [ 48, 6]     # HP(numbers)
  BTSKIN_05XY = [ 48, 27]     # MP(numbers)
  BTSKIN_03XY = [ 5, 10]     # �,��ƒ†�ƒ��ƒˆ�,��,��ƒ�
  BTSKIN_06XY = [ 30, -18]     # Status Battle
  # Various Settings
  BTSKIN_01GS = 9             # HP Gauge Speed (Low values are fast)
  BTSKIN_02GS = 9             # MP Gauge Speed(Low values are fast)
  BTSKIN_04SS = 9             # HP Rolling Numbers Speed(Low values are fast)
  BTSKIN_05SS = 5             # MP Rolling Numbers Speed(Low values are fast)
  BTSKIN_04NS = 4             # HP Maximum Digits
  BTSKIN_05NS = 4             # MP Maximum Digits
  BTSKIN_06WH = [24,24]       # [State Width, Height]
  BTSKIN_06SC = 3             # State Icon Scroll Speed
                              # (Values close to 1 are fast)
  # �ƒ��ƒˆ�ƒ��,��ƒ†�ƒ��,��,�座�™
  def set_xy
    @x = []
    @y = []
    for i in 0...$game_party.members.size
      x = (i * 145) + 40
      y = 3
      @x[i] = x + 176#+ STRRGSS2::ST_SX
      @y[i] = y + 16#+ STRRGSS2::ST_SY
    end
  end
  # 設�š�‡�‰€�"�"まで
  @@f = false
  
  
  #--------------------------------------------------------------------------
  # �˜... �,��,��ƒ��,��,�
  #--------------------------------------------------------------------------
  alias initialize_str33 initialize
  def initialize(f = false)
    initialize_str33
    unless @@f
      @f = @@f = true
    else
      @f = false
    end
    set_xy
    @s_sprite = []
    @s_party = []
    @s_lv = []
    @opacity = 255
    self.contents.dispose
    self.create_contents
    self.back_opacity = 0
    self.opacity = 0
    #@column_max = $game_party.actors.size
    @viewport = Viewport.new(0, 480-128, 640, 128)
    @hpgw = (Cache.system(BTSKIN_01)).width
    @mpgw = (Cache.system(BTSKIN_02)).width
    @viewport.z = self.z - 1
    @state_opacity = []
    @item_max = $game_party.members.size
    return unless @f
    for i in 0...@item_max
      draw_item(i)
    end
    update
  end
  #--------------------------------------------------------------------------
  # �—� �ƒ��ƒ•�ƒ��ƒƒ�,��ƒ�潰�—
  #--------------------------------------------------------------------------
  def refresh
    # :-)
  end
 
   #--------------------------------------------------------------------------
  # �—� �,��ƒ†�ƒ��ƒˆの描�"�
  #--------------------------------------------------------------------------
  def draw_actor_state(actor)
    icon = Cache.system("Iconset")
    w = actor.states.size * 24
    w = 24 if w < 1
    bitmap = Bitmap.new(w, BTSKIN_06WH[1])
    count = 0
    for state in actor.states
      icon_index = state.icon_index
      x = 24 * count
      rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      bitmap.blt(x, 0, icon, rect)
      count += 1
    end
    return bitmap
  end
  #--------------------------------------------------------------------------
  # �—� 名�‰��œ�ˆ�
  #--------------------------------------------------------------------------
   def name_bitmap(actor)
     bitmap = Bitmap.new(100, 24)
     bitmap.font.size = 20
     bitmap.draw_text_f(-4, 40, 100, 24, actor.name)
     return bitmap
   end
  #--------------------------------------------------------------------------
  # �—� �,��ƒ†�ƒ��ƒˆ�•��–�—
  #--------------------------------------------------------------------------
  def state_size(actor)
    return actor.states.size
  end
  #--------------------------------------------------------------------------
  # �—� �,��,��ƒ†�ƒ��œ�ˆ�
  #--------------------------------------------------------------------------
  def draw_item(index)
    return unless @f
    actor = $game_party.members[index]
    # 
    @s_sprite[index] = []
    s = @s_sprite[index]
    # �ƒ��,��ƒ��,��,��ƒ�
    s[0] = Sprite.new(@viewport)
    s[0].bitmap = Cache.system(BTSKIN_00)
    s[0].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_00XY[0]
    s[0].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_00XY[1]
    s[0].z = 0
    # HP
    s[1] = Sprite.new(@viewport)
    s[1].bitmap = Cache.system(BTSKIN_01)
    s[1].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
    s[1].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
    s[1].z = 4
    w = s[1].bitmap.width
    h = s[1].bitmap.height / 2
    s[1].src_rect.set(0, 0, w, h)
    s[2] = Sprite.new(@viewport)
    s[2].bitmap = Cache.system(BTSKIN_01)
    s[2].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
    s[2].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
    s[2].z = 3
    s[2].src_rect.set(0, h, w, h)
    s[11] = 96
    s[6] = Sprite_strNumbers.new(@viewport, BTSKIN_04, BTSKIN_04NS)
    s[6].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_04XY[0]
    s[6].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_04XY[1]
    s[6].z = 5
    s[13] = actor.hp
    s[6].update(s[13])
    # MP
    s[3] = Sprite.new(@viewport)
    s[3].bitmap = Cache.system(BTSKIN_02)
    s[3].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
    s[3].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
    s[3].z = 4
    w = s[3].bitmap.width
    h = s[3].bitmap.height / 2
    s[3].src_rect.set(0, 0, w, h)
    s[4] = Sprite.new(@viewport)
    s[4].bitmap = Cache.system(BTSKIN_02)
    s[4].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
    s[4].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
    s[4].z = 3
    s[4].src_rect.set(0, h, w, h)
    s[12] = 56
    s[7] = Sprite_strNumbers.new(@viewport, BTSKIN_05, BTSKIN_05NS)
    s[7].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_05XY[0]
    s[7].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_05XY[1]
    s[7].z = 5
    s[14] = actor.mp
    s[7].update(s[14])
    # �,��ƒ†�ƒ��ƒˆ
    s[5] = Viewport.new(0, 0, BTSKIN_06WH[0], BTSKIN_06WH[1])
    s[5].rect.x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_06XY[0] + @viewport.rect.x
    s[5].rect.y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_06XY[1] + @viewport.rect.y
    s[5].z = @viewport.z + 1
    s[8] = Sprite.new(@viewport)
    s[8].bitmap = Cache.system(BTSKIN_03)
    s[8].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_03XY[0]
    s[8].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_03XY[1]
    s[8].z = -2
    s[9] = Plane.new(s[5])
    s[9].bitmap = draw_actor_state(actor)
    s[10] = state_size(actor)
    # 現�œ�の�,��ƒ†�ƒ��,��,�に
    s[11] = ((@hpgw * (actor.hp / (actor.maxhp * 1.0))) + 1).truncate
    if actor.maxmp != 0
      s[12] = ((@mpgw * (actor.mp / (actor.maxmp * 1.0))) + 1).truncate
    else
      s[12] = 0
    end
     s[15] = Sprite.new(@viewport)
     s[15].bitmap = name_bitmap(actor)
     s[15].x = @x[index] + 4
     s[15].y = @y[index] + 2
     s[15].z = 255
    s[1].src_rect.width = s[11]
    s[2].src_rect.width = s[11]
    s[3].src_rect.width = s[12]
    s[4].src_rect.width = s[12]
    s[6].update(s[13])
    s[7].update(s[14])
    # 不可�–に
    for l in [0,1,2,3,4,8,9,15]
      s[l].opacity = 0
    end
    for l in [6,7]
      s[l].o = 0
    end
    # �ƒ...報�˜�†�(actor, x, y, size = 151)
    @s_lv[index] = actor.level
    @s_party[index] = [actor.name, actor.hp, actor.maxhp,
                       actor.mp, actor.maxmp, actor.states]
    #
     x = index * 61 - 20
     y = 90
     s[16] = Sprite.new
     s[16].bitmap = Cache.system("HUD_" + actor.name)
     s[16].x = @x[index] + 10 - 224
     s[16].y = @y[index] + -4 + 339
     s[16].z = 0
   end
  #--------------------------------------------------------------------------
  # �—� �,��ƒ–�,��,��,��ƒˆ�–‹�"�
  #--------------------------------------------------------------------------
  def dispose       
    super
    return unless @f
    for i in 0...@s_sprite.size
      for l in [0,1,2,3,4,8,9,15,16]
        @s_sprite[i][l].bitmap.dispose
        @s_sprite[i][l].dispose
      end
      for l in [5,6,7]
        @s_sprite[i][l].dispose
      end
    end
    @@f = false
  end
  #--------------------------------------------------------------------------
  # �—� �ƒ•�ƒ��ƒ��ƒ��›��–�
  #--------------------------------------------------------------------------
  def update
    super
    return unless @f
    for i in 0...@s_sprite.size
      s = @s_sprite[i]
      a = $game_party.members[i]
      m = @s_party[i]
      @state_opacity[i] = 0 if @state_opacity[i] == nil
      # 不�€��˜Ž度�,��ƒƒ�ƒ—
      @state_opacity[i] += 8
      if @opacity < 272
        @opacity += 8
        for l in [0,1,2,3,4,15]
          s[l].opacity = @opacity
        end
        for l in [6,7]
          s[l].o = @opacity
        end
      end
      # 名�‰��›��–�
      if a.name != m[0]
        s[15].bitmap.dispose
        s[15].bitmap = name_bitmap(a)
        m[0] = a.name
      end
      # HP/MP�›��–�
      update_hp(s,a,m)
      update_mp(s,a,m)
      # �,��ƒ†�ƒ��ƒˆ�›��–�
      if s[10] > BTSKIN_06WH[0] / 24 and (Graphics.frame_count % BTSKIN_06SC) == 0
        s[9].ox += 1 
      end
      if s[10] > 0 and @state_opacity[i] < 272
        for l in [8,9]
          s[l].opacity = @state_opacity[i]
        end
      end
      if a.states != m[5]
        m[5] = a.states
        s[9].ox = 0
        s[9].bitmap.dispose
        s[9].bitmap = draw_actor_state($game_party.members[i])
        s[10] = state_size($game_party.members[i])
        @state_opacity[i] = 0
        for l in [8,9]
          s[l].opacity = @state_opacity[i]
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # �—� �ƒ•�ƒ��ƒ��ƒ��›��–� (HP)
  #--------------------------------------------------------------------------
  def update_hp(s,a,m)
    # HPく�,‹く�,‹
    if a.hp != s[13]
      c = 0; c = 1 if a.hp < a.maxhp / 4; c = 2 if a.hp == 0
      if s[13] > a.hp
        s[13] -= BTSKIN_04SS
        s[13] = a.hp if s[13] < a.hp
      else
        s[13] += BTSKIN_04SS
        s[13] = a.hp if s[13] > a.hp
      end
      s[6].update(s[13], c)
    end
    # HP
    if a.hp != m[1]
      s[11] = ((@hpgw * (a.hp / (a.maxhp * 1.0))) + 1).truncate
      m[1] = a.hp
    end
    sr = s[1].src_rect
    if sr.width != s[11]
      sp = BTSKIN_01GS
      sr.width = (s[11] + (s[1].src_rect.width * (sp - 1))) / sp
      sr.width = 2 if sr.width <= 1 and a.hp > 0
    end
    sr = s[2].src_rect
    sp = 2
    if sr.width != s[1].src_rect.width and (Graphics.frame_count % sp) == 0
      if sr.width < s[1].src_rect.width
        sr.width += 1
      else
        sr.width -= 1
      end
    end
    sr.width = 2 if sr.width <= 1 and a.hp > 0
  end
  #--------------------------------------------------------------------------
  # �—� �ƒ•�ƒ��ƒ��ƒ��›��–� (MP)
  #--------------------------------------------------------------------------
  def update_mp(s,a,m)
    # MPく�,‹く�,‹
    if a.mp != s[14]
      c = 0; c = 1 if a.mp < a.maxmp / 4
      if s[14] > a.mp
        s[14] -= BTSKIN_05SS
        s[14] = a.mp if s[14] < a.mp
      else
        s[14] += BTSKIN_05SS
        s[14] = a.mp if s[14] > a.mp
      end
      s[7].update(s[14], c)
    end
    # MP
    if a.mp != m[3]
      if a.maxmp != 0
        s[12] = ((@mpgw * (a.mp / (a.maxmp * 1.0))) + 1).truncate
      else
        s[12] = 0
      end
      m[3] = a.mp
    end
    sr = s[3].src_rect
    if sr.width != s[12]
      sp = BTSKIN_02GS
      sr.width = (s[12] + (s[3].src_rect.width * (sp - 1))) / sp
      sr.width = 2 if sr.width <= 1 and a.mp > 0
    end
    sr = s[4].src_rect
    sp = 2
    if sr.width != s[3].src_rect.width and (Graphics.frame_count % sp) == 0
      if sr.width < s[3].src_rect.width
        sr.width += 1
      else
        sr.width -= 1
      end
    end
    sr.width = 2 if sr.width <= 1 and a.mp > 0
  end
end

#==============================================================================
# �–� Sprite_strNumber
#==============================================================================
class Sprite_strNumber < Sprite
  #--------------------------------------------------------------------------
  # �—� �,��ƒ–�,��,��,��ƒˆ�ˆ��œŸ�Œ–
  #--------------------------------------------------------------------------
  def initialize(v, gra, n = 0)
    @n = n
    super(v)
    self.bitmap = Cache.system(gra)
    @w = self.bitmap.width/10
    @h = self.bitmap.height/3
    self.src_rect = Rect.new(@n*@w, 0, @w, @h)
  end
  #--------------------------------------------------------------------------
  # �—� �ƒ•�ƒ��ƒ��ƒ��›��–�
  #--------------------------------------------------------------------------
  def update(n = -1, c = 0)
    @n = n
    self.src_rect.x = @n*@w
    self.src_rect.y = c*@h
  end
end
#==============================================================================
# �–� Sprite_strNumbers
#==============================================================================
class Sprite_strNumbers
  attr_accessor :x
  attr_accessor :y
  attr_accessor :z
  attr_accessor :o 
  #--------------------------------------------------------------------------
  # �—� �,��ƒ–�,��,��,��ƒˆ�ˆ��œŸ�Œ–
  #--------------------------------------------------------------------------
  def initialize(v, gra, n = 4, s = 0)
    @n = n # 桁�•�
    @x = 0
    @y = 0
    @z = 0
    @o = 255
    @sprite = []
    # �—�–"設�š
    b = Cache.system(gra)
    @s = b.width / 10 - s
    # �,��ƒ—�ƒ��,��ƒˆ�œ�ˆ�
    for i in 0...n
      @sprite[i] = Sprite_strNumber.new(v, gra)
    end
    update
  end
  #--------------------------------------------------------------------------
  # �—� �ƒ•�ƒ��ƒ��ƒ��›��–�
  #--------------------------------------------------------------------------
  def update(v = 0, c = 0)
    val = []
    # �•��€��,'�...��ˆ—に格納
    for i in 0...@n
      if (10 ** (i)) == 0
        val[i] = v % 10
      else
        val[i] = v / (10 ** (i)) % 10
      end
    end
    val = val.reverse 
    # �...ˆ頭の0�,'�–�,Š�™�く
    for i in 0...@n
      if val[i] == 0 and @n != i + 1
        val[i] = -1
      else
        break
      end
    end
    # �,��ƒ—�ƒ��,��ƒˆ�›��–�
    for i in 0...@n
      @sprite[i].update(val[i], c)
      @sprite[i].x = @x + (i * @s)
      @sprite[i].y = @y
      @sprite[i].z = @z
      @sprite[i].opacity = @o
    end
  end
  #--------------------------------------------------------------------------
  # �—� 不�€��˜Ž度の適�"�
  #--------------------------------------------------------------------------
  def o=(val)
    @o = val
    for i in 0...@n
      @sprite[i].opacity = @o
    end
  end
  #--------------------------------------------------------------------------
  # �—� �,��ƒ–�,��,��,��ƒˆ�–‹�"�
  #--------------------------------------------------------------------------
  def dispose
    for i in 0...@sprite.size
      @sprite[i].bitmap.dispose
      @sprite[i].dispose
    end
  end
end


#==============================================================================
# �–� Bitmap
#==============================================================================
# This script controls the shadow behind actor names for *STR33g1_Battle Status.

class Bitmap
  #--------------------------------------------------------------------------
  # �—� �–‡�—縁�–�,Š描�"�
  #--------------------------------------------------------------------------
  def draw_text_f(x, y, width, height, str, align = 0, color = Color.new(64,32,128))
    shadow = self.font.shadow
    b_color = self.font.color.dup
    font.shadow = true
    font.color = color
    draw_text(x + 1, y, width, height, str, align) 
    draw_text(x - 1, y, width, height, str, align) 
    draw_text(x, y + 1, width, height, str, align) 
    draw_text(x, y - 1, width, height, str, align) 
    font.color = b_color
    draw_text(x, y, width, height, str, align)
    font.shadow = shadow
  end
  def draw_text_f_rect(r, str, align = 0, color = Color.new(64,32,128)) 
    draw_text_f(r.x, r.y, r.width, r.height, str, align = 0, color) 
  end
end
Fazer mapas é uma arte, faça como se fosse o seu último.