Project1

标题: 【脚本求助】自定义的地图文字生成 [打印本页]

作者: Pickstar2    时间: 2017-1-23 19:24
标题: 【脚本求助】自定义的地图文字生成
各位大佬们 ,RGSS3中有没有人写过能在地图上任意位置(坐标表示)显示文字
而且指定文本内容、字体格式的脚本呢?
下面这个STR27 可以结合显示图片的事件实现。如淡入文字、消去文字等 。

RUBY 代码复制
  1. #==============================================================================
  2. # ★RGSS2
  3. # STR27_文字ピクチャ生成 v1.2 09/04/18
  4. #
  5. # ・指定した文字列をピクチャ表示させます。
  6. #
  7. # ■使用方法
  8. # 以下のスクリプトをイベントコマンドで実行した後、
  9. # ピクチャの表示"コマンドで文字ピクチャを表示させます。
  10. =begin
  11. ここから
  12.  
  13. # テキスト
  14. t = "hogehoge"
  15. s = 20 # 文字サイズ
  16. p = 0  # フォントパターン
  17. text_picture(t, p, s)
  18.  
  19. ここまで
  20. =end
  21. #
  22. # ※フォントパターンは下の設定箇所で定義します。
  23. # ※フォントサイズが小さすぎたり大きすぎたりすると
  24. #  エラーがでます。注意してください。
  25. #
  26. #------------------------------------------------------------------------------
  27. #
  28. # 更新履歴
  29. # ◇1.1→1.2
  30. # 影文字を無効に出来ない不具合を修正
  31. # ◇1.0→1.1
  32. # ""内の改行箇所などで・が表示されるバグを修正
  33. #
  34. #==============================================================================
  35. # ★ フォントパターン定義(設定箇所)
  36. #==============================================================================
  37. module STRRGSS2
  38.   #              ↓対応する値
  39.                 # 通常の文字
  40.   STR27_FLIST = {
  41.  
  42. #==============================================================================  
  43.  
  44. # GK TILES
  45. 0 => [GK::DEFAULT_FONT,false,false,false,false,Colors::AliceBlue,Color.new(0,0,0)],
  46. 1 => [GK::DEFAULT_FONT,false,false,false,false,Colors::MediumVioletred,Color.new(0,0,0)],
  47. 2 => [GK::DEFAULT_FONT,false,false,false,false,Colors::DeepSkyBlue,Color.new(0,0,0)],
  48.  
  49. #白 縁:黒UmePlus Gothic
  50. 10 => [GK::DEFAULT_FONT,      # フォント名
  51. false,                  # 太字
  52. false,                  # 斜体
  53. true,                   # 影文字
  54. true,                   # 縁取り
  55. Color.new(255,255,255), # 文字色
  56. Color.new(0,0,0)        # 縁取り色
  57. ],
  58. #黄 縁:黒
  59. 11 => [GK::DEFAULT_FONT,      # フォント名
  60. false,                  # 太字
  61. false,                  # 斜体
  62. false,                  # 影文字
  63. true,                   # 縁取り
  64. Color.new(255,255,0),   # 文字色
  65. Color.new(0,0,0)        # 縁取り色
  66. ],
  67. #青
  68. 12 => [GK::DEFAULT_FONT,      # フォント名
  69. true,                   # 太字
  70. false,                  # 斜体
  71. false,                  # 影文字
  72. true,                   # 縁取り
  73. Color.new(100,100,255), # 文字色
  74. Color.new(  0,  0,  0)  # 縁取り色
  75. ],
  76. #赤
  77. 13 => [GK::DEFAULT_FONT,      # フォント名
  78. true,                   # 太字
  79. false,                  # 斜体
  80. false,                  # 影文字
  81. true,                   # 縁取り
  82. Color.new(255,100,100), # 文字色
  83. Color.new(  0,  0,  0)  # 縁取り色
  84. ],
  85. #黄
  86. 14 => [GK::DEFAULT_FONT,      # フォント名
  87. true,                   # 太字
  88. false,                  # 斜体
  89. false,                  # 影文字
  90. true,                   # 縁取り
  91. Color.new(200,200, 50), # 文字色
  92. Color.new(  0,  0,  0)  # 縁取り色
  93. ],
  94. #マップアナウンス
  95. 15 => [GK::DEFAULT_FONT,      # フォント名
  96. false,                  # 太字
  97. false,                  # 斜体
  98. false,                  # 影文字
  99. true,                   # 縁取り
  100. Color.new(255,255,255), # 文字色
  101. Color.new(0,0,0)        # 縁取り色
  102. ],
  103. #パズルスタート
  104. 16 => [GK::DEFAULT_FONT,      # フォント名
  105. true,                   # 太字
  106. false,                  # 斜体
  107. true,                   # 影文字
  108. false,                  # 縁取り
  109. Color.new(255,255,255), # 文字色
  110. Color.new(0,0,0)        # 縁取り色
  111. ],
  112. #==============================================================================  
  113. }
  114. #
  115. end
  116. #==============================================================================
  117. # ■ Game_Interpreter
  118. #==============================================================================
  119. class Game_Interpreter
  120.   #--------------------------------------------------------------------------
  121.   # ● 文字ピクチャ指定
  122.   #--------------------------------------------------------------------------
  123.   def text_picture(text, p = 0, size = 20)
  124.     strfp = STRRGSS2::STR27_FLIST[p]
  125.     font = Font.new(strfp[0], size)
  126.     font.bold = strfp[1] ; font.italic = strfp[2]
  127.     font.shadow = strfp[3] ; font.color = strfp[5]
  128.     text.gsub!(/[\t\n\r\f]*/,"")
  129.     @strtxpic = [text, STR_DumpFont.new(font, strfp[4], strfp[6])]
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● ピクチャの表示(エイリアス)
  133.   #--------------------------------------------------------------------------
  134.   alias command_231_str27 command_231
  135.   def command_231
  136.     @params[1] = @strtxpic if @strtxpic != nil ; @strtxpic = nil
  137.     command_231_str27
  138.   end
  139. end
  140. #==============================================================================
  141. # ■ Sprite_Picture
  142. #==============================================================================
  143. class Sprite_Picture < Sprite
  144.   #--------------------------------------------------------------------------
  145.   # ● フレーム更新(エイリアス)
  146.   #--------------------------------------------------------------------------
  147.   alias update_str27 update
  148.   def update
  149.     if @picture.name.is_a?(Array) and @picture_name != @picture.name
  150.       # 文字ピクチャ
  151.       @picture_name = @picture.name
  152.       str27_update_2 if @picture_name != ""
  153.     elsif @picture_name != @picture.name
  154.       # 通常ピクチャ
  155.       @picture_name = @picture.name
  156.       if @picture_name != ""
  157.         self.bitmap.dispose unless @picture_name.is_a?(String)
  158.         self.bitmap = Cache.picture(@picture_name)
  159.       end
  160.     end
  161.     # 呼び戻し
  162.     update_str27
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # ● 文字ピクチャ生成(追加)
  166.   #--------------------------------------------------------------------------
  167.   def str27_update_2
  168.     self.bitmap.dispose if self.bitmap != nil and not @picture_name.is_a?(String)
  169.     f = @picture_name[1].undump
  170.     # 文字サイズ取得
  171.     self.bitmap = Bitmap.new(1, 1) ; self.bitmap.font = f[0]
  172.     size = self.bitmap.text_size(@picture_name[0])
  173.     size.width += f[0].size / 4 if f[0].italic
  174.     size.width += 4 ; self.bitmap.dispose
  175.     # イメージ作成
  176.     self.bitmap = Bitmap.new(size.width + 2, size.height + 2)
  177.     self.bitmap.font = f[0] ; self.bitmap.font.shadow = f[0].shadow
  178.     unless f[1]
  179.       self.bitmap.draw_text(1, 1, size.width, size.height, @picture_name[0])
  180.     else
  181.       self.bitmap.draw_text_f(1, 1, size.width, size.height, @picture_name[0], 0, f[2])
  182.     end
  183.   end
  184. end
  185. #==============================================================================
  186. # ■ STR_DumpFont
  187. #==============================================================================
  188. class STR_DumpFont
  189.   #--------------------------------------------------------------------------
  190.   # ● 初期化
  191.   #--------------------------------------------------------------------------
  192.   def initialize(font, edge, ed_color)
  193.     @name = font.name ; @size = font.size
  194.     @bold = font.bold ; @italic = font.italic
  195.     [url=home.php?mod=space&uid=31758]@Shadow[/url] = font.shadow ; [url=home.php?mod=space&uid=278544]@Edge[/url] = edge ; @ed_color = ed_color.clone
  196.     [url=home.php?mod=space&uid=10453]@color[/url] = Color.new(font.color.red,font.color.green,font.color.blue,font.color.alpha)
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ● 変換
  200.   #--------------------------------------------------------------------------
  201.   def undump
  202.     font = Font.new(@name, @size)
  203.     font.bold = @bold ; font.italic = @italic
  204.     font.shadow = @shadow ; font.color = @color
  205.     return [font, @edge, @ed_color]
  206.   end
  207. end

作者: Mr.Jin    时间: 2017-1-25 02:11
这个脚本也不用大改,就是缺了几个常量,我做了相关修改:
Lanza2017012500.zip (2.08 KB, 下载次数: 47)

它的用法是结合图片的,比如:

那么效果是:

作者: Pickstar2    时间: 2017-1-25 16:39
本帖最后由 Pickstar2 于 2017-3-5 09:45 编辑
Mr.Jin 发表于 2017-1-25 02:11
这个脚本也不用大改,就是缺了几个常量,我做了相关修改:


谢谢。我原来不知道这两个是通用的!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1