DaxSoft

Popup String 1.1

Jan 17th, 2014
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.43 KB | None | 0 0
  1. #==============================================================================
  2. # • Popup String
  3. #==============================================================================
  4. # Autor: Dax
  5. # Versão: 1.1
  6. # Site: www.dax-soft.weebly.com
  7. # Requerimento: Dax Core i1.3
  8. #==============================================================================
  9. # • Descrição:
  10. #------------------------------------------------------------------------------
  11. # Aparece uma string na cabeça do personagem ou dum evento..Útil para sistemas
  12. # de batalha.
  13. #==============================================================================
  14. # • Como usar: NO COMANDO CHAMAR SCRIPT :
  15. #------------------------------------------------------------------------------
  16. # * Para fazer um popup livre no mapa.
  17. # pop_string_map([x, y], string)
  18. # x : Coordenada X.
  19. # y : Coordenada Y.
  20. # string : Palavra.
  21. # * Para fazer um popup no jogador.
  22. # pop_string_player(string)
  23. # string : Palavra.
  24. # * Para fazer um popup no evento.
  25. # pop_string_event(id, string)
  26. # id : ID do Evento.
  27. # string : Palavra.
  28. # * Para mudar a cor.
  29. # Popup.default_color(color)
  30. # color : Nova cor.
  31. #==============================================================================
  32. Dax.register(:popup_string, "Dax", 1.0, "13/09/13")
  33. class << Rpg
  34. #----------------------------------------------------------------------------
  35. # • Iniciar.
  36. #----------------------------------------------------------------------------
  37. alias :string_datamanager :data_manager
  38. def data_manager
  39. string_datamanager
  40. @data_string = []
  41. end
  42. #----------------------------------------------------------------------------
  43. # • Configurações.
  44. #----------------------------------------------------------------------------
  45. def string
  46. return {
  47. width: 186, # Limite de largura.
  48. speed: 4, # Configurar a velocidade do popup.
  49. time: 255, # Tempo que ficará. RECOMENDO 255
  50. font: "Arial", # Configurar o nome da fonte.
  51. size: 16, # Configurar o tamanho da fonte.
  52. bold: true, # Configurar se terá negrito.
  53. outline: true, # Configurar se terá borda.
  54. color: self.default_color, # Cor da fonte.
  55. color_outline: ColorBasic[7], # Cor da borda da fonte.
  56. follow: true # Seguir evento ou personagem.
  57. }
  58. end
  59. #----------------------------------------------------------------------------
  60. # • Cor padrão.
  61. #----------------------------------------------------------------------------
  62. def default_color(new=nil)
  63. return new.nil? ? ColorBasic[-1] : new
  64. end
  65. #----------------------------------------------------------------------------
  66. # • Armazenar um popup string.
  67. # x : Coordenada X.
  68. # y : Coordenada Y.
  69. # string : String.
  70. #----------------------------------------------------------------------------
  71. def string_store(*args)
  72. @data_string.push(Sprite_Popup_String.new(*args))
  73. end
  74. #----------------------------------------------------------------------------
  75. # • Armazenar um popup string no personagem.
  76. # string : String.
  77. #----------------------------------------------------------------------------
  78. def string_store_in_player(string)
  79. self.string_store($game_player, string)
  80. end
  81. #----------------------------------------------------------------------------
  82. # • Armazenar um popup string no evento.
  83. # id : ID do Evento.
  84. # string : String.
  85. #----------------------------------------------------------------------------
  86. def string_store_in_event(id, string)
  87. self.string_store($game_map.events[id], string)
  88. end
  89. #----------------------------------------------------------------------------
  90. # • Atualizar string.
  91. #----------------------------------------------------------------------------
  92. def update_string
  93. return if @data_string.nil?
  94. @data_string.each_with_index do |string, index|
  95. string.update
  96. unless string.visible
  97. string.dispose
  98. @data_string.delete_at(index)
  99. end
  100. end
  101. end
  102. end
  103. #==============================================================================
  104. # • Sprite_Popup_String.
  105. #==============================================================================
  106. class Sprite_Popup_String < Sprite
  107. #----------------------------------------------------------------------------
  108. # • Inicialização dos objetos.
  109. #----------------------------------------------------------------------------
  110. def initialize(xy, string)
  111. super([Rpg.string[:width], Rpg.string[:size] + 2])
  112. self.bitmap.font.name = Rpg.string[:font]
  113. self.bitmap.font.size = Rpg.string[:size]
  114. self.bitmap.font.bold = Rpg.string[:bold]
  115. self.bitmap.font.outline = Rpg.string[:outline]
  116. self.bitmap.font.color = Rpg.string[:color]
  117. self.bitmap.font.out_color = Rpg.string[:color_outline]
  118. if xy.is_a?(Game_Player) or xy.is_a?(Game_Event)
  119. @target_x = DMath.centralize_x(xy.screen_x, 32, self.width)
  120. @target_y = xy.screen_y - self.height/2
  121. elsif xy.is_a?(Array)
  122. @target_x = xy[0]
  123. @target_y = xy[1]
  124. end
  125. self.x, self.y = @target_x, @target_y
  126. self.bitmap.draw_text(self.rect, sprintf("%s", string), 0)
  127. @time_max = @time = Rpg.string[:time]
  128. @y = false
  129. @max_y = self.y + 12
  130. @xy = xy
  131. end
  132. #----------------------------------------------------------------------------
  133. # • Atualização dos objetos.
  134. #----------------------------------------------------------------------------
  135. def update
  136. return if self.nil?
  137. if (@xy.is_a?(Game_Player) or @xy.is_a?(Game_Event)) and Rpg.string[:follow]
  138. self.x = DMath.centralize_x(@xy.screen_x, 32, self.width)
  139. self.y = @xy.screen_y - self.height/2
  140. end
  141. self.oy = self.height
  142. unless @time < 1
  143. @time -= Rpg.string[:speed]
  144. unless @y
  145. self.y += Rpg.string[:speed]/2 unless self.y >= @max_y
  146. @y = self.y >= @max_y
  147. else
  148. self.y -= Rpg.string[:speed]/2 unless self.y <= @target_y
  149. end
  150. else
  151. self.visible = false
  152. end
  153. self.opacity = @time_max.to_p(@time, 255)
  154. end
  155. end
  156. #==============================================================================
  157. # • Spriteset_Map
  158. #==============================================================================
  159. class Spriteset_Map
  160. alias :popup_string_update :update
  161. def update
  162. popup_string_update
  163. Rpg.update_string
  164. end
  165. end
  166. #==============================================================================
  167. # • Interpretador;
  168. #==============================================================================
  169. class Game_Interpreter
  170. #----------------------------------------------------------------------------
  171. # • No Mapa.
  172. #----------------------------------------------------------------------------
  173. def pop_string_map(*args)
  174. Rpg.string_store(*args)
  175. end
  176. #----------------------------------------------------------------------------
  177. # • No Personagem.
  178. #----------------------------------------------------------------------------
  179. def pop_string_player(string)
  180. Rpg.string_store_in_player(string)
  181. end
  182. #----------------------------------------------------------------------------
  183. # • No Evento.
  184. #----------------------------------------------------------------------------
  185. def pop_string_event(id, string)
  186. Rpg.string_store_in_event(id, string)
  187. end
  188. end
Advertisement
Add Comment
Please, Sign In to add comment