查看: 1941|回复: 2

[已经解决] 【脚本求助】自定义的地图文字生成

[复制链接]
梦石
0
星屑
50
在线时间
42 小时
注册时间
2016-11-27
回帖
23
发表于 2017-1-23 19:24:52 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
各位大佬们 ,RGSS3中有没有人写过能在地图上任意位置(坐标表示)显示文字
而且指定文本内容、字体格式的脚本呢?
下面这个STR27 可以结合显示图片的事件实现。如淡入文字、消去文字等 。
QQ截图20170123191912.png
[pre lang="ruby"]#==============================================================================
# ★RGSS2
# STR27_文字ピクチャ生成 v1.2 09/04/18
#
# ・指定した文字列をピクチャ表示させます。
#
# ■使用方法
# 以下のスクリプトをイベントコマンドで実行した後、
# ピクチャの表示"コマンドで文字ピクチャを表示させます。
=begin
ここから

# テキスト
t = "hogehoge"
s = 20 # 文字サイズ
p = 0  # フォントパターン
text_picture(t, p, s)

ここまで
=end
#
# ※フォントパターンは下の設定箇所で定義します。
# ※フォントサイズが小さすぎたり大きすぎたりすると
#  エラーがでます。注意してください。
#
#------------------------------------------------------------------------------
#
# 更新履歴
# ◇1.1→1.2
# 影文字を無効に出来ない不具合を修正
# ◇1.0→1.1
# ""内の改行箇所などで・が表示されるバグを修正
#
#==============================================================================
# ★ フォントパターン定義(設定箇所)
#==============================================================================
module STRRGSS2
  #              ↓対応する値
                # 通常の文字
  STR27_FLIST = {
  
#==============================================================================  

# GK TILES
0 => [GK::DEFAULT_FONT,false,false,false,false,Colors::AliceBlue,Color.new(0,0,0)],
1 => [GK::DEFAULT_FONT,false,false,false,false,Colors::MediumVioletred,Color.new(0,0,0)],
2 => [GK::DEFAULT_FONT,false,false,false,false,Colors::DeepSkyBlue,Color.new(0,0,0)],

#白 縁:黒UmePlus Gothic
10 => [GK::DEFAULT_FONT,      # フォント名
false,                  # 太字
false,                  # 斜体
true,                   # 影文字
true,                   # 縁取り
Color.new(255,255,255), # 文字色
Color.new(0,0,0)        # 縁取り色
],
#黄 縁:黒
11 => [GK::DEFAULT_FONT,      # フォント名
false,                  # 太字
false,                  # 斜体
false,                  # 影文字
true,                   # 縁取り
Color.new(255,255,0),   # 文字色
Color.new(0,0,0)        # 縁取り色
],
#青
12 => [GK::DEFAULT_FONT,      # フォント名
true,                   # 太字
false,                  # 斜体
false,                  # 影文字
true,                   # 縁取り
Color.new(100,100,255), # 文字色
Color.new(  0,  0,  0)  # 縁取り色
],
#赤
13 => [GK::DEFAULT_FONT,      # フォント名
true,                   # 太字
false,                  # 斜体
false,                  # 影文字
true,                   # 縁取り
Color.new(255,100,100), # 文字色
Color.new(  0,  0,  0)  # 縁取り色
],
#黄
14 => [GK::DEFAULT_FONT,      # フォント名
true,                   # 太字
false,                  # 斜体
false,                  # 影文字
true,                   # 縁取り
Color.new(200,200, 50), # 文字色
Color.new(  0,  0,  0)  # 縁取り色
],
#マップアナウンス
15 => [GK::DEFAULT_FONT,      # フォント名
false,                  # 太字
false,                  # 斜体
false,                  # 影文字
true,                   # 縁取り
Color.new(255,255,255), # 文字色
Color.new(0,0,0)        # 縁取り色
],
#パズルスタート
16 => [GK::DEFAULT_FONT,      # フォント名
true,                   # 太字
false,                  # 斜体
true,                   # 影文字
false,                  # 縁取り
Color.new(255,255,255), # 文字色
Color.new(0,0,0)        # 縁取り色
],
#==============================================================================  
}
#
end
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 文字ピクチャ指定
  #--------------------------------------------------------------------------
  def text_picture(text, p = 0, size = 20)
    strfp = STRRGSS2::STR27_FLIST[p]
    font = Font.new(strfp[0], size)
    font.bold = strfp[1] ; font.italic = strfp[2]
    font.shadow = strfp[3] ; font.color = strfp[5]
    text.gsub!(/[\t\n\r\f]*/,"")
    @strtxpic = [text, STR_DumpFont.new(font, strfp[4], strfp[6])]
  end
  #--------------------------------------------------------------------------
  # ● ピクチャの表示(エイリアス)
  #--------------------------------------------------------------------------
  alias command_231_str27 command_231
  def command_231
    @params[1] = @strtxpic if @strtxpic != nil ; @strtxpic = nil
    command_231_str27
  end
end
#==============================================================================
# ■ Sprite_Picture
#==============================================================================
class Sprite_Picture < Sprite
  #--------------------------------------------------------------------------
  # ● フレーム更新(エイリアス)
  #--------------------------------------------------------------------------
  alias update_str27 update
  def update
    if @picture.name.is_a?(Array) and @picture_name != @picture.name
      # 文字ピクチャ
      @picture_name = @picture.name
      str27_update_2 if @picture_name != ""
    elsif @picture_name != @picture.name
      # 通常ピクチャ
      @picture_name = @picture.name
      if @picture_name != ""
        self.bitmap.dispose unless @picture_name.is_a?(String)
        self.bitmap = Cache.picture(@picture_name)
      end
    end
    # 呼び戻し
    update_str27
  end
  #--------------------------------------------------------------------------
  # ● 文字ピクチャ生成(追加)
  #--------------------------------------------------------------------------
  def str27_update_2
    self.bitmap.dispose if self.bitmap != nil and not @picture_name.is_a?(String)
    f = @picture_name[1].undump
    # 文字サイズ取得
    self.bitmap = Bitmap.new(1, 1) ; self.bitmap.font = f[0]
    size = self.bitmap.text_size(@picture_name[0])
    size.width += f[0].size / 4 if f[0].italic
    size.width += 4 ; self.bitmap.dispose
    # イメージ作成
    self.bitmap = Bitmap.new(size.width + 2, size.height + 2)
    self.bitmap.font = f[0] ; self.bitmap.font.shadow = f[0].shadow
    unless f[1]
      self.bitmap.draw_text(1, 1, size.width, size.height, @picture_name[0])
    else
      self.bitmap.draw_text_f(1, 1, size.width, size.height, @picture_name[0], 0, f[2])
    end
  end
end
#==============================================================================
# ■ STR_DumpFont
#==============================================================================
class STR_DumpFont
  #--------------------------------------------------------------------------
  # ● 初期化
  #--------------------------------------------------------------------------
  def initialize(font, edge, ed_color)
    @name = font.name ; @size = font.size
    @bold = font.bold ; @italic = font.italic
    @Shadow = font.shadow ; @Edge = edge ; @ed_color = ed_color.clone
    @color = Color.new(font.color.red,font.color.green,font.color.blue,font.color.alpha)
  end
  #--------------------------------------------------------------------------
  # ● 変換
  #--------------------------------------------------------------------------
  def undump
    font = Font.new(@name, @size)
    font.bold = @bold ; font.italic = @italic
    font.shadow = @shadow ; font.color = @color
    return [font, @edge, @ed_color]
  end
end[/pre]
梦石
0
星屑
9687
在线时间
3224 小时
注册时间
2011-3-24
回帖
616

开拓者

发表于 2017-1-25 02:11:41 | 显示全部楼层
这个脚本也不用大改,就是缺了几个常量,我做了相关修改:
Lanza2017012500.zip (2.08 KB, 下载次数: 47)

它的用法是结合图片的,比如:
C.png
那么效果是:
C7.gif

评分

参与人数 1梦石 +1 收起 理由
RaidenInfinity + 1 认可答案

查看全部评分

>>→Lanza Games 2020←<<
Lanza Schneider
浪子心,孤星梦永远流浪……
~不会放弃,我的精力永远充沛~
>>>>>Lanza Adventure<<<<<
>>>>>Lanza的新年派对!<<<<<
>>>>>Lanza的口袋心脏病!<<<<<
回复

使用道具 举报

梦石
0
星屑
50
在线时间
42 小时
注册时间
2016-11-27
回帖
23
 楼主| 发表于 2017-1-25 16:39:25 | 显示全部楼层
本帖最后由 Pickstar2 于 2017-3-5 09:45 编辑
Mr.Jin 发表于 2017-1-25 02:11
这个脚本也不用大改,就是缺了几个常量,我做了相关修改:


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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部