Advertisement
Skyloftian_Link

Esteem - NameBox

Sep 19th, 2016
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 12.07 KB | None | 0 0
  1. #===============================================================================
  2. # Esteem - NameBox
  3. #-------------------------------------------------------------------------------
  4. # Por: Skyloftian
  5. #===============================================================================
  6. # > Versão 1.1
  7. #-------------------------------------------------------------------------------
  8. # > Atualizações:
  9. #   - 19/09/16 (v1.1) : Incompatibilidade com Window_ChoiceList corrigida
  10. #   - 19/09/16 (v1.0) : Código Otimizado
  11. #   - 18/09/16 (v0.1) : Concluído
  12. #-------------------------------------------------------------------------------
  13. # > Termos de Uso:
  14. #   - O uso é livre em qualquer tipo de projeto.
  15. #   - Os créditos não são obrigatórios, mas sinta-se livre para creditar-me.
  16. #   - O script não deve ser postado em outro lugar, caso deseje isso, favor me
  17. #   contatar antes.
  18. #   - O script pode ser modificado por sua conta e risco, mas não me responsabi-
  19. #   lizo por quaisquer erros que venham a ocorrer posteriormente.
  20. #===============================================================================
  21. # > Função:
  22. #   - Este script exibe uma caixa de nome (seja do personagem que está falando
  23. #   ou o que você quiser) juntamente da caixa de mensagens.
  24. #-------------------------------------------------------------------------------
  25. # > Instruções:
  26. #   - O script exibe automaticamente a caixa de nome quando a switch configurada
  27. #   estiver ON. Ou seja, ela não aparecerá caso a switch esteja OFF.
  28. #   - O nome que aparecerá na janela é definido por meio de uma variável que
  29. #   pode ser configurada logo abaixo.
  30. #   - Para definir o nome que deve aparecer, vá em Controle de Variáveis e a
  31. #   configure da seguinte maneira:
  32. #
  33. # #----------------------------------------------------------------------------#
  34. # | #CONTROLE DE VARIÁVEIS#                                                    |
  35. # |  Variável                                                                  |
  36. # |    (O) Indivídual : [ID da Variável Configurada]                           |
  37. # |    ( ) Lote : [      ]  ~  [      ]                                        |
  38. # |  Operação                                                                  |
  39. # |    (O) Definir ( ) Somar ( ) Subtrair ( ) Multiplicar ( ) Dividir ( ) Resto|
  40. # |  Operando                                                                  |
  41. # |    ( ) Constante   [      ]                                                |
  42. # |    ( ) Variável    [              ]                                        |
  43. # |    ( ) Aleatório   [      ]  ~  [      ]                                   |
  44. # |    ( ) Dados do    [                        ]                              |
  45. # |        Jogo                                                                |
  46. # |    (O) Script      ["Nome"                  ]                              |
  47. # #----------------------------------------------------------------------------#
  48. #
  49. #   De maneira em que:
  50. #   ID da Variável Configurada = ID de uma variável que você deve configurar
  51. #                                logo abaixo, na aba Configurações.
  52. #   "Nome"                     = O nome que deve aparecer dentro da janela.
  53. #                                OBS: Não se esqueça das aspas.
  54. #
  55. #   - Para exibir o nome de algum personagem da party, use o seguinte comando:
  56. #     $game_actors[ID].name
  57. #     Sendo ID o número do personagem no DataBase.
  58. #
  59. #   - Para mudar a posição(alinhamento) da caixa de nome, basta mudar o valor
  60. #    da variável definida para isso.
  61. #     Os valores podem ser: 0 - Esquerda  ||  1 - Centro  ||  2 - Direita
  62. #     OBS: Caso a variável receba qualquer outro valor a janela se alinhará au-
  63. #    tomaticamente na esquerda.
  64. #   - A caixa de nome se ajusta automaticamente a posição da janela de mensagem
  65. #    seja na parte inferior, no meio, ou na parte superior da tela.
  66. #===============================================================================
  67. # > Dúvidas e afins? Acesse: www.centrorpg.com
  68. #===============================================================================
  69. module Esteem
  70.   module NameBox
  71.     #===========================================================================
  72.     # > Configurações:
  73.     #   - Aqui você encontrará todas as configurações que podem ser realizadas
  74.     #   no script.
  75.     #---------------------------------------------------------------------------
  76.    
  77.     # > Configurações da Janela e Texto:
  78.  
  79.         NB_WINDOWSKIN        = "Window"     # Windowskin da NameBox.
  80.        
  81.         NB_FONT_NAME         = "VL Gothic"  # Fonte do texto/nome.
  82.         NB_FONT_SIZE         = 23           # Tamanho da fonte.
  83.         NB_BOLD              = false        # O nome deve estar em negrito?
  84.                                             # true = sim  || false = não
  85.         NB_ITALIC            = false        # O nome deve estar em itálico?
  86.                                             # true = sim  || false = não
  87.         NB_SHADOW            = true         # O nome deve ter sombra?
  88.                                             # true = sim  || false = não
  89.         NB_COLOR             = Color.new(255, 255, 255 , 255)
  90.         # Cor do nome = (R  , G    , B   , A)
  91.         #               (Red, Green, Blue, Opacity)
  92.         # Cor padrão  = (255, 255, 255 , 255)
  93.        
  94.     # > Configurações de Switch e Variáveis de Controle:
  95.    
  96.          ON_SWITCH           = 01           # Switch que ativa ou desativa a
  97.                                             # namebox.
  98.          NAME_VAR            = 01           # Variável que carregará o nome
  99.                                             # que será exibido na namebox.
  100.          POS_VAR             = 02           # Variável que define a posição(ali-
  101.                                             # nhamento) da namebox.
  102.                                            
  103.   end #NameBox
  104. end #Esteem
  105. #===============================================================================
  106. # > Fim das Configurações
  107. #   - Aqui termina a área configurável do script e começa o código. Não recomen-
  108. #   do que o altere, isso é, a menos que tenha certeza do que está fazendo.
  109. #   - Caso seja destemido o suficiente para ignorar meus alertas e decida alte-
  110. #   rar algo no código, aviso logo para que tome cuidado com os updates, pois
  111. #   como ele é vindo do Scene_Map, sobrecarrega-lo pode causar lag absurdo du-
  112. #   rante o jogo, de forma que seja praticamente impossível sobreviver a ele.
  113. #===============================================================================
  114.  
  115. #=============================================================
  116. # > Window_NameBox
  117. #=============================================================
  118. class Window_NameBox < Window_Base
  119.  
  120.   #---------------------------------------------------------
  121.   # ~ Inicialização do objeto
  122.   #---------------------------------------------------------
  123.   def initialize
  124.     super(0, 0, width, 50)
  125.     self.z = 201
  126.     self.openness = 0
  127.     window_windowskin
  128.     window_contents_config
  129.   end
  130.  
  131.   #---------------------------------------------------------
  132.   # ~ Aquisição da largura da janela
  133.   #---------------------------------------------------------  
  134.   def width
  135.     return 150
  136.   end
  137.  
  138.   #---------------------------------------------------------
  139.   # ~ Aquisição da windowskin
  140.   #---------------------------------------------------------
  141.   def window_windowskin
  142.     self.windowskin = Cache.system(Esteem::NameBox::NB_WINDOWSKIN)
  143.   end
  144.  
  145.   #---------------------------------------------------------
  146.   # ~ Aquisição das configurações do texto da janela
  147.   #---------------------------------------------------------
  148.   def window_contents_config
  149.     self.contents.font.name   = Esteem::NameBox::NB_FONT_NAME
  150.     self.contents.font.size   = Esteem::NameBox::NB_FONT_SIZE
  151.     self.contents.font.bold   = Esteem::NameBox::NB_BOLD
  152.     self.contents.font.italic = Esteem::NameBox::NB_ITALIC
  153.     self.contents.font.shadow = Esteem::NameBox::NB_SHADOW
  154.     self.contents.font.color  = Esteem::NameBox::NB_COLOR
  155.   end
  156.  
  157.   #---------------------------------------------------------
  158.   # ~ Atualização da janela e definição de x e y
  159.   #---------------------------------------------------------
  160.   def update_window(message_y, message_height)
  161.     update_openness
  162.     define_name
  163.     draw_name
  164.     num = Esteem::NameBox::POS_VAR
  165.     self.x = 0 if $game_variables[num] == 0
  166.     self.x = Graphics.width / 2 - 75 if $game_variables[num] == 1
  167.     self.x = Graphics.width - 150 if $game_variables[num] == 2
  168.     self.y = message_y - self.height if $game_message.position != 0
  169.     self.y = message_height if $game_message.position == 0
  170.   end
  171.  
  172.   #---------------------------------------------------------
  173.   # ~ Abrir e fechar janela
  174.   #---------------------------------------------------------
  175.   def update_openness
  176.   open if $game_message.busy? && $game_switches[Esteem::NameBox::ON_SWITCH]
  177.   close if !$game_message.busy? || !$game_switches[Esteem::NameBox::ON_SWITCH]
  178.   end
  179.  
  180.   #---------------------------------------------------------
  181.   # ~ Aquisição do nome
  182.   #---------------------------------------------------------
  183.   def define_name
  184.     name = Esteem::NameBox::NAME_VAR
  185.     @name = $game_variables[name]
  186.   end
  187.  
  188.   #---------------------------------------------------------
  189.   # ~ Desenhar nome da janela
  190.   #---------------------------------------------------------
  191.   def draw_name
  192.     contents.clear
  193.     draw_text(0, 0, 150 - (self.padding * 2), 50 - (self.padding * 2), @name, 1)
  194.   end
  195.  
  196. end # NameBox
  197.  
  198. #=============================================================
  199. # > Scene_Map
  200. #=============================================================
  201. class Scene_Map < Scene_Base
  202.  
  203.   #---------------------------------------------------------
  204.   # ~ Adicionar namebox na Scene_Map
  205.   #---------------------------------------------------------
  206.   alias :create_nb :create_all_windows
  207.   def create_all_windows
  208.     create_nb
  209.     create_namebox
  210.   end
  211.  
  212.   #---------------------------------------------------------
  213.   # ~ Criar namebox
  214.   #---------------------------------------------------------
  215.   def create_namebox
  216.     @namebox = Window_NameBox.new
  217.   end
  218.  
  219.   #---------------------------------------------------------
  220.   # ~ Adicionar a namebox ao update da Scene_Map
  221.   #---------------------------------------------------------
  222.   alias :nep_date :update
  223.   def update
  224.     nep_date
  225.     @namebox.update_window(@message_window.y, @message_window.height)
  226.   end
  227.  
  228. end #Scene_Map
  229.  
  230. #===============================================================================
  231. # > Nota:
  232. #   - Ajuste na posição da janela de esclhas quando a NameBox está posicionada
  233. #   na direita da tela.
  234. #   - Caso o posicionamento da janea de escolhas não lhe agrade, você pode es-
  235. #   ar tentando a sorte e a modificando a seu gosto.
  236. #   - Entretanto, como avisado lá em cima, não me responsabilizo por qualquer
  237. #   erro durante a modificação do código, tome cuidado, fica a dica.
  238. #===============================================================================
  239.  
  240. #=============================================================
  241. # > Window_ChoiceList
  242. #=============================================================
  243. class Window_ChoiceList < Window_Command
  244.  
  245.   #--------------------------------------------------------------------------
  246.   # ~ Subscrever o método que atualiza a posição y da janela de escolhas
  247.   #--------------------------------------------------------------------------
  248.   alias :new_up :update_placement
  249.   def update_placement
  250.     new_up
  251.     @namebox = Window_NameBox.new
  252.     var = Esteem::NameBox::POS_VAR
  253.     swi = Esteem::NameBox::ON_SWITCH
  254.     if $game_variables[var] == 2 && $game_switches[swi]
  255.       if $game_message.position == 2
  256.         self.y = @message_window.y - height - 50
  257.       elsif $game_message.position == 0
  258.         self.y = @message_window.y + @message_window.height + 50
  259.       else
  260.         self.y = @message_window.y + @message_window.height
  261.       end
  262.     end
  263.   end
  264.  
  265. end # Window_ChoiceList
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement