查看: 1573|回复: 3

[已经解决] 这个调出图片的脚本怎么改?

[复制链接]
梦石
0
星屑
175
在线时间
332 小时
注册时间
2013-7-6
回帖
316
发表于 2013-8-19 13:31:20 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 wolves 于 2013-8-19 16:19 编辑


[pre lang="ruby" line="1"]#==========================================================================
# Dump_Font
#--------------------------------------------------------------------------
# Fontの属性情報をdumpできるように保存するクラス
# Bitmap#font=()へ引き渡す際はto_fontメソッドを用いる
#--------------------------------------------------------------------------
# ver.1.00(05/10/06) by 箱入小屋 http://aea.to/hako/
#==========================================================================

class Dump_Font
# 初期化
#  font : Fontオブジェクト
def initialize(font)
   @name = font.name
   @size = font.size
   @bold = font.bold
   @italic = font.italic
   @color = Color.new(font.color.red, font.color.green, font.color.blue,
                      font.color.alpha)
end

# Fontオブジェクトに変換して返す
def to_font
   font = Font.new(@name, @size)
   font.bold = @bold
   font.italic = @italic
   font.color = @color
   return font
end
end


#==========================================================================
# text_picture
#--------------------------------------------------------------------------
# イベントコマンド「スクリプト」でメソッド「text_picture」を呼び出した後、
# イベントコマンド「ピクチャの表示」で表示します。
# クラス「Dump_Font」が必要です。
#--------------------------------------------------------------------------
# ver 1.03 (05/10/08) by 箱入小屋 http://aea.to/hako/
#==========================================================================

class Interpreter
#--------------------------------------------------------------------------
# ● 文字列を「ピクチャ」として表示
#   text : 文字列
#   font : フォント(Font) *省略可
#--------------------------------------------------------------------------
def text_picture(text, font = nil)
   if font.is_a?(Font) and not Font.exist?(font.name)
     #◆ フォントが存在しない場合のフォント名
     font.name = ["MS Pゴシック", "MS P明朝", "黑体", "宋体"]
   elsif font.nil?
     font = Font.new
     #◆ フォントを指定しなかった場合のフォント
     font.name = ["MS Pゴシック", "MS P明朝", "黑体", "宋体"] # フォント名
     font.size = 22                      # サイズ
     font.bold = false                   # ボールド(太字)フラグ
     font.italic = false                 # イタリック(斜体)フラグ
     font.color = Color.new(255,255,255) # フォントカラー(R, G, B)
   end
   @draw_text = [1, text, Dump_Font.new(font)]
   return true
end
#--------------------------------------------------------------------------
# ● ピクチャの表示(再定義)
#--------------------------------------------------------------------------
alias text_picture_command231 command_231
def command_231
   unless @draw_text.nil?
     @parameters[1] = @draw_text # picture_name
   end
   text_picture_command231
   @draw_text = nil
   return true
end
end

class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ● フレーム更新(再定義)
#--------------------------------------------------------------------------
alias text_picture_update update
def update
   # text_picture(Interpreter)で文字列を指定された場合
   if @picture_name != @picture.name and @picture.name[0] == 1
     @picture_name = @picture.name # [id(1), text, Dump_Font]の配列
     self.bitmap = Bitmap.new(640, 100)
     font = @picture_name[2].to_font
     self.bitmap.font = font
     rect = self.bitmap.text_size(@picture_name[1])
     self.bitmap.dispose
     self.bitmap = Bitmap.new(rect.width, rect.height)
     self.bitmap.font = font
     self.bitmap.draw_text(rect, @picture_name[1])
   end
   text_picture_update
end
end


#==========================================================================
# text_picture2 -- 複数行の文字列を「ピクチャ」として表示
#--------------------------------------------------------------------------
# イベントコマンド「スクリプト」で
#   text_picture2(text [, font [, align]])
# を呼び出した後、イベントコマンド「ピクチャの表示」で表示します。
# クラス「Dump_Font」が必要です。
#--------------------------------------------------------------------------
# ver 1.00 (05/10/10) by 箱入小屋 http://aea.to/hako/
#==========================================================================

class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ◆ 定数
#--------------------------------------------------------------------------
# 行間の指定 (指定しない方は nil にしてください)
LINE_SPACE_PIXEL = 10   # ピクセル数で指定
LINE_SPACE_VARID = nil  # このIDのゲーム変数に代入されている値で指定
end

class Interpreter
#--------------------------------------------------------------------------
# ● 複数行の文字列を「ピクチャ」として設定
#   text  : 文字列
#   font  : フォント(Font) *省略可
#   align : アラインメント (0..左揃え、1..中央揃え、2..右揃え) *省略可
#--------------------------------------------------------------------------
def text_picture2(text, font = nil, align = 0)
   if font.is_a?(Font) and not Font.exist?(font.name)
     #◆ フォントがない場合のフォント名
     font.name = ["MS Pゴシック", "MS P明朝", "黑体", "宋体"]
   elsif font.nil?
     font = Font.new
     #◆ フォントを指定しなかった場合のフォント
     font.name = ["MS Pゴシック", "MS P明朝", "黑体", "宋体"] # フォント名
     font.size = 22                      # サイズ
     font.bold = false                   # ボールド(太字)フラグ
     font.italic = false                 # イタリック(斜体)フラグ
     font.color = Color.new(255,255,255) # フォントカラー(R, G, B)
   end
   @draw_text = [2, text, Dump_Font.new(font), align]
   return true
end
#--------------------------------------------------------------------------
# ● ピクチャの表示(再定義)
#--------------------------------------------------------------------------
alias text_picture2_command231 command_231
def command_231
   unless @draw_text.nil?
     @parameters[1] = @draw_text
   end
   text_picture2_command231
   @draw_text = nil
   return true
end
end

class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ● フレーム更新(再定義)
#--------------------------------------------------------------------------
alias text_picture2_update update
def update
   # Interpreter#text_picture2で文字列表示の情報を受け取った場合
   if @picture_name != @picture.name and @picture.name[0] == 2
     @picture_name = @picture.name  #=> [id(2), text, Dump_Font, align]
     self.bitmap = Bitmap.new(640, 480)
     self.bitmap.font = @picture_name[2].to_font
     y = 0
     space = LINE_SPACE_PIXEL ? LINE_SPACE_PIXEL : $game_variables[LINE_SPACE_VARID]
     @picture_name[1].each_line do |line|
       h = self.bitmap.text_size(line).height
       self.bitmap.draw_text(0, y, 640, h, line, @picture_name[3])
       y += h + space
     end
   end
   text_picture2_update
end
end[/pre]


这个脚本调出:

[pre lang="ruby" line="1"]s = "欢迎光临
这是一个
关于文字
使用图片
效果的例
子哦!!"
font = Font.new("黑体", 55)
font.color = Color.new(255,255,255)
text_picture2(s,font,1.5)[/pre]


我的问题是
怎么控制文字的位置,还有就是怎么将默认图片编号为1改为编号50???求助~~~
梦石
0
星屑
175
在线时间
332 小时
注册时间
2013-7-6
回帖
316
 楼主| 发表于 2013-8-20 10:13:41 | 显示全部楼层
求解。。。为神马一天了都没有人回答。。。
偶是熬夜学编程的傻子
回复

使用道具 举报

梦石
0
星屑
50
在线时间
141 小时
注册时间
2013-8-6
回帖
114
发表于 2013-8-20 11:16:11 | 显示全部楼层
如果你知道解释器是怎么工作的你就知道了,其实就是在解释器的相关指令里定义的。rgss1的解释器是用来向系统解释事件用的。
alias text_picture_command231 command_231表示关联text_picture_command231到指令231,而231就是解释器中显示图片的指令,因此你在Interpreter类的7个分页面里找指令231,就能找到显示图片的编号和位置。

评分

参与人数 1星屑 +105 收起 理由
弗雷德 + 105 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
175
在线时间
332 小时
注册时间
2013-7-6
回帖
316
 楼主| 发表于 2013-8-21 20:43:30 | 显示全部楼层
Algalon 发表于 2013-8-20 11:16
如果你知道解释器是怎么工作的你就知道了,其实就是在解释器的相关指令里定义的。rgss1的解释器是用来向系 ...

谢谢,明白了
偶是熬夜学编程的傻子
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部