Event Caption Script

8 Respostas   1205 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

Sourcecode

  • *
  • Posts: 19
  • Ouros: 5
Tópico criado em: 07/06/2014 às 20:20 - Última modificação por Sourcecode em 08/06/2014 às 10:45

Event Captions Script v0.6

Compativel com: RMVXA
Compatibilidade: boa
Facilidade de uso: fácil
Lag gerado: desprezível

Condições de Uso
Sem restrições

Para que serve o script
Script simples adaptado do curso do Khas de RGSS3 para mostrar um texto acima do evento, font totalmente personalizável através de constantes.

Atualização v0.6, nova opção de mostrar o texto apenas ao tocar no jogador, estilo Chrono Trigger, para isso use a constante OnlyOnPlayerTouch com o valor true, caso contrário se quiser que apareça sempre deixe o valor como false.

Imagens
Spoiler
[close]

Script
Código: [Selecionar]
#
#    x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
#
#    Event Captions Script v0.6 - SourceCode
#    Adaptado do curso de RGSS3 do Khas -> http://arcthunder.blogspot.com
#
#    Para usar coloque um comentário em seus eventos com: cmd:nome=O TíTULO QUE VOCÊ QUISER
#
#    x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
#

module EventCaptions
 
  #cor da fonte
  FontColor = Color.new(255,255,255)   
  #nome da fonte
  FontName = "Verdana"     
  #fonte negrito?
  FontBold = true                       
  #tamanho da fonte
  FontSize = 14                         
  #posição em relação ao evento
  OffSet = 48   
  #somente quando o jogador ficar sobre o evento
  OnlyOnPlayerTouch = true
 
end

class Spriteset_Map
  alias capchars_initialize initialize
  alias capchars_dispose dispose
  alias capchars_update update 
  def initialize
    create_names
    capchars_initialize   
  end 
  def update
    capchars_update
    update_names
  end 
  def dispose
    capchars_dispose
    dispose_names
  end 
  def create_names   
    @names = []       
    for event in $game_map.events.values
      next if event.list == nil     
      for command in event.list
        next if command.code != 108       
        if command.parameters[0].include?("cmd:nome=")       
          name = command.parameters[0].sub("cmd:nome=","") 
          @names.push(Sprite_Name.new(event,name))
        end
      end
    end
  end 
  def update_names
    for sprite in @names
      sprite.update
    end
  end 
  def dispose_names
    for sprite in @names
      sprite.dispose
    end
    @names.clear
  end 
end

class Sprite_Name < Sprite
 
  def initialize(event, name)
    super(nil)
   
    @event = event
    @name = name
   
    if EventCaptions::OnlyOnPlayerTouch == false
      if self.bitmap == nil
        self.bitmap = Bitmap.new(120,20)
      else
        self.bitmap.clear
      end
      self.ox = 60
      self.z = 999
      self.bitmap.font.size = EventCaptions::FontSize
      self.bitmap.font.bold = EventCaptions::FontBold
      self.bitmap.font.name = EventCaptions::FontName
      self.bitmap.font.color = EventCaptions::FontColor
      self.bitmap.draw_text(0,0,120,20,@name,1)
    end
  end
 
  def update
    super 
       
    self.x = @event.screen_x
    self.y = @event.screen_y - EventCaptions::OffSet
    #verifica se a opcao de on player touch esta ativa
    #entao verifica se a posicao do player é igual a do evento
    #só desenha o texto se o player estiver com x e y igual
    #ao evento
    if EventCaptions::OnlyOnPlayerTouch
      if @event.x == $game_player.x and @event.y == $game_player.y       
        if self.bitmap == nil
          self.bitmap = Bitmap.new(120,20)
        else
          self.bitmap.clear
        end
        self.ox = 60
        self.z = 999
        self.bitmap.font.size = EventCaptions::FontSize
        self.bitmap.font.bold = EventCaptions::FontBold
        self.bitmap.font.name = EventCaptions::FontName
        self.bitmap.font.color = EventCaptions::FontColor
        self.bitmap.draw_text(0,0,120,20,@name,1)             
       else if self.bitmap != nil
         self.bitmap.clear
       end
      end
    end 
  end
 
  def dispose
    self.bitmap.dispose
    self.bitmap = nil   
    super   
  end
end


Créditos e Avisos
Feito por mim, adaptado da video aula de RGSS3 do Khas

木村 かな

  • *
  • Posts: 157
  • Ouros: 50
Resposta 1: 07/06/2014 às 20:23

Primeiramente,parabéns pelo Script,é bom ter novos scripter's rondando por aqui!
Script muito bom,talvez use,talvez não.Quem sabe né? XD!
Obs:Icone do tópico errado hein.

guKing

  • *
  • Posts: 109
  • Ouros: 36
Resposta 2: 07/06/2014 às 20:24

Cadê o botão de curtir? Hehehe. Gostei, talvez eu use em algum lugar :D

Sourcecode

  • *
  • Posts: 19
  • Ouros: 5
Resposta 3: 07/06/2014 às 20:24

Primeiramente,parabéns pelo Script,é bom ter novos scripter's rondando por aqui!
Script muito bom,talvez use,talvez não.Quem sabe né? XD!
Obs:Icone do tópico errado hein.

Obrigado, pretendo ficar rsrs...
Já troquei o ícone lá, falha minha, primeiro post.

Kvothe

  • *
  • Posts: 652
  • Ouros: 1423
  • Maker Geral
Resposta 4: 07/06/2014 às 20:53

 Legal.. mas para o caso de estudos.. veja como você poderia ter feito o script :
Código: [Selecionar]
#
#    x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
#
#    Event Captions Script - SourceCode
#    Adaptado do curso de RGSS3 do Khas -> http://arcthunder.blogspot.com
#
#    Para usar coloque um comentário em seus eventos com: cmd:nome=[i]O TíTULO QUE VOCÊ QUISER[/i]
#
#    x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
#

module EventCaptions
 
  #cor da fonte
  FontColor = Color.new(255,255,255)   
  #nome da fonte
  FontName = "Verdana"     
  #fonte negrito?
  FontBold = true                       
  #tamanho da fonte
  FontSize = 14                         
  #posição em relação ao evento
  OffSet = 48                           
 
end

class Spriteset_Map
  alias capchars_initialize initialize
  alias capchars_dispose dispose
  alias capchars_update update 
  def initialize
    @names = []
    $game_map.events.values.each { |event|
      next if event.list.nil?
      for command in event.list
        next unless command.code == 108
        @names.push(Sprite_Name.new(event, String($1))) if command.parameters[0].match(/cmd:nome=([^>]*)/im)
      end
    }
    capchars_initialize   
  end 
 
  def update
    capchars_update
    @names.each(&:update)
  end 
 
  def dispose
    capchars_dispose
    @names.each(&:dispose)
    @names.clear
  end 
end

class Sprite_Name < Sprite
 
  def initialize(event, name)
    super(nil)
    self.bitmap = Bitmap.new(120,20)
    @event = event
    self.ox = 60
    self.z = 999
    self.bitmap.font.size = EventCaptions::FontSize
    self.bitmap.font.bold = EventCaptions::FontBold
    self.bitmap.font.name = EventCaptions::FontName
    self.bitmap.font.color = EventCaptions::FontColor
    self.bitmap.draw_text(0,0,120,20,name,1)
  end
 
  def update
    super
    self.x = @event.screen_x
    self.y = @event.screen_y - EventCaptions::OffSet
  end
 
  def dispose
    self.bitmap.dispose
    super   
  end
end


Sourcecode

  • *
  • Posts: 19
  • Ouros: 5
Resposta 5: 07/06/2014 às 21:07

Agradeço, usarei em versões futuras, ainda estou aprendendo a linguagem, programo em outras linguagens estou tentando aprender rapidamente o RGSS3, tem 3 dias que comecei.

Legal.. mas para o caso de estudos.. veja como você poderia ter feito o script :
Código: [Selecionar]
#
#    x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
#
#    Event Captions Script - SourceCode
#    Adaptado do curso de RGSS3 do Khas -> http://arcthunder.blogspot.com
#
#    Para usar coloque um comentário em seus eventos com: cmd:nome=[i]O TíTULO QUE VOCÊ QUISER[/i]
#
#    x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
#

module EventCaptions
 
  #cor da fonte
  FontColor = Color.new(255,255,255)   
  #nome da fonte
  FontName = "Verdana"     
  #fonte negrito?
  FontBold = true                       
  #tamanho da fonte
  FontSize = 14                         
  #posição em relação ao evento
  OffSet = 48                           
 
end

class Spriteset_Map
  alias capchars_initialize initialize
  alias capchars_dispose dispose
  alias capchars_update update 
  def initialize
    @names = []
    $game_map.events.values.each { |event|
      next if event.list.nil?
      for command in event.list
        next unless command.code == 108
        @names.push(Sprite_Name.new(event, String($1))) if command.parameters[0].match(/cmd:nome=([^>]*)/im)
      end
    }
    capchars_initialize   
  end 
 
  def update
    capchars_update
    @names.each(&:update)
  end 
 
  def dispose
    capchars_dispose
    @names.each(&:dispose)
    @names.clear
  end 
end

class Sprite_Name < Sprite
 
  def initialize(event, name)
    super(nil)
    self.bitmap = Bitmap.new(120,20)
    @event = event
    self.ox = 60
    self.z = 999
    self.bitmap.font.size = EventCaptions::FontSize
    self.bitmap.font.bold = EventCaptions::FontBold
    self.bitmap.font.name = EventCaptions::FontName
    self.bitmap.font.color = EventCaptions::FontColor
    self.bitmap.draw_text(0,0,120,20,name,1)
  end
 
  def update
    super
    self.x = @event.screen_x
    self.y = @event.screen_y - EventCaptions::OffSet
  end
 
  def dispose
    self.bitmap.dispose
    super   
  end
end

SimonMuran

Resposta 6: 07/06/2014 às 22:00

Gostei bastante, bem diferente e legal  :blink:

Brandt

Resposta 7: 07/06/2014 às 23:19

Legal, também aprendi com as aulas do Khas, a única coisa que eu vi de problema aí é que está praticamente igual ao do Khas, você mudou tipo, seis linhas, nem o comentário é diferente do script dele, mas, de qualquer forma, já é um começo... seria legal poder configurar a fonte pelos comentários no evento também (um desafio aí pra você treinar) :rick8:
~ Masked

Sourcecode

  • *
  • Posts: 19
  • Ouros: 5
Resposta 8: 07/06/2014 às 23:41

Legal, também aprendi com as aulas do Khas, a única coisa que eu vi de problema aí é que está praticamente igual ao do Khas, você mudou tipo, seis linhas, nem o comentário é diferente do script dele, mas, de qualquer forma, já é um começo... seria legal poder configurar a fonte pelos comentários no evento também (um desafio aí pra você treinar) :rick8:

A ideia é mesmo essa, e já fiz uma atualização, coloquei uma opção para mostrar o texto apenas ao tocar o evento, bem no estilo do bom e velho chrono trigger, peço desculpas se não estiver fazendo tudo da maneira politicamente correta, estou em treinamento ainda de RGSS3, programo em várias linguagens à muitos anos, o problema maior é que estou estudando a engine do rpg maker à apenas 3 dias, aceito sugestões com muito prazer, serão muito bem vindas.