| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2014-1-30 |
| 在线时间 | 37 小时 |
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 37 小时
- 注册时间
- 2009-10-4
- 回帖
- 28
|
楼主 |
发表于 2011-8-13 21:43:59
|
显示全部楼层
- #==============================================================================
- #
- # 呼出对话框 ver. 1.31 By パラ犬(日)
- # 来自 http://rpg.para.s3p.net/
- #
- # 汉化修改 66RPG bbschat(2006.1.5)
- # 来自 http://www.66RPG.com/
- #
- # 脚本更新:by KKME◎66RPG.com,2007年2月
- #
- #==============================================================================
- # ●准备工作-窗口Skin
- #
- # 首先,确认自己使用的对话框窗口Skin,(数据库-系统-窗口外观图形)
- # 然后根据该窗口Skin制作对话框尾部使用的两个箭头图形
- # 尾部箭头图形命名方式:“窗口skin名-top”,“窗口skin名-under”
- # 将该图形文件存放在“Graphics/Windowskins”文件夹下。
- #
- # 本演示游戏内置2套窗口和箭头图形,
- # 一套是游戏默认的“001-Blue01”,一套是定制的“fk”
- # 玩家可以根据自己的需要参照样本定制自己的呼出对话框窗口Skin。
- #
- # ★●使用方法 edit by KKME◎66RPG.com
- #
- # 方法一:传统方法:输入脚本:chat(事件编号, "角色姓名")。这样就可以正常显示。
- # 这种方法虽然使用麻烦,但是有时候也会用到(比如不显示姓名的对话)。这种方法比方法二优先度高。
- # 当不需要这种对话功能时候,直接输入一个脚本:chat,就能全部清空。
- #
- # 方法二:新方法:直接输入对话,会自动读取人名。
- # 举例:首先将事件NPC命名,比如命名为“王小二”
- # 则输入对话:
- # 王小二:
- # 今天天气真好啊。
- # 这样就能直接将对话显示在这个NPC头上。如果姓名是我方队员则可自动显示在主角头上。
- # 这种方法对于我方队员的情况支持
- [1]这样的效果。如
- #
- [1]:
- # 明天听说要下雨。
- # 也能正确显示。对于一般的游戏制作这样已经足够了,如果还有特殊需求——小生是
- # 知道有可能需要什么特殊需求的:),其实也设置了接口可以满足,不过需要你自己研究一下。
- #
- #
- # ★●角色名字窗口使用角色图片的方法(汉化特别追加功能,原脚本只能使用文字)
- #
- # 如果能在对应文件夹中找到文件名和角色名字相同的图片,
- # 则角色名字窗口显示角色头像图片,角色图片最好能包括角色的名字。
- # 默认头像图片保存目录为“Graphics/Heads/”,玩家可自行修改。
- #
- # 如果不想使用角色名字直接作为头像文件名。可以使用下面在 Game_Temp 类里增加的namebmp属性。
- # 重新设定角色名字与文件名的对应关系。
- #
- # KKME注:这里修改了原有算法,可以支持中文名。小生以为不再需要Game_Temp类了。
- # 这里小生知道也会有特殊需求,也是设置好接口了的。如果需要再自己研究或问我吧。不然说多了容易误导。
- #
- # ●信息表示速度的变更方法
- #
- # 在事件命令行使用[脚本]将数值代入[$mes_speed]
- # 速度为 0 即瞬间显示全部信息,数字越大,信息表示速度越慢。
- # (举例:$mes_speed=1)
- #
- # ●其他设置
- #
- # 请参照下面的注释
- #==============================================================================
- module FUKI
- # 头像图片保存目录的设定
- HEAD_PIC_DIR = "Graphics/Heads/"
- # 是否显示尾部图标
- TAIL_SHOW = true
-
- # Skin的设定
- # 使用数据库默认窗口Skin情况下这里使用[""]
- FUKI_SKIN_NAME = "001-Blue01" # 呼出对话框用Skin
- NAME_SKIN_NAME = "001-Blue01" # 角色名字窗口用Skin
-
- # 字体大小
- MES_FONT_SIZE = 22 # 呼出对话框
- NAME_FONT_SIZE = 14 # 角色名字窗口
-
- # 字体颜色
- #(设定为 Color.new(0, 0, 0, 0) 表示使用普通文字色)
- FUKI_COLOR = Color.new(255, 255, 255, 255) # 呼出对话框
- NAME_COLOR = Color.new(255, 255, 255, 255) # 角色名字窗口
-
- # 窗口透明度
- # 如修改窗口透明度请同时修改尾部箭头图形内部的透明度
- FUKI_OPACITY = 255 # 呼出对话框
- MES_OPACITY = 255 # 默认信息窗口
- NAME_OPACITY = 255 # 角色名字窗口
-
- # 角色名字窗口的相对位置
- NAME_SHIFT_X = 0 # 横坐标
- NAME_SHIFT_Y = 16 # 纵坐标
-
- # 窗口表示时是否根据画面大小自动检查窗口出现的位置,
- # 自动改变位置( true / false )
- # 设置成 true 在某些变态情况下可能出现箭头图标颠倒的问题 <- bbschat <= KKME
- POS_FIX = true
- # 在画面最边缘表示时的稍微挪动
- # 使用圆形Skin的角和方框的角重合的情况下为 true
- CORNER_SHIFT = false
- SHIFT_PIXEL = 4 # true 时挪动的象素
-
- # 角色高度尺寸
- CHARACTOR_HEIGHT = 48
- # 呼出对话框的相对位置(纵坐标)
- POP_SHIFT_TOP = 0 # 表示位置为上的时候
- POP_SHIFT_UNDER = 0 # 表示位置为下的时候
-
- # 信息的表示速度(数字越小速度越快,0为瞬间表示)
- # 游戏中 可随时用数字代入 $mes_speed 来改变消息表示速度。
- MES_SPEED = 1
- end
- #==============================================================================
- # 初始化两个变量,不要动(by KKME◎66RPG.com)
- #==============================================================================
- $mes_name = ""
- $mes_id = nil
- #==============================================================================
- # 方便用户同时设置2个常用参数而使用的函数
- #==============================================================================
- def chat(id = nil,name = "")
- $mes_id = id
- $mes_name = name
- end
- #==============================================================================
- # □ Game_Temp
- #==============================================================================
- class Game_Temp
- attr_accessor :namebmp #保存头像图片的Hash表
- alias initialize_fuki initialize
- def initialize
- initialize_fuki
- # 如果不想使用角色名字直接作为头像文件名
- # 可在这里重新设定角色名字与文件名的对应关系
- @namebmp ={"玩家"=>"维斯特"}
- end
- end
- #==============================================================================
- # □ Window_Message
- #==============================================================================
- class Window_Message < Window_Selectable
- #--------------------------------------------------------------------------
- # ● 初始化状态
- #--------------------------------------------------------------------------
- def initialize
- super(80, 304, 480, 160)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.visible = false
- self.z = 9998
- @fade_in = false
- @fade_out = false
- @contents_showing = false
- @cursor_width = 0
- @kkme_name = ""
- self.active = false
- self.index = -1
- @w = 0
- @h = 0
- @wait = 0
- @dx = 0
- @dy = 0
- $mes_speed = FUKI::MES_SPEED
- end
-
- #--------------------------------------------------------------------------
- # ○ 决定窗口尺寸并生成窗口
- #--------------------------------------------------------------------------
- def refresh_create
- @kkme_name = ""
- begin
- @kkme_name = $game_temp.message_text.split(":")[0] if $game_temp.message_text.split(":")[1] != nil
- $game_temp.message_text = $game_temp.message_text[@kkme_name.size + 4,$game_temp.message_text.size] if @kkme_name != ""
- rescue
- end
- self.contents.clear
- self.contents.font.color = normal_color
- self.contents.font.size = FUKI::MES_FONT_SIZE
- # 取得窗口尺寸
- get_windowsize
- w = @w + 32 + 8
- h = @h * (self.contents.font.size + 10) + 26
- # 生成呼出窗口
- set_fukidasi(self.x, self.y, w, h)
- # 生成角色名字窗口
- set_namewindow
- # 初始化信息表示使用的变量
- @dx = @dy = 0
- @cursor_width = 0
- @contents_drawing = true
- # 瞬间表示的情况下
- if $mes_speed == 0
- # 循环信息描绘处理
- while $game_temp.message_text != ""
- draw_massage
- end
- draw_opt_text
- @contents_showing_end = true
- @contents_drawing = false
- else
- # 一个一个描绘文字
- refresh_drawtext
- end
- end
-
- #--------------------------------------------------------------------------
- # ○ 一个一个描绘文字
- #--------------------------------------------------------------------------
- def refresh_drawtext
- if $game_temp.message_text != nil
- if @wait > 0
- @wait -= 1
- elsif @wait == 0
- # 描绘处理
- draw_massage
- @wait = $mes_speed
- end
- end
- # 描绘结束
- if $game_temp.message_text == ""
- draw_opt_text
- @contents_showing_end = true
- @contents_drawing = false
- end
- end
-
- #--------------------------------------------------------------------------
- # ○ 取得窗口尺寸
- #--------------------------------------------------------------------------
- def get_windowsize
- x = y = 0
- @h = @w = 0
- @cursor_width = 0
- # 有选择项的话,处理字的缩进
- if $game_temp.choice_start == 0
- x = 16
- end
- # 有等待显示的文字的情况下
- if $game_temp.message_text != nil
- text = $game_temp.message_text.clone
- # 限制文字处理
- begin
- last_text = text.clone
- text.gsub!(/\[Vv][([0-9]+)]/) { $game_variables[$1.to_i] }
- end until text == last_text
- text.gsub!(/\[Nn][([0-9]+)]/) do
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
- end
- # 为了方便、将 "\" 变换为 "
|
|