设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1148|回复: 7
打印 上一主题 下一主题

[已经解决] 漫画式对话框的显示

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-10-17
帖子
38
跳转到指定楼层
1
发表于 2009-10-25 02:15:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人


梦石
0
星屑
89
在线时间
24 小时
注册时间
2006-5-27
帖子
11425

贵宾

2
发表于 2009-10-25 07:09:10 | 只看该作者
本帖最后由 凌辰 于 2009-10-25 07:15 编辑

修改文字颜色?隐约看见有白色的字呢。

看看这个,搜索出来的:
http://rpg.blue/viewthread.php?t ... 5%AD%97%2B%E8%89%B2
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-10-17
帖子
38
3
 楼主| 发表于 2009-10-25 11:25:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1535
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

4
发表于 2009-10-25 11:27:25 | 只看该作者
有图依然无真相,请附上脚本以便他人解答。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-10-17
帖子
38
5
 楼主| 发表于 2009-10-25 11:36:29 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1535
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

6
发表于 2009-10-25 11:54:37 | 只看该作者
  1. class Game_Event < Game_Character
  2. #===========================================================================
  3. # 便于返回姓名和修改姓名
  4. #===========================================================================
  5. def name
  6. return @event.name
  7. end
  8. def name=(na)
  9. @event.name = na
  10. end
  11. end
  12. #==============================================================================
  13. #
  14. # 呼出对话框 ver. 1.31 By パラ犬(日)
  15. #  来自 http://rpg.para.s3p.net/
  16. #
  17. #  汉化修改 66RPG bbschat(2006.1.5)
  18. # 来自 http://rpg.blue/web/
  19. #
  20. # 脚本更新:by KKME◎66RPG.com,2007年2月
  21. #
  22. # 脚本更新:by 绫晓露雪萌◎66RPG.com,2007年7月
  23. #
  24. #==============================================================================
  25. module FUKI
  26. # 头像图片保存目录的设定
  27. HEAD_PIC_DIR = "Graphics/Heads/"
  28. # 是否显示尾部图标
  29. TAIL_SHOW = true
  30. # Skin的设定
  31. # 使用数据库默认窗口Skin情况下这里使用[""]
  32. FUKI_SKIN_NAME = "" # 呼出对话框用Skin
  33. NAME_SKIN_NAME = "" # 角色名字窗口用Skin
  34. # 字体大小
  35. MES_FONT_SIZE = 19 # 呼出对话框
  36. NAME_FONT_SIZE = 14 # 角色名字窗口
  37. # 字体颜色
  38. #(设定为 Color.new(0, 0, 0, 0) 表示使用普通文字色)
  39. FUKI_COLOR = Color.new(0, 0, 0, 255) # 呼出对话框
  40. NAME_COLOR = Color.new(0, 0, 0, 255) # 角色名字窗口
  41. # 窗口透明度
  42. # 如修改窗口透明度请同时修改尾部箭头图形内部的透明度
  43. FUKI_OPACITY = 0 # 呼出对话框
  44. MES_OPACITY = 255 # 默认信息窗口
  45. NAME_OPACITY = 255 # 角色名字窗口
  46. # 角色名字窗口的相对位置
  47. NAME_SHIFT_X = 0 # 横坐标
  48. NAME_SHIFT_Y = 16 # 纵坐标
  49. # 窗口表示时是否根据画面大小自动检查窗口出现的位置,
  50. # 自动改变位置( true / false )
  51. # 设置成 true 在某些变态情况下可能出现箭头图标颠倒的问题 <- bbschat <= KKME
  52. POS_FIX = false
  53. # 在画面最边缘表示时的稍微挪动
  54. # 使用圆形Skin的角和方框的角重合的情况下为 true
  55. CORNER_SHIFT = false
  56. SHIFT_PIXEL = 4 # true 时挪动的象素
  57. # 角色高度尺寸
  58. CHARACTOR_HEIGHT = 40
  59. # 呼出对话框的相对位置(纵坐标)
  60. POP_SHIFT_TOP = 0 # 表示位置为上的时候
  61. POP_SHIFT_UNDER = 2 # 表示位置为下的时候
  62. # 信息的表示速度(数字越小速度越快,0为瞬间表示)
  63. # 游戏中 可随时用数字代入 $mes_speed 来改变消息表示速度。
  64. MES_SPEED = 1
  65. end

  66. #==============================================================================
  67. # 初始化两个变量,不要动(by KKME◎66RPG.com)
  68. #==============================================================================
  69. $mes_name = ""
  70. $mes_id = nil

  71. #==============================================================================
  72. # 方便用户同时设置2个常用参数而使用的函数
  73. #==============================================================================
  74. def chat(id = nil,name = "")
  75. $mes_id = id
  76. $mes_name = name
  77. end
  78. #==============================================================================
  79. # □ Game_Temp
  80. #==============================================================================
  81. class Game_Temp
  82. attr_accessor :namebmp #保存头像图片的Hash表
  83. alias initialize_fuki initialize
  84. def initialize
  85. initialize_fuki
  86. # 如果不想使用角色名字直接作为头像文件名
  87. # 可在这里重新设定角色名字与文件名的对应关系
  88. @namebmp ={"玩家"=>"维斯特"}
  89. end
  90. end
  91. #==============================================================================
  92. # □ Window_Message
  93. #==============================================================================
  94. class Window_Message < Window_Selectable
  95. #--------------------------------------------------------------------------
  96. # ● 初始化状态
  97. #--------------------------------------------------------------------------
  98. def initialize
  99. super(80, 304, 480, 160)
  100. self.contents = Bitmap.new(width - 32, height - 32)
  101. self.contents.font.color = text_color(0)
  102. self.visible = false
  103. self.z = 9998
  104. @fade_in = false
  105. @fade_out = false
  106. @contents_showing = false
  107. @cursor_width = 0
  108. @kkme_name = ""
  109. self.active = false
  110. self.index = -1
  111. @w = 0
  112. @h = 0
  113. @wait = 0
  114. @dx = 0
  115. @dy = 0
  116. $mes_speed = FUKI::MES_SPEED
  117. #------------------------
  118. # ★ 特殊时期中断标志
  119. #------------------------
  120. @no_term_stop = false
  121. @save_x = 0
  122. @save_y = 0
  123. @old_text_info = []
  124. end
  125. #--------------------------------------------------------------------------
  126. # ○ 决定窗口尺寸并生成窗口
  127. #--------------------------------------------------------------------------
  128. def refresh_create
  129. unless @no_term_stop
  130. @pic_skin.dispose if @pic_skin != nil
  131. end
  132. @kkme_name = ""
  133. begin
  134. @kkme_name = $game_temp.message_text.split(":")[0] if $game_temp.message_text.split(":")[1] != nil
  135. if @kkme_name != ""
  136. jiajia = '\c[1]【' + @kkme_name + '】\c[0]'
  137. $game_temp.message_text = jiajia + $game_temp.message_text[@kkme_name.size + 2,$game_temp.message_text.size]
  138. else
  139. $game_temp.message_text =$game_temp.message_text #'\c[0]' + $game_temp.message_text
  140. end
  141. rescue
  142. end
  143. unless @no_term_stop
  144. self.contents.clear
  145. self.contents.font.color = Color.new(0, 0, 0, 255)
  146. self.contents.font.size = FUKI::MES_FONT_SIZE
  147. # 取得窗口尺寸
  148. get_windowsize
  149. w = @w + 32 + 8
  150. h = @h * (self.contents.font.size + 10) + 26
  151. # 生成呼出窗口
  152. # 生成角色名字窗口
  153. set_fukidasi(self.x, self.y, w, h)
  154. set_namewindow
  155. pic_back
  156. end
  157. # 初始化信息表示使用的变量
  158. @dx = @save_x # 0
  159. @dy = @save_y # 0
  160. @cursor_width = 0
  161. @contents_drawing = true
  162. update
  163. # 瞬间表示的情况下
  164. if $mes_speed == 0
  165. # 循环信息描绘处理
  166. while $game_temp.message_text != ""
  167. draw_massage
  168. end
  169. draw_opt_text
  170. @contents_showing_end = true
  171. @contents_drawing = false
  172. else
  173. # 一个一个描绘文字
  174. refresh_drawtext
  175. end
  176. end
  177. #--------------------------------------------------------------------------
  178. # ○ 一个一个描绘文字
  179. #--------------------------------------------------------------------------
  180. def refresh_drawtext
  181. if $game_temp.message_text != nil
  182. if @wait > 0
  183. @wait -= 1
  184. elsif @wait == 0
  185. # 描绘处理
  186. draw_massage
  187. @wait = $mes_speed
  188. end
  189. end
  190. # 描绘结束
  191. if $game_temp.message_text == ""
  192. draw_opt_text
  193. @contents_showing_end = true
  194. @contents_drawing = false
  195. end
  196. end
  197. #--------------------------------------------------------------------------
  198. # ○ 取得窗口尺寸
  199. #--------------------------------------------------------------------------
  200. def get_windowsize
  201. x = y = 0
  202. @h = @w = 0
  203. @cursor_width = 0
  204. # 有选择项的话,处理字的缩进
  205. if $game_temp.choice_start == 0
  206. x = 16
  207. end
  208. # 有等待显示的文字的情况下
  209. if $game_temp.message_text != nil
  210. text = $game_temp.message_text.clone
  211. # 限制文字处理
  212. begin
  213. last_text = text.clone
  214. text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  215. end until text == last_text
  216. text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  217. $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  218. end
  219. # 为了方便、将 "\\\\" 变换为 "\000"
  220. text.gsub!(/\\\\/) { "\000" }
  221. # "\\C" 变为 "\001" 、"\\G" 变为 "\002"
  222. text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001" }
  223. text.gsub!(/\\[Gg]/) { "\002" }
  224. # c 获取 1 个字 (如果不能取得文字就循环)
  225. while ((c = text.slice!(/./m)) != nil)
  226. # \\ 的情况下
  227. if c == "\000"
  228. # 还原为本来的文字
  229. c = "\\"
  230. end
  231. # \C[n] 或者 \G 的情况下
  232. if c == "\001" or c == "\002"
  233. # 下面的文字
  234. next
  235. end
  236. # 另起一行文字的情况下
  237. if c == "\n"
  238. # y 累加 1
  239. y += 1
  240. # 取得纵横尺寸
  241. @h = y
  242. @w = x > @w ? x : @w
  243. if y >= $game_temp.choice_start
  244. @w = x + 8 > @w ? x + 8 : @w
  245. end
  246. x = 0
  247. # 移动到选择项的下一行
  248. if y >= $game_temp.choice_start
  249. x = 8
  250. end
  251. # 下面的文字
  252. next
  253. end
  254. # x 为要描绘文字的宽度加法运算
  255. x += self.contents.text_size(c).width
  256. end
  257. end
  258. # 输入数值的情况
  259. if $game_temp.num_input_variable_id > 0
  260. digits_max = $game_temp.num_input_digits_max
  261. number = $game_variables[$game_temp.num_input_variable_id]
  262. @h += 1
  263. x = digits_max * self.contents.font.size + 16
  264. @w = x > @w ? x : @w
  265. end
  266. end
  267. #--------------------------------------------------------------------------
  268. # ○ 描绘信息处理
  269. #--------------------------------------------------------------------------
  270. def draw_massage
  271. # 有等待显示的文字的情况下
  272. if $game_temp.message_text != nil or @old_text_info != nil
  273. text = $game_temp.message_text
  274. # 限制文字处理
  275. begin
  276. last_text = text.clone
  277. text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  278. end until text == last_text
  279. text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  280. $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  281. end
  282. # 为了方便、将 "\\\\" 变换为 "\000"
  283. text.gsub!(/\\\\/) { "\000" }
  284. # "\\C" 变为 "\001"、"\\G" 变为 "\002"
  285. text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  286. text.gsub!(/\\[Gg]/) { "\002" }
  287. # c 获取 1 个字
  288. c = text.slice!(/./m)
  289. # 选择项的情况 修改
  290. if @dy >= $game_temp.choice_start
  291. self.contents.font.color = Color.new(0, 0, 0, 255)
  292. # 处理字的缩进
  293. @dx = 8
  294. # 描绘文字
  295. self.contents.draw_text(4 + @dx, 32 * @dy, 40, 32, c)
  296. # x 为要描绘文字宽度的加法运算
  297. @dx += self.contents.text_size(c).width
  298. # 循环
  299. while ((c = text.slice!(/./m)) != "\n")
  300. # 描绘文字
  301. self.contents.draw_text(4 + @dx, 32 * @dy, 40, 32, c)
  302. # x 为要描绘文字宽度的加法运算
  303. @dx += self.contents.text_size(c).width
  304. end
  305. if c == "\n"
  306. # 更新光标宽度
  307. @cursor_width = [@cursor_width, @dx].max
  308. # dy 累加 1
  309. @dy += 1
  310. @dx = 0
  311. end
  312. return
  313. end
  314. # \\ 的情况下
  315. if c == "\000"
  316. # 还原为本来的文字
  317. c = "\\"
  318. end
  319. #\C[n] 的情况下
  320. if c == "\001"
  321. # 更改文字色
  322. text.sub!(/\[([0-9]+)\]/, "")
  323. color = $1.to_i
  324. if color >= 0 and color <= 7
  325. self.contents.font.color = text_color(color)
  326. end
  327. end
  328. # \G 的情况下
  329. if c == "\002"
  330. # ★生成金钱窗口★
  331. @contents_showing_end = true
  332. @contents_drawing = false
  333. terminate_messageX
  334. @save_x = @dx
  335. @save_y = @dy
  336. end
  337. # 另起一行文字的情况下
  338. if c == "\n"
  339. # dy 累加 1
  340. @dy += 1
  341. @dx = 0
  342. end
  343. # 描绘文字
  344. size_zy = 6 # 设定文字动态增大——别问我这么重要的参数为什么放在这里而不放在顶部,有特殊原因的。

  345. unless @old_text_info == []
  346. self.contents.fill_rect (4 + @old_text_info[0], (@old_text_info[2]+10-size_zy)*@old_text_info[1] - size_zy/2 ,@old_text_info[2],@old_text_info[2],Color.new(0,0,0,0))
  347. col = self.contents.font.color.clone
  348. self.contents.font.color = @old_text_info[3].clone
  349. self.contents.font.size = @old_text_info[2] -= size_zy
  350. self.contents.draw_text(4 + @old_text_info[0], (@old_text_info[2]+10)*@old_text_info[1],@old_text_info[2],@old_text_info[2],@old_text_info[4])
  351. self.contents.font.color = col
  352. @old_text_info = []
  353. end
  354. if c != nil
  355. self.contents.font.size = FUKI::MES_FONT_SIZE
  356. font_size = self.contents.font.size += size_zy
  357. @old_text_info.push(@dx , @dy , font_size, self.contents.font.color.clone, c)
  358. self.contents.draw_text(4+@dx, (font_size+10-size_zy)*@dy - size_zy/2, font_size, font_size, c)
  359. self.contents.font.size -= size_zy
  360. # dx 为要描绘文字的宽度加法运算
  361. @dx += self.contents.text_size(c).width
  362. end
  363. end
  364. end
  365. #--------------------------------------------------------------------------
  366. # ○ 选择项和输入数值的情况下
  367. #--------------------------------------------------------------------------
  368. def draw_opt_text
  369. # 选择项的情况下
  370. if $game_temp.choice_max > 0
  371. @item_max = $game_temp.choice_max
  372. self.active = true
  373. self.index = 0
  374. end
  375. # 输入数值的情况下
  376. if $game_temp.num_input_variable_id > 0
  377. digits_max = $game_temp.num_input_digits_max
  378. number = $game_variables[$game_temp.num_input_variable_id]
  379. @input_number_window = Window_InputNumber.new(digits_max)
  380. @input_number_window.number = number
  381. @input_number_window.x = self.x + 8
  382. @input_number_window.y = self.y + $game_temp.num_input_start * 32
  383. end
  384. end
  385. def pic_back
  386. @pic_skin.dispose if @pic_skin != nil
  387. @pic_skin = Sprite.new
  388. @pic_skin.opacity = 0 unless @no_term_stop
  389. @pic_skin.bitmap = Bitmap.new(self.width + 35, self.height + 35)
  390. @pic_skin.x = self.x + 2
  391. @pic_skin.y = self.y + 2
  392. @pic_skin.z = self.z
  393. @pic_skin.bitmap.blt(0, 0, RPG::Cache.icon("message_左上"), RPG::Cache.icon("message_左上").rect)
  394. @pic_skin.bitmap.blt(self.width - 35, 0, RPG::Cache.icon("message_右上"), RPG::Cache.icon("message_右上").rect)
  395. @pic_skin.bitmap.blt(0, self.height - 35, RPG::Cache.icon("message_左下"), RPG::Cache.icon("message_左下").rect)
  396. @pic_skin.bitmap.blt(self.width - 35, self.height - 35, RPG::Cache.icon("message_右下"), RPG::Cache.icon("message_右下").rect)
  397. @pic_skin.bitmap.stretch_blt(Rect.new(0,35,35,self.height-70), RPG::Cache.icon("message_左"), RPG::Cache.icon("message_左").rect)
  398. @pic_skin.bitmap.stretch_blt(Rect.new(self.width - 35,35,35,self.height-70), RPG::Cache.icon("message_右"), RPG::Cache.icon("message_右").rect)
  399. @pic_skin.bitmap.stretch_blt(Rect.new(35,0,self.width-70,35), RPG::Cache.icon("message_上"), RPG::Cache.icon("message_上").rect)
  400. @pic_skin.bitmap.stretch_blt(Rect.new(35,self.height-35,self.width-70,35), RPG::Cache.icon("message_下"), RPG::Cache.icon("message_下").rect)
  401. @pic_skin.bitmap.stretch_blt(Rect.new(35,35,self.width-70,self.height-70), RPG::Cache.icon("message_中"), RPG::Cache.icon("message_中").rect)
  402. end

  403. #--------------------------------------------------------------------------
  404. # ○ 设置呼出对话框
  405. #--------------------------------------------------------------------------
  406. def set_fukidasi(x, y, width, height)
  407. begin
  408. # 不显示暂停标志
  409. self.pause = false
  410. # 取得对话框位置
  411. pos = get_fuki_pos(width, height)
  412. x = pos[0]
  413. y = pos[1]
  414. skin = FUKI::FUKI_SKIN_NAME != "" ? FUKI::FUKI_SKIN_NAME : $game_system.windowskin_name
  415. # 生成呼出对话框
  416. self.windowskin = RPG::Cache.windowskin(skin)
  417. self.x = x
  418. self.y = y
  419. self.height = height
  420. self.width = width
  421. #self.opacity = 0
  422. unless @no_term_stop
  423. self.contents.dispose
  424. self.contents = Bitmap.new(width - 32, height - 32)
  425. self.back_opacity = FUKI::FUKI_OPACITY
  426. self.opacity = FUKI::FUKI_OPACITY
  427. self.contents.clear
  428. self.contents.font.color = Color.new(0, 0, 0, 255)
  429. self.contents.font.size = FUKI::MES_FONT_SIZE
  430. end
  431. # 描绘尾部图标
  432. if $game_system.message_frame == 0
  433. # 取得位置
  434. tale_pos = get_tale_pos
  435. @tale = Sprite.new
  436. @tale.opacity = 200
  437. # 是否显示尾部图标 <- bbschat
  438. if FUKI::TAIL_SHOW == true
  439. case @message_position
  440. when 0 # 上
  441. @tale.bitmap = RPG::Cache.icon("message_箭头")
  442. @tale.x = tale_pos[0]
  443. @tale.y = tale_pos[1]
  444. @tale.z = self.z + 1
  445. when 1 # 中
  446. @tale.dispose
  447. @tale = nil
  448. when 2 # 下
  449. @tale.bitmap = RPG::Cache.icon("message_箭头2")
  450. @tale.x = tale_pos[0]
  451. @tale.y = tale_pos[1]
  452. @tale.z = self.z + 1
  453. end
  454. end
  455. end
  456. if @message_position == 1
  457. del_fukidasi
  458. reset_window(width, height)
  459. end
  460. #rescue
  461. # del_fukidasi
  462. # reset_window(width, height)
  463. end
  464. end
  465. #--------------------------------------------------------------------------
  466. # ○ 新功能:根据输入文章计算呼出对话框的位置
  467. #--------------------------------------------------------------------------
  468. def get_character_KKME
  469. if @kkme_name == "" or @kkme_name == nil
  470. return nil
  471. else
  472. @kkme_name.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  473. $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  474. end
  475. $mes_name = @kkme_name
  476. for ev in $game_map.events.values
  477. if ev.name == @kkme_name
  478. return ev
  479. end
  480. end
  481. for actor in $game_party.actors
  482. if actor.name == @kkme_name
  483. return $game_player
  484. end
  485. end
  486. return nil
  487. end
  488. end

  489. #--------------------------------------------------------------------------
  490. # ○ 计算呼出对话框的位置
  491. #--------------------------------------------------------------------------
  492. def get_fuki_pos(width, height)
  493. # 取得角色
  494. if $mes_id != nil
  495. @character = get_character($mes_id)
  496. else
  497. @character = get_character_KKME
  498. end
  499. if @character == nil
  500. # 角色不存在的情况下使用默认信息框
  501. del_fukidasi
  502. reset_window(width, height)
  503. return
  504. end
  505. # 处理坐标
  506. x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - (width / 2)
  507. # 为尽量显示在画面内而移动横坐标
  508. if x + width > 640
  509. x = 640 - width
  510. elsif x < 0
  511. x = 0
  512. end
  513. # 决定窗口位置
  514. case $game_system.message_position
  515. when 0 # 上
  516. y = (@character.real_y - $game_map.display_y + 64) * 32 / 128 - height - FUKI::CHARACTOR_HEIGHT + FUKI::POP_SHIFT_TOP
  517. when 1 # 中
  518. y = (480 - height) / 2
  519. x = (640 - width) / 2
  520. when 2 # 下
  521. y = (@character.real_y - $game_map.display_y + 64) * 32 / 128 + 32 + FUKI::POP_SHIFT_UNDER
  522. end
  523. # 纪录文章显示位置
  524. @message_position = $game_system.message_position
  525. # 如果选择自动修正,则如果文章会显示到画面外则自动改变窗口的尺寸(高度)
  526. if FUKI::POS_FIX
  527. case @message_position
  528. when 0 # 上
  529. if y <= 0
  530. @message_position = 2
  531. y = (@character.real_y - $game_map.display_y + 64) * 32 / 128 + 32 + FUKI::POP_SHIFT_UNDER
  532. end
  533. when 2 # 下
  534. if y + height >= 480
  535. @message_position = 0
  536. y = (@character.real_y - $game_map.display_y + 64) * 32 / 128 - height - FUKI::CHARACTOR_HEIGHT + FUKI::POP_SHIFT_TOP
  537. end
  538. end
  539. end
  540. return [x,y]
  541. end
  542. #--------------------------------------------------------------------------
  543. # ○ 计算尾部图标的位置
  544. #--------------------------------------------------------------------------
  545. def get_tale_pos
  546. case @message_position
  547. when 0 # 上
  548. # 处理坐标
  549. x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - 16
  550. # 画面边缘的话则移动位置
  551. if FUKI::CORNER_SHIFT
  552. if x == 0
  553. x = FUKI::SHIFT_PIXEL
  554. elsif x == 640 - 32
  555. x = 640 - 32 - FUKI::SHIFT_PIXEL
  556. end
  557. end
  558. y = self.y + self.height - 16
  559. when 1 # 中
  560. x = nil
  561. y = nil
  562. when 2 # 下
  563. # 处理坐标
  564. x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - 16
  565. # 画面边缘的话则移动位置
  566. if FUKI::CORNER_SHIFT
  567. if x == 0
  568. x = FUKI::SHIFT_PIXEL
  569. elsif @tale.x == 640 - 32
  570. x = 640 - 32 - FUKI::SHIFT_PIXEL
  571. end
  572. end
  573. y = self.y - 16
  574. end
  575. if @message_position == 1
  576. x = 5
  577. y = 5
  578. end
  579. return [x+8, y+10]
  580. end
  581. #--------------------------------------------------------------------------
  582. # ○ 计算名字窗口的位置
  583. #--------------------------------------------------------------------------
  584. def get_name_pos
  585. case @face_pic_txt
  586. when 0 # 文字
  587. x = self.x + FUKI::NAME_SHIFT_X
  588. y = self.y - FUKI::NAME_FONT_SIZE - 16 + FUKI::NAME_SHIFT_Y
  589. when 1 # 图片
  590. if self.x >= @pic_width + 5
  591. # 默认头像显示在对话框左边
  592. x = self.x-@pic_width-5
  593. else
  594. # 对话框左边放不下时头像显示在右边
  595. x = self.x + self.width
  596. end
  597. y = self.y+self.height/2 - (@pic_height + 5)/2
  598. end
  599. return [x,y]
  600. end
  601. #--------------------------------------------------------------------------
  602. # ○ 设置角色名字窗口
  603. #--------------------------------------------------------------------------
  604. def set_namewindow
  605. # $mes_name为空时不显示角色名字窗口
  606. if $mes_name == nil or $mes_name == ""
  607. return
  608. else
  609. # 设定变量
  610. mes_name = $mes_name
  611. skin = FUKI::NAME_SKIN_NAME != "" ? FUKI::NAME_SKIN_NAME : $game_system.windowskin_name
  612. #判断名称是否有对应的图片"Graphics/heads/" +
  613. if $game_temp.namebmp[mes_name] == nil then
  614. sFile = "Graphics/heads/" + mes_name + ".png"
  615. else
  616. sFile = "Graphics/heads/" + $game_temp.namebmp[mes_name] + ".png"
  617. end
  618. #if FileTest.exist?(sFile) == true then
  619. begin
  620. @face_pic_txt = 1 #名字窗口使用头像<- bbschat
  621. # 生成头像
  622. bmp = Bitmap.new(sFile)
  623. @pic_width = bmp.width
  624. @pic_height = bmp.height
  625. self.width += @pic_width
  626. if self.x >= @pic_width + 5
  627. # 默认头像显示在对话框左边
  628. name_x = self.x-@pic_width-5
  629. else
  630. # 对话框左边放不下时头像显示在右边
  631. name_x = self.x + self.width
  632. end
  633. name_y = self.y+self.height/2 - (@pic_height + 5)/2
  634. # 生成角色头像窗口
  635. #@name_win = Window_Base.new(name_x, name_y, @pic_width + 5, @pic_height + 5)
  636. #@name_win.windowskin = RPG::Cache.windowskin(skin)
  637. #@name_win.opacity =0
  638. #@name_win.z = self.z + 1
  639. @name_contents.dispose if @name_contents != nil
  640. @name_contents = Sprite.new
  641. @name_contents.x = self.x + self.width - bmp.width
  642. @name_contents.y = name_y - 7
  643. @name_contents.bitmap = bmp
  644. @name_contents.z = self.z + 3
  645. @name_contents.opacity = 0
  646. #self.width += 50
  647. #@name_contents.z = @name_win.z + 2 #这个用了似乎效果不好<- bbschat
  648. rescue
  649. end
  650. end
  651. end
  652. #--------------------------------------------------------------------------
  653. # ○ 释放呼出对话框和角色名字窗口
  654. #--------------------------------------------------------------------------
  655. def del_fukidasi
  656. if @tale != nil
  657. @tale.dispose
  658. @tale = nil
  659. end
  660. if @name_win != nil
  661. @name_win.dispose
  662. @name_win = nil
  663. @name_contents.dispose
  664. @name_contents = nil
  665. end
  666. self.opacity = 0
  667. self.x = 90
  668. self.width = 460
  669. self.height = 120
  670. self.contents.dispose
  671. self.contents = Bitmap.new(width - 32, height - 32)
  672. self.pause = true
  673. end
  674. #--------------------------------------------------------------------------
  675. # ○ 取得角色
  676. # parameter : 参数
  677. #--------------------------------------------------------------------------
  678. # def get_character(parameter)
  679. # 参数分歧
  680. # case parameter
  681. # when -1 # 玩家
  682. # return $game_player
  683. # when 0 # 该事件
  684. # events = $game_map.events
  685. # return events == nil ? nil : events[$active_event_id]
  686. # else # 特定事件
  687. # events = $game_map.events
  688. # return events == nil ? nil : events[parameter]
  689. # end
  690. # end
  691. #-------------------------------------------------------------------
  692. # ○ 取得角色
  693. # parameter : 参数
  694. #-------------------------------------------------------------------
  695. def get_character(parameter)
  696. # 参数分歧
  697. case parameter
  698. when -1 # 玩家
  699. return $game_player
  700. when 0 # 该事件
  701. events = $game_map.events
  702. return events == nil ? nil : events[$active_event_id]
  703. else # 特定事件
  704. if parameter >0
  705. events = $game_map.events
  706. return events == nil ? nil : events[parameter]
  707. else
  708. $game_party.return_char(-parameter-2)
  709. end
  710. end
  711. end
  712. #--------------------------------------------------------------------------
  713. # ● 设定窗口位置和不透明度
  714. #--------------------------------------------------------------------------
  715. def reset_window(width = nil, height = nil)
  716. a = get_fuki_pos(self.width, self.height)
  717. self.x = a[0]
  718. self.y = a[1]
  719. end
  720. #--------------------------------------------------------------------------
  721. # ● 刷新画面
  722. #--------------------------------------------------------------------------
  723. def update
  724. super
  725. #if @no_term_stop
  726. #terminate_messageX
  727. #end
  728. # 呼出模式下跟随事件移动
  729. if @tale != nil
  730. pos = get_fuki_pos(self.width, self.height)
  731. self.x = pos[0]
  732. self.y = pos[1]
  733. tale_pos = get_tale_pos
  734. @tale.x = tale_pos[0]
  735. @tale.y = tale_pos[1]
  736. @pic_skin.x = self.x + 2
  737. @pic_skin.y = self.y + 2
  738. if @name_contents != nil and !@name_contents.disposed?
  739. @name_contents.x = self.x + self.width - @name_contents.bitmap.width - 22
  740. @name_contents.y = self.y + self.height - @name_contents.bitmap.height - 6
  741. end
  742. if @name_win != nil
  743. name_pos = get_name_pos
  744. @name_win.x = name_pos[0]
  745. @name_win.y = name_pos[1]
  746. case @face_pic_txt
  747. when 0 # 文字
  748. @name_contents.x = @name_win.x + 12
  749. @name_contents.y = @name_win.y + 8
  750. when 1 # 图片
  751. @name_contents.x = @name_win.x + 2
  752. @name_contents.y = @name_win.y + 2
  753. end
  754. end
  755. end
  756. # 渐变的情况下
  757. if @fade_in
  758. #if @no_term_stop
  759. #@fade_in = false
  760. #return
  761. #else
  762. self.contents_opacity += 24
  763. @pic_skin.opacity += 20
  764. if @name_win != nil
  765. @name_win.opacity += 24
  766. end
  767. if @tale != nil
  768. @name_contents.opacity += 24 if @name_contents != nil and !@name_contents.disposed?
  769. @tale.opacity += 20
  770. end
  771. if @input_number_window != nil
  772. @input_number_window.contents_opacity += 24
  773. end
  774. if self.contents_opacity == 255
  775. @fade_in = false
  776. end
  777. return
  778. #end
  779. end
  780. # 显示信息中的情况下
  781. if @contents_drawing
  782. refresh_drawtext
  783. return
  784. end
  785. # 输入数值的情况下
  786. if @input_number_window != nil
  787. @input_number_window.update
  788. # 确定
  789. if Input.trigger?(Input::C)
  790. $game_system.se_play($data_system.decision_se)
  791. $game_variables[$game_temp.num_input_variable_id] =
  792. @input_number_window.number
  793. $game_map.need_refresh = true
  794. # 释放输入数值窗口
  795. @input_number_window.dispose
  796. @input_number_window = nil
  797. terminate_message
  798. end
  799. return
  800. end
  801. # 显示信息结束的情况下
  802. if @contents_showing_end
  803. # 不是显示选择项且不是呼出对话模式则显示暂停标志
  804. if $game_temp.choice_max == 0 and @tale == nil
  805. self.pause = true
  806. else
  807. self.pause = false
  808. end
  809. # 取消
  810. if Input.trigger?(Input::B)
  811. if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  812. $game_system.se_play($data_system.cancel_se)
  813. $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  814. terminate_message
  815. end
  816. end
  817. # 确定
  818. if Input.trigger?(Input::C)
  819. if $game_temp.choice_max > 0
  820. $game_system.se_play($data_system.decision_se)
  821. $game_temp.choice_proc.call(self.index)
  822. end
  823. terminate_message
  824. # 释放呼出窗口
  825. del_fukidasi
  826. end
  827. return
  828. end
  829. # 在渐变以外的状态下有等待显示的信息与选择项的场合
  830. if @fade_out == false and $game_temp.message_text != nil
  831. @contents_showing = true
  832. $game_temp.message_window_showing = true
  833. reset_window
  834. refresh_create
  835. if @no_term_stop
  836. self.visible = true
  837. else
  838. if @name_win != nil
  839. @name_win.opacity = 0
  840. end
  841. if @tale != nil
  842. @tale.opacity = 0
  843. end
  844. Graphics.frame_reset
  845. self.visible = true
  846. self.contents_opacity = 0
  847. if @input_number_window != nil
  848. @input_number_window.contents_opacity = 0
  849. end
  850. @fade_in = true
  851. end
  852. return
  853. end
  854. # 没有可以显示的信息、但是窗口为可见的情况下
  855. unless @no_term_stop
  856. if self.visible
  857. @fade_out = true
  858. self.opacity -= 48
  859. @name_contents.opacity -= 48 if @name_contents != nil and !@name_contents.disposed?
  860. @pic_skin.opacity -= 48 if @pic_skin != nil and !@pic_skin.disposed?
  861. if @name_win != nil
  862. @name_win.opacity -= 48
  863. end
  864. if @tale != nil
  865. @tale.opacity -= 48 if @tale != nil and [email protected]?
  866. end
  867. if (@name_contents == nil) or @name_contents.disposed? or (@name_contents.opacity == 0)
  868. self.visible = false
  869. @name_contents.dispose if @name_contents != nil
  870. @pic_skin.dispose
  871. @fade_out = false
  872. $game_temp.message_window_showing = false
  873. del_fukidasi
  874. end
  875. return
  876. end
  877. else
  878. $game_temp.message_window_showing = false
  879. end
  880. end
  881. #--------------------------------------------------------------------------
  882. # ● 释放
  883. #--------------------------------------------------------------------------
  884. def dispose
  885. terminate_message
  886. $game_temp.message_window_showing = false
  887. if @input_number_window != nil
  888. @input_number_window.dispose
  889. end
  890. super
  891. end
  892. #--------------------------------------------------------------------------
  893. # ● 信息结束处理
  894. #--------------------------------------------------------------------------
  895. def terminate_message
  896. self.active = false
  897. self.pause = false
  898. self.index = -1
  899. self.contents.clear
  900. # 清除显示中标志
  901. @contents_showing = false
  902. @contents_showing_end = false
  903. unless @kkme_name == "" or @kkme_name == nil
  904. $mes_name = ""
  905. @kkme_name = ""
  906. end
  907. # 呼叫信息调用
  908. if $game_temp.message_proc != nil
  909. $game_temp.message_proc.call
  910. end
  911. # 清除文章、选择项、输入数值的相关变量
  912. $game_temp.message_text = nil
  913. $game_temp.message_proc = nil
  914. $game_temp.choice_start = 99
  915. $game_temp.choice_max = 0
  916. $game_temp.choice_cancel_type = 0
  917. $game_temp.choice_proc = nil
  918. $game_temp.num_input_start = 99
  919. $game_temp.num_input_variable_id = 0
  920. $game_temp.num_input_digits_max = 0
  921. # 释放金钱窗口
  922. if @gold_window != nil
  923. @gold_window.dispose
  924. @gold_window = nil
  925. end
  926. @no_term_stop = false
  927. @save_x = 0
  928. @save_y = 0
  929. end
  930. #--------------------------------------------------------------------------
  931. # ● ★信息结束处理★
  932. #--------------------------------------------------------------------------
  933. def terminate_messageX
  934. self.active = false
  935. self.pause = false
  936. self.index = -1
  937. # 清除显示中标志
  938. @contents_showing = false
  939. @contents_showing_end = false
  940. # 呼叫信息调用
  941. if $game_temp.message_proc != nil
  942. $game_temp.message_proc.call
  943. end
  944. # 清除文章、选择项、输入数值的相关变量
  945. $game_temp.message_text = nil
  946. $game_temp.message_proc = nil
  947. @no_term_stop = true
  948. end
  949. def clear
  950. self.contents.clear
  951. @save_x = 0
  952. @save_y = 0
  953. end
  954. #--------------------------------------------------------------------------
  955. # ● 刷新光标矩形
  956. #--------------------------------------------------------------------------
  957. def update_cursor_rect
  958. if @index >= 0
  959. n = $game_temp.choice_start + @index
  960. self.cursor_rect.set(8, n * 32, @cursor_width, 32)
  961. else
  962. self.cursor_rect.empty
  963. end
  964. end
  965. #--------------------------------------------------------------------------
  966. # ● 取得普通文字色
  967. #--------------------------------------------------------------------------
  968. def normal_color
  969. nil_color = Color.new(0,0,0,255)
  970. if FUKI::FUKI_COLOR != nil_color
  971. color = FUKI::FUKI_COLOR
  972. else
  973. color = super
  974. end
  975. return color
  976. end
  977. end
复制代码
替换成这个。然后在Window_Base的——
  1.     when 0
  2.       return Color.new(255, 255, 255, 255)
复制代码
修改255的数值。分别是红、绿、蓝、透明度。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-10-17
帖子
38
7
 楼主| 发表于 2009-10-25 12:05:20 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
329
在线时间
890 小时
注册时间
2009-10-12
帖子
1829
8
发表于 2009-10-25 13:13:25 | 只看该作者
改成
when 0
      return Color.new(-255,-255,-255,255)

这样……你使用\c[0],就会变成黑颜色(我也遇到过这样的问题,拜托lz学一点脚本……)

或者,在 获取普通文字颜色 那里改,当然,这一改……所以字都变成黑色了……

ps,如果想变成其他颜色,简单的办法,在事件里面……更改画面色调,看看即可。
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-29 10:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表