赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 315 |
最后登录 | 2018-9-22 |
在线时间 | 2 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 2 小时
- 注册时间
- 2007-1-27
- 帖子
- 21
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
这个脚本只能显示英文不能显示中文,请高手帮帮忙改一下
http://rpg.blue/upload_program/files/文本文档_84323963.txt
- #=========================================================
- # This is the ffx-2 Custom Menu System by Catchm.
- # It is a long script and includes many alterations and images attached to it.
- # These images can be edited, and the script can be edited, you are free to do so
- # credit to Catchm is the only thing needed.
- # this is to be copied into a new script in the script editor
- #
- # Have fun with the script!
- #=========================================================
- class Bitmap
- def draw_text_shadow_rect(rect, text, align = 0)
- self.font.size -= 2
- old_col = self.font.color.clone
- # Dark shadow
- self.font.color = Color.new(0,0,0, 255)
- draw_text(Rect.new(rect.x+1, rect.y+1, rect.width,
- rect.height), text, align)
- # Small outline
- self.font.color = Color.new(96,96,96,96)
- draw_text(Rect.new(rect.x+1, rect.y, rect.width,
- rect.height), text, align)
- draw_text(Rect.new(rect.x-1, rect.y, rect.width,
- rect.height), text, align)
- draw_text(Rect.new(rect.x, rect.y-1, rect.width,
- rect.height), text, align)
- draw_text(Rect.new(rect.x, rect.y+1, rect.width,
- rect.height), text, align)
- # Normal text
- self.font.color = old_col
- draw_text(rect, text, align)
- self.font.size += 2
- end
- def draw_text_shadow(x, y, wid, hei, text, align = 0)
- self.font.size -= 2
- old_col = self.font.color.clone
- # Dark shadow
- self.font.color = Color.new(0,0,0, 255)
- draw_text(x+1,y+1,wid,hei,text, align)
- # Small outline
- self.font.color = Color.new(96,96,96,96)
- draw_text(x+1,y,wid,hei,text, align)
- draw_text(x+2,y,wid,hei,text, align)
- draw_text(x+2,y,wid,hei,text, align)
- draw_text(x,y-1,wid,hei,text, align)
- draw_text(x,y+1,wid,hei,text, align)
- draw_text(x,y+2,wid,hei,text, align)
- # Normal
- self.font.color = old_col
- draw_text(x,y,wid,hei,text, align)
- self.font.size += 2
- end
- def draw_text_outline(x, y, wid, hei, text, align = 0)
- self.font.color = Color.new(0, 0, 0, 255)
- draw_text(x + 1,y + 1,wid,hei,text, align)
- draw_text(x + 1,y - 1,wid,hei,text, align)
- draw_text(x - 1,y - 1,wid,hei,text, align)
- draw_text(x - 1,y + 1,wid,hei,text, align)
- self.font.color = Color.new(255, 255, 255, 255)
- draw_text(x,y,wid,hei,text, align)
- end
- def draw_text_outline2(x, y, wid, hei, text, align = 0)
- self.font.color = Color.new(0, 0, 0, 255)
- draw_text(x + 1,y + 1,wid,hei,text, align)
- draw_text(x + 1,y - 1,wid,hei,text, align)
- draw_text(x - 1,y - 1,wid,hei,text, align)
- draw_text(x - 1,y + 1,wid,hei,text, align)
- self.font.color = Color.new(255, 255, 255, 200)
- draw_text(x,y,wid,hei,text, align)
- end
- def draw_text_outline3(x, y, wid, hei, text, align = 0)
- self.font.color = Color.new(0, 0, 0, 255)
- draw_text(x + 1,y + 1,wid,hei,text, align)
- draw_text(x + 1,y - 1,wid,hei,text, align)
- draw_text(x - 1,y - 1,wid,hei,text, align)
- draw_text(x - 1,y + 1,wid,hei,text, align)
- self.font.color = Color.new(192, 224, 255, 255)
- draw_text(x,y,wid,hei,text, align)
- end
- def draw_text_outline4(x, y, wid, hei, text, align = 0)
- self.font.color = Color.new(0, 0, 0, 190)
- draw_text(x + 1,y + 1,wid,hei,text, align)
- draw_text(x + 1,y - 1,wid,hei,text, align)
- draw_text(x - 1,y - 1,wid,hei,text, align)
- draw_text(x - 1,y + 1,wid,hei,text, align)
- self.font.color = Color.new(255, 255, 255, 255)
- draw_text(x,y,wid,hei,text, align)
- end
- end
- class Window_Base < Window
- #=====================================
- # Gradient Bars , thanks to Acedent Prone
- def draw_normal_barz(x, y, type, length, thick, e1, e2, c1 = Color.new(255,0,0,255), c2 = Color.new(0,0,0,255))
- if type == "horizontal"
- width = length
- height = thick
- self.contents.fill_rect(x-1, y - 1, width+2, height + 3, Color.new(255, 255, 255, 255))
- self.contents.fill_rect(x, y, width, height + 1, Color.new(0, 0, 0, 255))
- w = width * e1 / e2
- for i in 0..height
- r = c1.red + (c2.red - c1.red) * (height -i)/height + 0 * i/height
- g = c1.green + (c2.green - c1.green) * (height -i)/height + 0 * i/height
- b = c1.blue + (c2.blue - c1.blue) * (height -i)/height + 0 * i/height
- a = c1.alpha + (c2.alpha - c1.alpha)* (height -i)/height + 255 * i/height
- self.contents.fill_rect(x, y+i, w, 1, Color.new(r, g, b, a))
- end
- elsif type == "vertical"
- width = thick
- height = length
- self.contents.fill_rect(x-1, y - 1, width+3, height + 2, Color.new(255, 255, 255, 255))
- self.contents.fill_rect(x, y, width+1, height , Color.new(0, 0, 0, 255))
- h = height * e1 / e2
- for i in 0..width
- r = c1.red + (c2.red - c1.red) * (width -i)/width + 0 * i/width
- g = c1.green + (c2.green - c1.green) * (width -i)/width + 0 * i/width
- b = c1.blue + (c2.blue - c1.blue) * (width -i)/width + 0 * i/width
- a = c1.alpha + (c2.alpha - c1.alpha)* (width -i)/width + 255 * i/width
- self.contents.fill_rect(x+i, y, 1, h, Color.new(r, g, b, a))
- end
- end
- end
- def draw_actor_barz(actor,x, y, type, length, thick, e1, e2, c1 = Color.new(255,0,0,255), c2 = Color.new(0,0,0,255))
- if type == "horizontal"
- width = length
- height = thick
- self.contents.fill_rect(x-1, y - 1, width+2, height + 3, Color.new(0, 0, 0, 255))
- self.contents.fill_rect(x, y, width, height + 1, Color.new(0, 0, 0, 255))
- w = width * e1 / e2
- for i in 0..height
- r = c1.red + (c2.red - c1.red) * (height -i)/height + 0 * i/height
- g = c1.green + (c2.green - c1.green) * (height -i)/height + 0 * i/height
- b = c1.blue + (c2.blue - c1.blue) * (height -i)/height + 0 * i/height
- a = c1.alpha + (c2.alpha - c1.alpha)* (height -i)/height + 255 * i/height
- self.contents.fill_rect(x, y+i, w, 1, Color.new(r, g, b, a))
- end
- elsif type == "vertical"
- width = thick
- height = length
- self.contents.fill_rect(x-1, y - 1, width+3, height + 2, Color.new(255, 255, 255, 255))
- self.contents.fill_rect(x, y, width+1, height , Color.new(0, 0, 0, 255))
- h = height * e1 / e2
- for i in 0..width
- r = c1.red + (c2.red - c1.red) * (width -i)/width + 0 * i/width
- g = c1.green + (c2.green - c1.green) * (width -i)/width + 0 * i/width
- b = c1.blue + (c2.blue - c1.blue) * (width -i)/width + 0 * i/width
- a = c1.alpha + (c2.alpha - c1.alpha)* (width -i)/width + 255 * i/width
- self.contents.fill_rect(x+i, y, 1, h, Color.new(r, g, b, a))
- end
- end
- end
- #=====================================
- # New definitions
- def draw_battlegraphic(actor, x, y)
- bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
- cw = bitmap.width
- ch = bitmap.height
- src_rect = Rect.new(0, 0, cw, ch)
- self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
- end
- #======================================
- def draw_actor_statuswindow(actor, x, y)
- bitmap = RPG::Cache.picture(actor.character_name, actor.character_hue)
- cw = bitmap.width / 4
- ch = bitmap.height / 4
- src_rect = Rect.new(0, 0, cw, ch)
- self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
- end
- #=====================================
- def draw_actor_face(actor, x, y)
- face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
- fw = face.width
- fh = face.height
- src_rect = Rect.new(0, 0, fw, fh)
- self.contents.blt(x - fw / 23, y - fh, face, src_rect)
- end#=====================================
- def draw_actor_name2(actor, x, y)
- self.contents.font.name = $fontface
- self.contents.font.color = outline_color
- self.contents.draw_text(x - 1, y - 1, 120, 32, actor.name)
- self.contents.draw_text(x + 1, y - 1, 120, 32, actor.name)
- self.contents.draw_text(x + 1, y + 1, 120, 32, actor.name)
- self.contents.draw_text(x - 1, y + 1, 120, 32, actor.name)
- self.contents.font.color = normal_color
- self.contents.draw_text(x, y, 120, 32, actor.name)
- end
- #=====================================
- def draw_actor_level2(actor, x, y)
- self.contents.font.name = $fontface
- self.contents.font.color = outline_color
- self.contents.draw_text(x - 1, y - 1, 32, 32, "Lv")
- self.contents.draw_text(x - 1, y + 1, 32, 32, "Lv")
- self.contents.draw_text(x + 1, y - 1, 32, 32, "Lv")
- self.contents.draw_text(x + 1, y + 1, 32, 32, "Lv")
- self.contents.font.color = Color.new(254, 230, 159, 255)
- self.contents.draw_text(x, y, 32, 32, "Lv")
- self.contents.font.color = outline_color
- self.contents.draw_text(x + 31, y + 1, 24, 32, actor.level.to_s, 2)
- self.contents.draw_text(x + 31, y - 1, 24, 32, actor.level.to_s, 2)
- self.contents.draw_text(x + 33, y + 1, 24, 32, actor.level.to_s, 2)
- self.contents.draw_text(x + 33, y - 1, 24, 32, actor.level.to_s, 2)
- self.contents.font.color = normal_color
- self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
- end
- #=====================================
- def draw_actor_class2(actor, x, y)
- self.contents.font.name = "Black Chancery"
- self.contents.font.color = outline_color
- self.contents.draw_text(x + 1, y + 1, 236, 32, actor.class_name)
- self.contents.draw_text(x + 1, y - 1, 236, 32, actor.class_name)
- self.contents.draw_text(x - 1, y + 1, 236, 32, actor.class_name)
- self.contents.draw_text(x - 1, y - 1, 236, 32, actor.class_name)
- self.contents.font.color = Color.new(238, 139, 254, 255)
- self.contents.draw_text(x, y, 236, 32, actor.class_name)
- end
- #======================================
- def draw_actor_hp2(actor, x, y, width = 144)
- self.contents.font.name = "Tahoma"
- # 文字列 "HP" を描画
- self.contents.font.size = 24
- self.contents.font.color = outline_color
- self.contents.draw_text(x + 1, y + 1, 32, 32, $data_system.words.hp)
- self.contents.draw_text(x + 1, y - 1, 32, 32, $data_system.words.hp)
- self.contents.draw_text(x - 1, y - 1, 32, 32, $data_system.words.hp)
- self.contents.draw_text(x - 1, y + 1, 32, 32, $data_system.words.hp)
- self.contents.font.color = Color.new(254, 238, 189, 255)
- self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
- # MaxHP を描画するスペースがあるか計算
- if width - 32 >= 108
- hp_x = x + width - 108
- flag = true
- elsif width - 32 >= 48
- hp_x = x + width - 48
- flag = false
- end
- # HP を描画
- self.contents.font.name = $fontface
- self.contents.font.size = $fontsize
- self.contents.font.color = outline_color
- self.contents.draw_text(hp_x - 1, y - 1, 48, 32, actor.hp.to_s, 2)
- self.contents.draw_text(hp_x - 1, y + 1, 48, 32, actor.hp.to_s, 2)
- self.contents.draw_text(hp_x + 1, y + 1, 48, 32, actor.hp.to_s, 2)
- self.contents.draw_text(hp_x + 1, y - 1, 48, 32, actor.hp.to_s, 2)
- self.contents.font.color = actor.hp == 0 ? knockout_color :
- actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
- self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
- # MaxHP を描画
- if flag
- self.contents.font.color = outline_color
- self.contents.draw_text(hp_x + 60 - 1, y - 1, 48, 32, actor.maxhp.to_s)
- self.contents.draw_text(hp_x + 60 - 1, y + 1, 48, 32, actor.maxhp.to_s)
- self.contents.draw_text(hp_x + 60 + 1, y - 1, 48, 32, actor.maxhp.to_s)
- self.contents.draw_text(hp_x + 60 + 1, y + 1, 48, 32, actor.maxhp.to_s)
- self.contents.draw_text(hp_x + 48 - 1, y - 1, 12, 32, "/", 1)
- self.contents.draw_text(hp_x + 48 + 1, y + 1, 12, 32, "/", 1)
- self.contents.draw_text(hp_x + 48 - 1, y + 1, 12, 32, "/", 1)
- self.contents.draw_text(hp_x + 48 + 1, y - 1, 12, 32, "/", 1)
- self.contents.font.color = normal_color
- self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
- self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
- end
- end
- #============================================
- def draw_actor_sp2(actor, x, y, width = 144)
- self.contents.font.name = "Tahoma"
- # 文字列 "SP" を描画
- self.contents.font.size = 24
- self.contents.font.color = outline_color
- self.contents.draw_text(x + 1, y + 1, 32, 32, $data_system.words.sp)
- self.contents.draw_text(x + 1, y - 1, 32, 32, $data_system.words.sp)
- self.contents.draw_text(x - 1, y - 1, 32, 32, $data_system.words.sp)
- self.contents.draw_text(x - 1, y + 1, 32, 32, $data_system.words.sp)
- self.contents.font.color = Color.new(74, 230, 51, 225)
- self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
- # MaxSP を描画するスペースがあるか計算
- if width - 32 >= 108
- sp_x = x + width - 108
- flag = true
- elsif width - 32 >= 48
- sp_x = x + width - 48
- flag = false
- end
- # SP を描画
- self.contents.font.name = $fontface
- self.contents.font.size = $fontsize
- self.contents.font.color = outline_color
- self.contents.draw_text(sp_x - 1, y - 1, 48, 32, actor.sp.to_s, 2)
- self.contents.draw_text(sp_x - 1, y + 1, 48, 32, actor.sp.to_s, 2)
- self.contents.draw_text(sp_x + 1, y - 1, 48, 32, actor.sp.to_s, 2)
- self.contents.draw_text(sp_x + 1, y + 1, 48, 32, actor.sp.to_s, 2)
- self.contents.font.color = actor.sp == 0 ? knockout_color :
- actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
- self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
- # MaxSP を描画
- if flag
- self.contents.font.color = outline_color
- self.contents.draw_text(sp_x + 60 - 1, y - 1, 48, 32, actor.maxsp.to_s)
- self.contents.draw_text(sp_x + 60 - 1, y + 1, 48, 32, actor.maxsp.to_s)
- self.contents.draw_text(sp_x + 60 + 1, y + 1, 48, 32, actor.maxsp.to_s)
- self.contents.draw_text(sp_x + 60 + 1, y - 1, 48, 32, actor.maxsp.to_s)
- self.contents.draw_text(sp_x + 48 - 1, y - 1, 12, 32, "/", 1)
- self.contents.draw_text(sp_x + 48 - 1, y - 1, 12, 32, "/", 1)
- self.contents.draw_text(sp_x + 48 + 1, y + 1, 12, 32, "/", 1)
- self.contents.draw_text(sp_x + 48 + 1, y + 1, 12, 32, "/", 1)
- self.contents.font.color = normal_color
- self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
- self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
- end
- end
- #=========================================
- def draw_actor_state2(actor, x, y, width = 120)
- self.contents.font.name = $fontface
- text = make_battler_state_text(actor, width, true)
- self.contents.font.color = outline_color
- self.contents.draw_text(x - 1, y - 1, width, 32, text)
- self.contents.draw_text(x - 1, y + 1, width, 32, text)
- self.contents.draw_text(x + 1, y + 1, width, 32, text)
- self.contents.draw_text(x + 1, y - 1, width, 32, text)
- self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
- self.contents.draw_text(x, y, width, 32, text)
- end
- #=====================================
- def draw_actor_parameter2(actor, x, y, type)
- case type
- when 0
- parameter_name = $data_system.words.atk
- parameter_value = actor.atk
- when 1
- parameter_name = $data_system.words.pdef
- parameter_value = actor.pdef
- when 2
- parameter_name = "Magic Def"
- parameter_value = actor.mdef
- when 3
- parameter_name = $data_system.words.str
- parameter_value = actor.str
- when 4
- parameter_name = $data_system.words.dex
- parameter_value = actor.dex
- when 5
- parameter_name = $data_system.words.agi
- parameter_value = actor.agi
- when 6
- parameter_name = $data_system.words.int
- parameter_value = actor.int
- end
- self.contents.font.color = system_color
- self.contents.draw_text_outline(x, y, 120, 32, parameter_name)
- self.contents.font.color = normal_color
- self.contents.draw_text_outline(x + 130, y, 36, 32, parameter_value.to_s, 2)
- end
- #=========================================
- def draw_item_name2(item, x, y)
- if item == nil
- self.contents.draw_text_outline(x + 28, y, 212, 32, "EMPTY")
- return
- end
- bitmap = RPG::Cache.icon(item.icon_name)
- self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
- self.contents.draw_text_outline(x + 28, y, 212, 32, item.name)
- end
- # New colour for outlining text - Black
- def outline_color
- return Color.new(0, 0, 0, 255)
- end
- end
- #==============================================================================
- # ■ Window_Selectable
- #------------------------------------------------------------------------------
- # カーソルの移動やスクロールの機能を持つウィンドウクラスです。
- #==============================================================================
- class Window_Itemselectable < Window_Base
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_reader :index # カーソル位置
- attr_reader :help_window # ヘルプウィンドウ
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # x : ウィンドウの X 座標
- # y : ウィンドウの Y 座標
- # width : ウィンドウの幅
- # height : ウィンドウの高さ
- #--------------------------------------------------------------------------
- def initialize(x, y, width, height)
- super(x, y, width, height)
- @item_max = 1
- @column_max = 1
- @index = -1
- end
- #--------------------------------------------------------------------------
- # ● カーソル位置の設定
- # index : 新しいカーソル位置
- #--------------------------------------------------------------------------
- def index=(index)
- @index = index
- # ヘルプテキストを更新 (update_help は継承先で定義される)
- if self.active and @help_window != nil
- update_help
- end
- # カーソルの矩形を更新
- update_cursor_rect
- end
- #--------------------------------------------------------------------------
- # ● 行数の取得
- #--------------------------------------------------------------------------
- def row_max
- # 項目数と列数から行数を算出
- return (@item_max + @column_max - 1) / @column_max
- end
- #--------------------------------------------------------------------------
- # ● 先頭の行の取得
- #--------------------------------------------------------------------------
- def top_row
- # ウィンドウ内容の転送元 Y 座標を、1 行の高さ 32 で割る
- return self.oy / 32
- end
- #--------------------------------------------------------------------------
- # ● 先頭の行の設定
- # row : 先頭に表示する行
- #--------------------------------------------------------------------------
- def top_row=(row)
- # row が 0 未満の場合は 0 に修正
- if row < 0
- row = 0
- end
- # row が row_max - 1 超の場合は row_max - 1 に修正
- if row > row_max - 1
- row = row_max - 1
- end
- # row に 1 行の高さ 32 を掛け、ウィンドウ内容の転送元 Y 座標とする
- self.oy = row * 32
- end
- #--------------------------------------------------------------------------
- # ● 1 ページに表示できる行数の取得
- #--------------------------------------------------------------------------
- def page_row_max
- # ウィンドウの高さから、フレームの高さ 32 を引き、1 行の高さ 32 で割る
- return (self.height - 32) / 32
- end
- #--------------------------------------------------------------------------
- # ● 1 ページに表示できる項目数の取得
- #--------------------------------------------------------------------------
- def page_item_max
- # 行数 page_row_max に 列数 @column_max を掛ける
- return page_row_max * @column_max
- end
- #--------------------------------------------------------------------------
- # ● ヘルプウィンドウの設定
- # help_window : 新しいヘルプウィンドウ
- #--------------------------------------------------------------------------
- def help_window=(help_window)
- @help_window = help_window
- # ヘルプテキストを更新 (update_help は継承先で定義される)
- if self.active and @help_window != nil
- update_help
- end
- end
- #--------------------------------------------------------------------------
- # ● カーソルの矩形更新
- #--------------------------------------------------------------------------
- def update_cursor_rect
- # カーソル位置が 0 未満の場合
- if @index < 0
- self.cursor_rect.empty
- return
- end
- # 現在の行を取得
- row = @index / @column_max
- # 現在の行が、表示されている先頭の行より前の場合
- if row < self.top_row
- # 現在の行が先頭になるようにスクロール
- self.top_row = row
- end
- # 現在の行が、表示されている最後尾の行より後ろの場合
- if row > self.top_row + (self.page_row_max - 1)
- # 現在の行が最後尾になるようにスクロール
- self.top_row = row - (self.page_row_max - 1)
- end
- # カーソルの幅を計算
- cursor_width = self.width / @column_max - 32
- # カーソルの座標を計算
- x = @index % @column_max * (cursor_width + 6) + 10
- y = @index / @column_max * 32 - self.oy
- # カーソルの矩形を更新
- self.cursor_rect.set(x, y, cursor_width, 32)
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- super
- # カーソルの移動が可能な状態の場合
- if self.active and @item_max > 0 and @index >= 0
- # 方向ボタンの下が押された場合
- if Input.repeat?(Input::DOWN)
- # 列数が 1 かつ 方向ボタンの下の押下状態がリピートでない場合か、
- # またはカーソル位置が(項目数 - 列数)より前の場合
- if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
- @index < @item_max - @column_max
- # カーソルを下に移動
- $game_system.se_play($data_system.cursor_se)
- @index = (@index + @column_max) % @item_max
- end
- end
- # 方向ボタンの上が押された場合
- if Input.repeat?(Input::UP)
- # 列数が 1 かつ 方向ボタンの上の押下状態がリピートでない場合か、
- # またはカーソル位置が列数より後ろの場合
- if (@column_max == 1 and Input.trigger?(Input::UP)) or
- @index >= @column_max
- # カーソルを上に移動
- $game_system.se_play($data_system.cursor_se)
- @index = (@index - @column_max + @item_max) % @item_max
- end
- end
- # 方向ボタンの右が押された場合
- if Input.repeat?(Input::RIGHT)
- # 列数が 2 以上で、カーソル位置が(項目数 - 1)より前の場合
- if @column_max >= 2 and @index < @item_max - 1
- # カーソルを右に移動
- $game_system.se_play($data_system.cursor_se)
- @index += 1
- end
- end
- # 方向ボタンの左が押された場合
- if Input.repeat?(Input::LEFT)
- # 列数が 2 以上で、カーソル位置が 0 より後ろの場合
- if @column_max >= 2 and @index > 0
- # カーソルを左に移動
- $game_system.se_play($data_system.cursor_se)
- @index -= 1
- end
- end
- # R ボタンが押された場合
- if Input.repeat?(Input::R)
- # 表示されている最後尾の行が、データ上の最後の行よりも前の場合
- if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
- # カーソルを 1 ページ後ろに移動
- $game_system.se_play($data_system.cursor_se)
- @index = [@index + self.page_item_max, @item_max - 1].min
- self.top_row += self.page_row_max
- end
- end
- # L ボタンが押された場合
- if Input.repeat?(Input::L)
- # 表示されている先頭の行が 0 より後ろの場合
- if self.top_row > 0
- # カーソルを 1 ページ前に移動
- $game_system.se_play($data_system.cursor_se)
- @index = [@index - self.page_item_max, 0].max
- self.top_row -= self.page_row_max
- end
- end
- end
- # ヘルプテキストを更新 (update_help は継承先で定義される)
- if self.active and @help_window != nil
- update_help
- end
- # カーソルの矩形を更新
- update_cursor_rect
- end
- end
- #==============================================================================
- # ■ Window_Menuselectable
- #------------------------------------------------------------------------------
- # カーソルの移動やスクロールの機能を持つウィンドウクラスです。
- #==============================================================================
- class Window_Menuselectable < Window_Base
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_reader :index # カーソル位置
- attr_reader :help_window # ヘルプウィンドウ
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # x : ウィンドウの X 座標
- # y : ウィンドウの Y 座標
- # width : ウィンドウの幅
- # height : ウィンドウの高さ
- #--------------------------------------------------------------------------
- def initialize(x, y, width, height)
- super(x, y, width, height)
- @item_max = 1
- @column_max = 1
- @index = -1
- end
- #--------------------------------------------------------------------------
- # ● カーソル位置の設定
- # index : 新しいカーソル位置
- #--------------------------------------------------------------------------
- def index=(index)
- @index = index
- # ヘルプテキストを更新 (update_help は継承先で定義される)
- if self.active and @help_window != nil
- update_help
- end
- # カーソルの矩形を更新
- update_cursor_rect
- end
- #--------------------------------------------------------------------------
- # ● 行数の取得
- #--------------------------------------------------------------------------
- def row_max
- # 項目数と列数から行数を算出
- return (@item_max + @column_max - 1) / @column_max
- end
- #--------------------------------------------------------------------------
- # ● 先頭の行の取得
- #--------------------------------------------------------------------------
- def top_row
- # ウィンドウ内容の転送元 Y 座標を、1 行の高さ 32 で割る
- return self.oy / 32
- end
- #--------------------------------------------------------------------------
- # ● 先頭の行の設定
- # row : 先頭に表示する行
- #--------------------------------------------------------------------------
- def top_row=(row)
- # row が 0 未満の場合は 0 に修正
- if row < 0
- row = 0
- end
- # row が row_max - 1 超の場合は row_max - 1 に修正
- if row > row_max - 1
- row = row_max - 1
- end
- # row に 1 行の高さ 32 を掛け、ウィンドウ内容の転送元 Y 座標とする
- self.oy = row * 32
- end
- #--------------------------------------------------------------------------
- # ● 1 ページに表示できる行数の取得
- #--------------------------------------------------------------------------
- def page_row_max
- # ウィンドウの高さから、フレームの高さ 32 を引き、1 行の高さ 32 で割る
- return (self.height - 32) / 32
- end
- #--------------------------------------------------------------------------
- # ● 1 ページに表示できる項目数の取得
- #--------------------------------------------------------------------------
- def page_item_max
- # 行数 page_row_max に 列数 @column_max を掛ける
- return page_row_max * @column_max
- end
- #--------------------------------------------------------------------------
- # ● ヘルプウィンドウの設定
- # help_window : 新しいヘルプウィンドウ
- #--------------------------------------------------------------------------
- def help_window=(help_window)
- @help_window = help_window
- # ヘルプテキストを更新 (update_help は継承先で定義される)
- if self.active and @help_window != nil
- update_help
- end
- end
- #--------------------------------------------------------------------------
- # ● カーソルの矩形更新
- #--------------------------------------------------------------------------
复制代码
此贴于 2008-2-27 1:13:35 被版主水迭澜提醒,请楼主看到后对本贴做出回应。
----------------版务----------------
如果问题未解决,请继续提问
如果问题已解决,请结贴
若到末贴发贴时间后一周仍未结贴
管理员会自动为你过期帖子、结贴或强行认可答案(好人卡-1)
|
|