Project1

标题: 请问如何显示图片 [打印本页]

作者: j296196585    时间: 2016-12-30 15:04
标题: 请问如何显示图片
RUBY 代码复制
  1. =begin
  2.  --------------------------------------------------------------------------
  3.  详尽任务显示界面 v2.1
  4.  --------------------------------------------------------------------------
  5.  By 叶子
  6.  
  7.  日期与更新
  8.  3-29-2006 -v1.0
  9.  4-3-2006  -v2.0
  10.  -可以改变文字颜色,显示变量,显示图标,显示图片
  11.  -大幅简化了编写任务内容的过程,加入自动换行功能
  12.  -精简了窗口,使其还可以用作图鉴系统、日记系统等等
  13.  4-6-2006  -v2.1
  14.  -增加了获得全部任务与删除全部任务命令
  15.  -改正通假字,修改了示例任务3
  16.  --------------------------------------------------------------------------
  17.  顾名思义,就是显示任务资料的界面
  18.  任务资料要预先在这里设定好
  19.  下载范例工程,能帮助你更快更好地掌握使用方法
  20.  --------------------------------------------------------------------------
  21.  使用方法:
  22.  
  23.  1、召唤任务显示界面:$scene = Scene_Task.new
  24.  
  25.  可以在事件中的“脚本”指令加入这段东西,又或者修改 Scene_Menu 来增加一个显示
  26.  任务的选项。如果是修改 Scene_Menu 增加选项的话,在脚本倒数第30行左右,
  27.  把 $scene = Scene_Map.new 修改成 $scene = Scene_Menu.new(任务界面index)
  28.  
  29.  2、设置任务资料
  30.  
  31.   2.1、相关内容解析
  32.  
  33.   所有内容文字必须用双引号括住
  34.  
  35.   名称:任务的名字(显示在左边窗口中),大小为208×32,如果全部为文字的话,
  36.         够放九个全角字符
  37.        
  38.   简介:任务的介绍(显示在右边窗口中),宽368,高不限
  39.  
  40.         文字可以自动换行
  41.  
  42.    2.1.1、控制码解析
  43.    
  44.    名称和内容均可用控制码,注意两条反斜线都要打!
  45.    
  46.    \\v[n] 显示n号变量
  47.    \\c[n] 改变字体颜色。
  48.           n=1~7 时同“显示文章”的\c[n],n=8 时为半透明色,n=9 时为系统色(青色)
  49.    \\n[i] 显示i号角色名字
  50.    \\i[文件名] 显示图标
  51.    \\p[文件名] 显示图片
  52.    
  53.    2.1.2、高级:内嵌表达式
  54.        
  55.    请参考帮助-脚本入门-字符串-内嵌表达式相关内容。
  56.    它可以用来在任务的名称和简介那里显示变量。
  57.    常用的表达式(注意不要漏了井号和大括号):
  58.    #{$game_variables[n]}       ——插入n号变量的值
  59.    #{$game_party.item_number(n)}  ——插入持有n号物品数量
  60.                                       同理还有weapon_number,armor_number
  61.    还可以预先定义一个变量,再插入(例子见示例任务3-灵魂线)
  62.    
  63.   2.2、注意事项
  64.  
  65.    2.2.1、括号、逗号和双引号 [ ] , " 必须使用半角符号(英文输入),
  66.           引号内的内容则没有关系
  67.           
  68.    2.2.2、单引号 ' 和双引号 " 的区别:
  69.           为了不出错误,全部用双引号吧!当然如果你对Ruby很熟悉,那就没所谓了
  70.  
  71.   2.3、开始设置吧!
  72.   从107行开始设置任务资料,可以参考示例任务来设置,请仔细阅读附加讲解
  73.  
  74.  3、接受任务
  75.  
  76.  事件里的“脚本”指令输入:get_task(任务ID)
  77.  例如 get_task(1) 就是接受1号任务
  78.  
  79.   3.1、获得全部任务
  80.  
  81.   事件里的“脚本”指令输入:get_all_task
  82.   这个功能基本上是用来在编写好所有任务资料后测试排版的
  83.  
  84.  
  85.  4、完成/删除任务
  86.  
  87.  事件里的“脚本”指令输入:finish_task(任务ID)
  88.  例如 finish_task(1) 就是完成1号任务
  89.  
  90.  注意:本脚本不负责完成任务后的奖励之类的东西,请自行在事件中判断,
  91.        这里的完成任务指的是从任务列表中删去此任务
  92.  
  93.   4.1、删除全部任务
  94.  
  95.   事件里的“脚本”指令输入:finish_all_task
  96.   作为获得全部任务的对应功能存在,似乎不会怎么用到
  97. =end
  98.  
  99. class Scene_Task
  100.   # 这里设置任务内容翻页音效
  101.   CHANGE_PAGE_SE = "Audio/SE/046-Book01"
  102. end
  103.  
  104. class Game_Party
  105.   #--------------------------------------------------------------------------
  106.   # ● 设置任务资料
  107.   #--------------------------------------------------------------------------
  108.   def get_tasks_info
  109.     @tasks_info = []
  110.  
  111.     #-讲解-
  112.     # 三个示例任务由浅入深,其实只要看懂第一个就可以使用了。
  113.     # 任务的写法多种多样,不限于这三个任务的方法
  114.     #----
  115.     #-----------------------------
  116.     # 示例任务1:沙漠中的五叶花
  117.     #-----------------------------
  118.     名称 = "\\c[6]鬼屋冒险\\i[500]"
  119.     #-讲解-
  120.     # 注意!脚本编辑器的变色功能并不是非常完善,所以换行后字变黑了,但仍然是字符
  121.     # 串的一部分,所以不要忘记在内容最后打一个双引号
  122.     # 按回车是强制换行
  123.     #----
  124.     简介 = "\\c[6]鬼屋冒险
  125. \\c[9]任务等级:\\i[500]
  126.  
  127. \\c[9]任务目标:
  128. 找到这两个胆小鬼,并出去。
  129.  
  130. \\c[0]找到:\\v[34]/2人
  131.  
  132.  
  133. \\c[9]备注:
  134. 以后没事可以来这里玩玩……"
  135.     #-讲解-
  136.     # 每个任务最后一定要加上:
  137.     # @tasks_info[任务ID] = Game_Task.new(名称, 简介)
  138.     # 接受任务和完成任务都是用这个任务ID来索引
  139.     #----
  140.     @tasks_info[1] = Game_Task.new(名称, 简介)
  141.  
  142.     #-----------------------------
  143.     # 示例任务2:克萝莉亚的药瓶
  144.     #-----------------------------
  145.     名称 = "\\c[6]逃出研究所\\i[500]"
  146.     #-讲解-
  147.     # 这里使用了字符串相加,例如 s = "a" + "b" ,s 就是 "ab"
  148.     # 还用了内嵌表达式,$game_party.item_number(38) 就是38号物品的数量
  149.     #----
  150.     简介 = "\\c[6]逃出研究所
  151. \\c[9]任务等级:\\i[500]
  152.  
  153. \\c[9]任务目标:
  154. 安全逃离研究所,小心RL-2000……
  155.  
  156.  
  157.  
  158.  
  159. \\c[9]备注:
  160. 也许有什么人需要帮助……"
  161.     @tasks_info[2] = Game_Task.new(名称, 简介)
  162. #-----------------------------   
  163.     名称 = "\\c[4]猫耳少女\\i[10]"
  164.     简介 = "\\c[4]猫耳少女
  165. \\c[9]任务等级:\\i[10]
  166.  
  167. \\c[9]任务目标:
  168. 帮助猫耳少女逃离,开门的因该是卡片一类的电子钥匙……\\c[0]
  169.  
  170. \\i[040-Item09]:#{$game_party.item_number(27)}/1
  171.  
  172. \\c[9]备注:
  173. 或许在某个员工休息的地方能找到……"
  174.     @tasks_info[3] = Game_Task.new(名称, 简介)
  175.  
  176. #-----------------------------   
  177.     名称 = "\\c[0]路人的委托\\i[50]"
  178.     简介 = "\\c[0]路人的委托
  179. \\c[9]任务等级:\\i[50]
  180.  
  181. \\c[9]任务目标:
  182. 帮助路人找回被偷的皮包。
  183. \\i[皮包]:#{$game_party.item_number(28)}/1
  184.  
  185. \\c[9]备注:
  186. 也许在旧仓库里能找到……"
  187.  
  188.     @tasks_info[4] = Game_Task.new(名称, 简介)
  189. #-----------------------------   
  190.     名称 = "\\c[5]捕杀灰熊\\i[500]\\i[10]"
  191.     简介 = "\\c[5]捕杀灰熊
  192. \\c[9]任务等级:\\i[500]\\i[10]
  193.  
  194. \\c[9]任务目标:
  195. 从动物身上收集以下东西:
  196. \\i[虎牙1]:#{$game_party.item_number(201)}/5狼牙
  197. \\i[虎牙1]:#{$game_party.item_number(202)}/3虎牙
  198. \\i[熊皮1]:#{$game_party.item_number(203)}/1熊皮
  199.  
  200. \\c[9]备注:
  201. 灰熊经常在水域出没……"
  202.  
  203.     @tasks_info[5] = Game_Task.new(名称, 简介)
  204. #-----------------------------   
  205.     名称 = "\\c[0]矿石商的交易Ⅰ\\i[50]"
  206.     简介 = "\\c[0]矿石商的交易Ⅰ
  207. \\c[9]任务等级:\\i[50]
  208.  
  209. \\c[9]任务目标:
  210. 从采矿场挖到以下东西:
  211. \\i[青铜矿]:#{$game_party.item_number(205)}/20青铜矿
  212. \\i[钢铁矿]:#{$game_party.item_number(207)}/10钢铁矿
  213. \\i[银矿]:#{$game_party.item_number(209)}/5白银矿
  214. \\i[黄金矿]:#{$game_party.item_number(211)}/1黄金矿
  215.  
  216. \\c[9]备注:
  217. 每种矿石的获得几率都不一样……"
  218.  
  219.     @tasks_info[6] = Game_Task.new(名称, 简介)
  220. #-----------------------------   
  221.     名称 = "\\c[0]矿石商的交易Ⅱ\\i[50]"
  222.     简介 = "\\c[0]矿石商的交易Ⅱ
  223. \\c[9]任务等级:\\i[50]
  224.  
  225. \\c[9]任务目标:
  226. 从采矿场挖到以下东西:
  227. \\i[黄晶石矿]:#{$game_party.item_number(221)}/20黄晶石
  228. \\i[紫金石矿]:#{$game_party.item_number(224)}/10紫金石
  229. \\i[翡翠矿]:#{$game_party.item_number(227)}/5翡翠石
  230. \\i[天青石矿]:#{$game_party.item_number(230)}/1天青石
  231.  
  232. \\c[9]备注:
  233. 每种矿石的获得几率都不一样……"
  234.  
  235.     @tasks_info[7] = Game_Task.new(名称, 简介)
  236. #-----------------------------   
  237.     名称 = "\\c[0]矿石商的交易Ⅲ\\i[50]"
  238.     简介 = "\\c[0]矿石商的交易Ⅲ
  239. \\c[9]任务等级:\\i[50]
  240.  
  241. \\c[9]任务目标:
  242. 从采矿场挖到以下东西:
  243. \\i[银矿]:#{$game_party.item_number(209)}/10银矿
  244. \\i[黄金矿]:#{$game_party.item_number(211)}/5黄金矿
  245. \\i[翡翠矿]:#{$game_party.item_number(227)}/10翡翠石
  246. \\i[天青石矿]:#{$game_party.item_number(230)}/5天青石
  247.  
  248. \\c[9]备注:
  249. 每种矿石的获得几率都不一样……"
  250.  
  251.     @tasks_info[8] = Game_Task.new(名称, 简介)
  252. #-----------------------------   
  253.     名称 = "\\c[6]矿山寻宝\\i[500]\\i[50]"
  254.     简介 = "\\c[6]矿山寻宝
  255. \\c[9]任务等级:\\i[500]\\i[50]
  256.  
  257. \\c[9]任务目标:
  258. 从矿山找到宝物:
  259.  
  260. \\i[049-Skill06]:\\v[34]/1宝物
  261.  
  262.  
  263. \\c[9]备注:
  264. 这里的机关真不少……"
  265.     @tasks_info[9] = Game_Task.new(名称, 简介)
  266. #-----------------------------
  267. if $game_variables[277] == 1
  268.     名称 = "\\c[0]收集狼牙\\i[100]"
  269.     简介 = "\\c[0]收集狼牙
  270. \\c[9]任务等级:\\i[100]
  271.  
  272. \\c[9]任务目标:
  273. 收集到贝德拉尔的旅行商人所要求的东西:
  274.  
  275. \\i[虎牙1]:#{$game_party.item_number(201)}/#{$game_variables[278]}狼牙
  276.  
  277. \\c[9]备注:
  278. 草原的狼身上有这东西"
  279. end
  280. if $game_variables[277] == 2
  281.     名称 = "\\c[0]收集虎牙\\i[100]"
  282.     简介 = "\\c[0]收集虎牙
  283. \\c[9]任务等级:\\i[100]
  284.  
  285. \\c[9]任务目标:
  286. 收集到贝德拉尔的旅行商人所要求的东西:
  287.  
  288. \\i[虎牙1]:#{$game_party.item_number(202)}/#{$game_variables[278]}虎牙
  289.  
  290. \\c[9]备注:
  291. 草原的虎身上有这东西"
  292. end
  293. if $game_variables[277] == 3
  294.     名称 = "\\c[0]收集熊皮\\i[100]"
  295.     简介 = "\\c[0]收集熊皮
  296. \\c[9]任务等级:\\i[100]
  297.  
  298. \\c[9]任务目标:
  299. 收集到贝德拉尔的旅行商人所要求的东西:
  300.  
  301. \\i[熊皮1]:#{$game_party.item_number(203)}/#{$game_variables[278]}熊皮
  302.  
  303. \\c[9]备注:
  304. 水域的熊身上有这东西"
  305. end
  306. if $game_variables[277] == 4
  307.     名称 = "\\c[0]收集熊掌\\i[100]"
  308.     简介 = "\\c[0]收集熊掌
  309. \\c[9]任务等级:\\i[100]
  310.  
  311. \\c[9]任务目标:
  312. 收集到贝德拉尔的旅行商人所要求的东西:
  313.  
  314. \\i[熊掌1]:#{$game_party.item_number(204)}/#{$game_variables[278]}熊掌
  315.  
  316. \\c[9]备注:
  317. 水域的熊身上有这东西"
  318. end
  319. if $game_variables[277] == 5
  320.     名称 = "\\c[0]收集幻之草\\i[100]"
  321.     简介 = "\\c[0]收集幻之草
  322. \\c[9]任务等级:\\i[100]
  323.  
  324. \\c[9]任务目标:
  325. 收集到贝德拉尔的旅行商人所要求的东西:
  326.  
  327. \\i[三叶草1]:#{$game_party.item_number(300)}/#{$game_variables[278]}幻之草
  328.  
  329. \\c[9]备注:
  330. 迷失的森林里的幻之蘑菇身上有这东西"
  331. end
  332. if $game_variables[277] == 6
  333.     名称 = "\\c[0]收集魔气瓶\\i[100]"
  334.     简介 = "\\c[0]收集魔气瓶
  335. \\c[9]任务等级:\\i[100]
  336.  
  337. \\c[9]任务目标:
  338. 收集到贝德拉尔的旅行商人所要求的东西:
  339.  
  340. \\i[液体氧1]:#{$game_party.item_number(301)}/#{$game_variables[278]}魔气瓶
  341.  
  342. \\c[9]备注:
  343. 迷失的森林里的幻之人偶身上有这东西"
  344. end
  345. if $game_variables[277] == 7
  346.     名称 = "\\c[0]收集山鹿角\\i[100]"
  347.     简介 = "\\c[0]收集山鹿角
  348. \\c[9]任务等级:\\i[100]
  349.  
  350. \\c[9]任务目标:
  351. 收集到贝德拉尔的旅行商人所要求的东西:
  352.  
  353. \\i[鹿角]:#{$game_party.item_number(302)}/#{$game_variables[278]}山鹿角
  354.  
  355. \\c[9]备注:
  356. 风之峡谷里的山鹿身上有这东西"
  357. end
  358. if $game_variables[277] == 8
  359.     名称 = "\\c[0]收集狼毛\\i[100]"
  360.     简介 = "\\c[0]收集狼毛
  361. \\c[9]任务等级:\\i[100]
  362.  
  363. \\c[9]任务目标:
  364. 收集到贝德拉尔的旅行商人所要求的东西:
  365.  
  366. \\i[黑色的皮]:#{$game_party.item_number(303)}/#{$game_variables[278]}狼毛
  367.  
  368. \\c[9]备注:
  369. 遗迹里的变异狼人身上有这东西"
  370. end
  371. if $game_variables[277] == 9
  372.     名称 = "\\c[0]收集xx\\i[100]"
  373.     简介 = "\\c[0]收集xx
  374. \\c[9]任务等级:\\i[100]
  375.  
  376. \\c[9]任务目标:
  377. 收集到贝德拉尔的旅行商人所要求的东西:
  378.  
  379. \\i[黑色的皮]:#{$game_party.item_number(304)}/#{$game_variables[278]}xx
  380.  
  381. \\c[9]备注:
  382. xx里的xx身上有这东西"
  383. end
  384.     @tasks_info[10] = Game_Task.new(名称, 简介)
  385. #-----------------------------   
  386.     名称 = "\\c[6]雷之四神器\\i[500]\\i[500]"
  387.     简介 = "\\c[6]雷之四神器
  388. \\c[9]任务等级:\\i[500]\\i[500]
  389.  
  390. \\c[9]任务目标:
  391. 收集所有的四神器:
  392. \\i[001-Weapon01]:#{$game_party.weapon_number(95)}/1\\c[4]暴食\\c[0]
  393. \\i[闪电之盾]:#{$game_party.item_number(408)}/1\\c[4]闪电之盾\\c[0]
  394. \\i[闪电之盔]:\\c[4]闪电之盔\\c[0]已被帕布迦得到
  395. \\i[闪电之戒]:\\c[4]闪电之戒\\c[0]由吉罗和安娜去寻找
  396.  
  397. \\c[9]备注:
  398. 闪电之盾听说藏在西方的某个遗迹里,而闪电之戒似乎在南方的某处。
  399.                        \\c[0]C键翻页↓
  400. \\c[9]得到闪电之盾后在南方的布特莱恩再集合。"
  401.  
  402.     @tasks_info[11] = Game_Task.new(名称, 简介)
  403. #-----------------------------   
  404.     名称 = "\\c[4]黑翼嗜魂者\\i[100]\\i[100]"
  405.     简介 = "\\c[4]黑翼嗜魂者
  406. \\c[9]任务等级:\\i[100]\\i[100]
  407.  
  408.  
  409. \\c[9]任务目标:
  410. 消灭黑翼嗜魂者!
  411.  
  412.  
  413.  
  414. \\c[9]备注:
  415. 进入暗之门,将黑翼嗜魂者消灭后向幽魂报告。"
  416.     @tasks_info[12] = Game_Task.new(名称, 简介)
  417. #-----------------------------
  418.     名称 = "\\c[6]时空之塔作战①\\i[500]\\i[100]"
  419.     简介 = "\\c[6]时空之塔作战①
  420. \\c[9]任务等级:\\i[500]\\i[100]
  421.  
  422.  
  423. \\c[9]任务目标:
  424. 时空之塔作战计划的第一阶段。
  425. 攻击埃卡特拉王国的第一个边境防线,快速突破它并消灭头目。
  426.  
  427.  
  428.  
  429. \\c[9]备注:
  430. 小心为上,实力不行就回去锻炼一下。"
  431.     @tasks_info[13] = Game_Task.new(名称, 简介)
  432. #-----------------------------   
  433.     名称 = "\\c[4]菲尔迪与娜沙\\i[500]"
  434.     简介 = "\\c[4]菲尔迪与娜沙
  435. \\c[9]任务等级:\\i[500]
  436.  
  437.  
  438. \\c[9]任务目标:
  439. 寻找他们,一定就在村子的某处。\\c[0]
  440.  
  441.  
  442. \\c[9]备注:
  443. 奇怪的感觉,不知道是为什么……"
  444.     @tasks_info[14] = Game_Task.new(名称, 简介)
  445. #-----------------------------
  446.     名称 = "\\c[6]时空之塔作战②\\i[500]\\i[100]"
  447.     简介 = "\\c[6]时空之塔作战②
  448. \\c[9]任务等级:\\i[500]\\i[100]
  449.  
  450. \\c[9]任务目标:
  451. 时空之塔作战计划的第二阶段。
  452. 攻击埃卡特拉王国的王都。消灭一定数量的敌人。
  453. \\c[4]打倒的敌人数量:\\c[0]\\v[34]/40
  454.  
  455. \\c[9]备注:
  456. 没有什么技巧可言,努力吧!"
  457.     @tasks_info[15] = Game_Task.new(名称, 简介)
  458. #-----------------------------
  459.     名称 = "\\c[6]时空之塔作战③\\i[500]\\i[500]"
  460.     简介 = "\\c[6]时空之塔作战③
  461. \\c[9]任务等级:\\i[500]\\i[500]
  462.  
  463. \\c[9]任务目标:
  464. 时空之塔作战计划的第三阶段。
  465. 攻击埃卡特拉王国的西边防线,由于敌人集中,也只好全力一战了。
  466.  
  467. \\c[9]备注:
  468. 相信自己是最强的!"
  469.     @tasks_info[16] = Game_Task.new(名称, 简介)
  470. #-----------------------------
  471.     名称 = "\\c[6]时空之塔作战④\\c[2]★"
  472.     简介 = "\\c[6]时空之塔作战④\\c[2]
  473. \\c[9]任务等级:\\c[2]★
  474.  
  475. \\c[9]任务目标:
  476. 时空之塔作战计划的最终阶段。
  477. 总攻时空之塔!集合大家的力量,以打败罪恶之源帕布枷和拯救安娜为最终目的。
  478.  
  479. \\c[9]备注:
  480. 最后的时刻来临了,努力吧。"
  481.     @tasks_info[17] = Game_Task.new(名称, 简介)
  482. #-----------------------------
  483.     名称 = "\\c[6]事件调查\\i[500]"
  484.     简介 = "\\c[6]事件调查
  485. \\c[9]任务等级:\\i[500]
  486.  
  487. \\c[9]任务目标:
  488. 调查发生在自己身上的事件,找到出里面答案。
  489.  
  490. \\c[9]备注:
  491. 有的时候,事情比想到的复杂的多。"
  492.     @tasks_info[18] = Game_Task.new(名称, 简介)
  493. #-----------------------------
  494.     名称 = "\\c[4]生日礼物\\i[100]"
  495.     简介 = "\\c[4]生日礼物
  496. \\c[9]任务等级:\\i[100]
  497.  
  498. \\c[9]任务目标:
  499. 帮助铁强打听小美所喜欢的礼物,最好能帮其获得。
  500.  
  501. \\i[049-Skill06]:#{$game_party.item_number(233)}/1
  502.  
  503. \\c[9]备注:
  504. 她家就在我家边上,直接去问本人吧。"
  505.     @tasks_info[19] = Game_Task.new(名称, 简介)
  506. #-----------------------------
  507.     名称 = "\\c[6]总部逃离\\c[2]★"
  508.     简介 = "\\c[6]总部逃离\\c[2]
  509. \\c[9]任务等级:\\c[2]★
  510.  
  511. \\c[9]任务目标:
  512. 救出同学们,确保他们的安全后离开总部。
  513.  
  514. \\c[9]备注:
  515. 为什么有“★”?自己想想吧……"
  516.     @tasks_info[20] = Game_Task.new(名称, 简介)
  517. #-----------------------------   
  518.     名称 = "\\c[0]传说的果实Ⅰ\\i[100]\\i[10]"
  519.     简介 = "\\c[0]传说的果实Ⅰ
  520. \\c[9]任务等级:\\i[100]\\i[10]
  521.  
  522. \\c[9]任务目标:
  523. 得到以下物品:
  524.  
  525. \\i[042-Item11]:#{$game_party.item_number(90)}/1 生命果实
  526. \\i[042-Item11]:#{$game_party.item_number(91)}/1 技能果实
  527. \\i[042-Item11]:#{$game_party.item_number(92)}/1 力量果实
  528. \\i[042-Item11]:#{$game_party.item_number(93)}/1 技巧果实
  529. \\i[042-Item11]:#{$game_party.item_number(94)}/1 敏捷果实
  530. \\i[042-Item11]:#{$game_party.item_number(95)}/1 智力果实
  531. \\i[042-Item11]:#{$game_party.item_number(96)}/1 魔法果实
  532.                       \\c[0]C键翻页↓\\c[9]
  533. \\i[042-Item11]:#{$game_party.item_number(97)}/1 觉醒果实
  534. \\i[银矿成品]:#{$game_party.item_number(210)}/1 白银矿成品
  535. \\i[翡翠矿成品]:#{$game_party.item_number(228)}/1 翡翠石成品
  536.  
  537. \\c[9]备注:
  538. 收集完毕后交给阿克……"
  539.  
  540. @tasks_info[21] = Game_Task.new(名称, 简介)
  541. #-----------------------------   
  542.     名称 = "\\c[0]传说的果实Ⅱ\\i[500]\\i[50]"
  543.     简介 = "\\c[0]传说的果实Ⅱ
  544. \\c[9]任务等级:\\i[500]\\i[50]
  545.  
  546. \\c[9]任务目标:
  547. 得到以下物品:
  548.  
  549. \\i[042-Item11]:#{$game_party.item_number(98)}/1 恶魔果实
  550. \\i[042-Item11]:#{$game_party.item_number(90)}/1 生命果实
  551. \\i[042-Item11]:#{$game_party.item_number(91)}/1 技能果实
  552. \\i[042-Item11]:#{$game_party.item_number(92)}/1 力量果实
  553. \\i[042-Item11]:#{$game_party.item_number(93)}/1 技巧果实
  554. \\i[042-Item11]:#{$game_party.item_number(94)}/1 敏捷果实
  555. \\i[042-Item11]:#{$game_party.item_number(95)}/1 智力果实
  556.                       \\c[0]C键翻页↓\\c[9]
  557. \\i[042-Item11]:#{$game_party.item_number(96)}/1 魔法果实
  558. \\i[042-Item11]:#{$game_party.item_number(97)}/1 觉醒果实
  559. \\i[黄金矿成品]:#{$game_party.item_number(212)}/1 黄金矿成品
  560. \\i[天青石成品]:#{$game_party.item_number(231)}/1 天青石成品
  561.  
  562. \\c[9]备注:
  563. 收集完毕后交给阿克……"
  564.  
  565. @tasks_info[22] = Game_Task.new(名称, 简介)
  566. #-----------------------------   
  567.     名称 = "\\c[6]贝茵塔之迷\\i[500]\\i[100]"
  568.     简介 = "\\c[6]贝茵塔之迷
  569. \\c[9]任务等级:\\i[500]\\i[100]
  570.  
  571. \\c[9]任务目标:
  572.  
  573. 以贝茵塔的最顶层为目标,帮助住民揭开塔的秘密。
  574.  
  575. \\c[9]备注:
  576. 又是一次麻烦的旅途了。"
  577.  
  578. @tasks_info[23] = Game_Task.new(名称, 简介)
  579. #-----------------------------   
  580.     名称 = "\\c[4]沙漠暴君\\i[500]"
  581.     简介 = "\\c[4]沙漠暴君
  582. \\c[9]任务等级:\\i[500]
  583.  
  584. \\c[9]任务目标:
  585.  
  586. 击败游荡在第一界层的
  587. \\c[2]沙漠暴君-蝎子王\\c[9]#{$game_variables[407]}/3次。
  588.  
  589. \\c[9]备注:
  590. 蝎子王会随机出现在第一界层。"
  591.  
  592. @tasks_info[24] = Game_Task.new(名称, 简介)
  593. #-----------------------------   
  594.     名称 = "\\c[4]丛林守护者\\i[500]"
  595.     简介 = "\\c[4]丛林守护者
  596. \\c[9]任务等级:\\i[500]
  597.  
  598. \\c[9]任务目标:
  599.  
  600. 击败出现在第二界层的
  601. \\c[2]丛林守护者-巨大树妖\\c[9]#{$game_variables[410]}/4次。
  602.  
  603. \\c[9]备注:
  604. 巨大树妖会随机出现在第二界层。"
  605.  
  606. @tasks_info[25] = Game_Task.new(名称, 简介)
  607. #-----------------------------   
  608.     名称 = "\\c[4]影子猎人\\i[500]"
  609.     简介 = "\\c[4]影子猎人
  610. \\c[9]任务等级:\\i[500]
  611.  
  612. \\c[9]任务目标:
  613.  
  614. 击败出现在第三界层的
  615. \\c[2]影子猎人-神秘忍者\\c[9]#{$game_variables[411]}/4次。
  616.  
  617. \\c[9]备注:
  618. 神秘忍者会随机出现在第三界层。"
  619.  
  620. @tasks_info[26] = Game_Task.new(名称, 简介)
  621. #-----------------------------   
  622.     名称 = "\\c[6]水晶之翼\\i[500]"
  623.     简介 = "\\c[6]水晶之翼
  624. \\c[9]任务等级:\\i[500]
  625.  
  626. \\c[9]任务目标:
  627. 得到以下物品:
  628. \\i[五花石1]:#{$game_party.item_number(304)}/20 风之元素
  629. \\i[五花石1]:#{$game_party.item_number(305)}/20 土之元素
  630. \\i[五花石1]:#{$game_party.item_number(306)}/20 水之元素
  631. \\i[五花石1]:#{$game_party.item_number(307)}/30 光之元素
  632. \\i[五花石1]:#{$game_party.item_number(308)}/30 暗之元素
  633.  
  634. \\c[9]备注:
  635. 全部得到后就可以开始最终阶段的任务了……"
  636. @tasks_info[27] = Game_Task.new(名称, 简介)
  637. #-----------------------------   
  638.     名称 = "\\c[6]最终阶段\\c[2]★"
  639.     简介 = "\\c[6]最终阶段\\c[2]
  640. \\c[9]任务等级:\\c[2]★
  641.  
  642. \\c[9]任务目标:
  643.  
  644. \\c[2]破坏人工太阳!
  645.  
  646. \\c[9]备注:
  647. 来华丽的结束这次任务吧!"
  648.  
  649. @tasks_info[28] = Game_Task.new(名称, 简介)
  650. #-----------------------------
  651. if $game_switches[274] == true
  652.     名称 = "\\c[5]真相·结果\\c[2]\\i[500]\\i[500]"
  653.     简介 = "\\c[5]真相·结果
  654. \\c[9]任务等级:\\i[500]\\i[500]
  655.  
  656. \\c[9]任务目标:
  657.  
  658. \\c[2]当面向巴斯议员求证。
  659.  
  660. \\c[9]备注:
  661. 记得把结果报告给菲尔迪。"
  662. else
  663.     名称 = "\\c[5]真相\\c[2]\\i[500]"
  664.     简介 = "\\c[5]真相
  665. \\c[9]任务等级:\\i[500]
  666.  
  667. \\c[9]任务目标:
  668.  
  669. \\c[2]探询事件背后所隐藏的真相,先从贝德拉尔监狱开始调查吧。
  670.  
  671. \\c[9]备注:
  672. 记得把结果报告给菲尔迪。"
  673. end
  674.  
  675. @tasks_info[29] = Game_Task.new(名称, 简介)
  676. #-----------------------------   
  677.     名称 = "\\c[5]搜寻纳加多\\c[2]\\i[500]\\i[500]"
  678.     简介 = "\\c[5]搜寻纳加多
  679. \\c[9]任务等级:\\c[2]\\i[500]\\i[500]
  680.  
  681. \\c[9]任务目标:
  682.  
  683. \\c[2]在陵墓内找到贝诺的父亲纳加多
  684.  
  685. \\c[9]备注:
  686. 这些机关……让人欲罢不能呢。"
  687.  
  688. @tasks_info[30] = Game_Task.new(名称, 简介)
  689. #-----------------------------
  690.     名称 = "\\c[5]寻宝与冒险\\c[2]\\i[500]\\i[500]"
  691.     简介 = "\\c[5]寻宝与冒险
  692. \\c[9]任务等级:\\c[2]\\i[500]\\i[500]
  693.  
  694. \\c[9]任务目标:
  695.  
  696. \\c[2]驱逐怪物,在未知洞穴内找到宝物。
  697.  
  698. \\c[9]备注:
  699. 我喜欢冒险!你们呢?"
  700.  
  701. @tasks_info[38] = Game_Task.new(名称, 简介)
  702.  
  703. #-----------------------------   
  704.     名称 = "\\c[0]恶心的泥人\\i[10]"
  705.     简介 = "\\c[0]恶心的泥人
  706. \\c[9]任务等级:\\i[10]
  707.  
  708. \\c[9]任务目标:
  709. 打倒40只泥人。
  710. 完成进度:#{$game_variables[701]}/40只
  711.  
  712. \\c[9]备注:
  713. 软软粘粘的玩意……"
  714.  
  715. @tasks_info[31] = Game_Task.new(名称, 简介)
  716. #-----------------------------   
  717.     名称 = "\\c[0]消灭巨石人\\i[50]"
  718.     简介 = "\\c[0]消灭巨石人
  719. \\c[9]任务等级:\\i[50]
  720.  
  721. \\c[9]任务目标:
  722. 打倒40只巨石人。
  723. 完成进度:#{$game_variables[702]}/40只
  724.  
  725. \\c[9]备注:
  726. 太坚硬了……这家伙难道刀枪不入?试试战斗道具和枪械类武器吧。"
  727.  
  728. @tasks_info[32] = Game_Task.new(名称, 简介)
  729. #-----------------------------   
  730.     名称 = "\\c[0]变异人研究\\i[100]"
  731.     简介 = "\\c[0]变异人研究
  732. \\c[9]任务等级:\\i[100]
  733.  
  734. \\c[9]任务目标:
  735. 打倒40只变异人。
  736. 完成进度:#{$game_variables[703]}/40只
  737.  
  738. \\c[9]备注:
  739. 没有什么地方能大量消灭这些?
  740. 等等,你们还是一个个来好点……"
  741.  
  742. @tasks_info[33] = Game_Task.new(名称, 简介)
  743.  
  744.     名称 = "\\c[5]七罪武装\\c[2]\\i[500]\\i[500]\\i[500]"
  745.     简介 = "\\c[5]七罪武装
  746. \\c[9]任务等级:\\c[2]\\i[500]\\i[500]\\i[500]
  747.  
  748. \\c[9]任务目标:
  749. \\c[2]      傲慢0/1
  750.       妒忌0/1
  751.       暴怒0/1
  752.       懒惰0/1
  753.       贪婪0/1
  754.       暴食0/1
  755.       色欲0/1
  756. \\c[9]备注:
  757. 这些武器……都在哪啊?!"
  758. @tasks_info[34] = Game_Task.new(名称, 简介)
  759.  
  760. #-----------------------------   
  761.     名称 = "\\c[6]德尔拉村的大火①\\i[500]"
  762.     简介 = "\\c[6]德尔拉村的大火①
  763. \\c[9]任务等级:\\i[500]
  764.  
  765. \\c[9]任务目标:
  766. 首先要寻找到 \\c[2]多拉明·萨辛斯
  767.  
  768. \\c[9]备注:
  769. 先去德尔拉村的遗址看看?那家伙到底去哪了……"
  770.  
  771. @tasks_info[35] = Game_Task.new(名称, 简介)
  772.  
  773. #-----------------------------   
  774.     名称 = "\\c[6]叛乱的人造人①\\i[500]\\i[500]"
  775.     简介 = "\\c[6]叛乱的人造人①
  776. \\c[9]任务等级:\\i[500]\\i[500]
  777.  
  778. \\c[9]任务目标:
  779. 在平原阻击正在集结的人造人部队。
  780.  
  781. \\c[9]备注:
  782. 向南方平原前进!"
  783.  
  784. @tasks_info[36] = Game_Task.new(名称, 简介)
  785.  
  786. #-----------------------------   
  787.     名称 = "\\c[6]变异生物来袭①\\i[500]\\i[100]"
  788.     简介 = "\\c[6]变异生物来袭①
  789. \\c[9]任务等级:\\i[500]\\i[100]
  790.  
  791. \\c[9]任务目标:
  792. 参加讨伐队。
  793.  
  794. \\c[9]备注:
  795. 先各处调查准备一番吧。"
  796.  
  797. @tasks_info[37] = Game_Task.new(名称, 简介)
  798.  
  799.  
  800.  
  801.  
  802.  
  803.     #-----------------------------
  804.     # 示例任务3:灵魂线
  805.     #-----------------------------
  806.     #-讲解-
  807.     # 这里用了条件判断,当3号变量大于等于1时,加上“完成”字样,同时变色
  808.     if $game_variables[3] >= 1
  809.       名称 = "\\c[4]灵魂线(完成)"
  810.       item = "\\c[8]灵魂线:#{$game_variables[3]}/1 (完成)"
  811.     else
  812.       名称 = "\\c[2]灵魂线"
  813.       item = "\\c[0]灵魂线:#{$game_variables[3]}/1"
  814.     end
  815.     #-讲解-
  816.     # 预先定义变量,用内嵌表达式插入
  817.     # 最后用了显示图标
  818.     #----
  819.     简介 = "#{名称}
  820.  
  821. \\c[9]任务目标:
  822. 找到埋起来的灵魂线,交给克萝莉亚
  823.  
  824. #{item}
  825.  
  826. \\c[0]克萝莉亚:
  827. 灵魂线就埋在其中一棵树下,给我好好找\\i[046-Skill03]"
  828.     @tasks_info[99] = Game_Task.new(名称, 简介)
  829.  
  830.   end
  831. end
  832.  
  833. #==============================================================================
  834. # ■ Interpreter
  835. #------------------------------------------------------------------------------
  836. #  执行事件命令的解释器。本类在 Game_System 类
  837. # 与 Game_Event 类的内部使用。
  838. #==============================================================================
  839.  
  840. class Interpreter
  841.   #--------------------------------------------------------------------------
  842.   # ● 接受任务
  843.   #--------------------------------------------------------------------------
  844.   def get_task(id)
  845.     task = $game_party.tasks_info[id]
  846.     return true if (task.nil? or $game_party.current_tasks.include?(task.id))
  847.     $game_party.current_tasks.unshift(task.id)
  848.     return true
  849.   end
  850.   #--------------------------------------------------------------------------
  851.   # ● 获得全部任务
  852.   #--------------------------------------------------------------------------
  853.   def get_all_task
  854.     # 清空当前任务
  855.     $game_party.current_tasks.clear
  856.     for task in $game_party.tasks_info
  857.       next if task.nil?
  858.       $game_party.current_tasks.unshift(task.id)
  859.     end
  860.     return true
  861.   end
  862.   #--------------------------------------------------------------------------
  863.   # ● 完成/放弃任务
  864.   #--------------------------------------------------------------------------
  865.   def finish_task(id)
  866.     task = $game_party.tasks_info[id]
  867.     return true if task.nil?
  868.     $game_party.current_tasks.delete(task.id)
  869.     return true
  870.   end
  871.   #--------------------------------------------------------------------------
  872.   # ● 删除全部任务
  873.   #--------------------------------------------------------------------------
  874.   def finish_all_task
  875.     $game_party.current_tasks.clear
  876.     return true
  877.   end
  878. end
  879.  
  880. #==============================================================================
  881. # ■ Game_Party
  882. #------------------------------------------------------------------------------
  883. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  884. # 请参考 $game_party。
  885. #==============================================================================
  886.  
  887. class Game_Party
  888.   #--------------------------------------------------------------------------
  889.   # ● 定义实例变量
  890.   #--------------------------------------------------------------------------
  891.   attr_writer     :latest_task                  # 上次查看的任务
  892.   #--------------------------------------------------------------------------
  893.   # ● 取得任务资料
  894.   #--------------------------------------------------------------------------
  895.   def tasks_info
  896.     if @tasks_info.nil?
  897.       get_tasks_info
  898.     end
  899.     return @tasks_info
  900.   end
  901.   #--------------------------------------------------------------------------
  902.   # ● 取得当前任务
  903.   #--------------------------------------------------------------------------
  904.   def current_tasks
  905.     if @current_tasks.nil?
  906.       @current_tasks = []
  907.     end
  908.     return @current_tasks
  909.   end
  910.   #--------------------------------------------------------------------------
  911.   # ● 上次查看的任务
  912.   #--------------------------------------------------------------------------
  913.   def latest_task
  914.     if !current_tasks.include?(@latest_task)
  915.       @latest_task = current_tasks[0]
  916.     end
  917.     return @latest_task
  918.   end
  919. end
  920.  
  921. #==============================================================================
  922. # ■ Game_Task
  923. #------------------------------------------------------------------------------
  924. #  处理任务的类。包含任务的信息。
  925. #==============================================================================
  926.  
  927. class Game_Task
  928.   attr_accessor   :name                   # 名称
  929.   attr_accessor   :briefing               # 简介
  930.   def initialize(name, briefing)
  931.     @name = name
  932.     @briefing = briefing
  933.   end
  934.   def height
  935.     text = @briefing.clone
  936.     x = 0
  937.     y = 64
  938.     min_y = 0
  939.     # 限制文字处理
  940.     begin
  941.       last_text = text.clone
  942.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  943.     end until text == last_text
  944.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  945.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  946.     end
  947.     # 为了方便、将 "\\\\" 变换为 "\000"
  948.     text.gsub!(/\\\\/) { "\000" }
  949.     # "\C" 变为 "\001"
  950.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  951.     # "\I" 变为 "\002"
  952.     text.gsub!(/\\[Ii]/) { "\002" }
  953.     # "\P" 变为 "\003"
  954.     text.gsub!(/\\[Pp]/) { "\003" }
  955.     # c 获取 1 个字 (如果不能取得文字就循环)
  956.     while ((c = text.slice!(/./m)) != nil)
  957.       # \\ 的情况下
  958.       if c == "\000"
  959.         # 还原为本来的文字
  960.         c = "\\"
  961.       end
  962.       # \C[n] 的情况下
  963.       if c == "\001"
  964.         # 更改文字色
  965.         text.sub!(/\[([0-9]+)\]/, "")
  966.         # 下面的文字
  967.         next
  968.       end
  969.       # 图标的情况下
  970.       if c == "\002"
  971.         icon_name = ''
  972.         while ((cha = text.slice!(/./m)) != ']')
  973.           next if cha == '['
  974.           icon_name += cha
  975.         end
  976.         icon = RPG::Cache.icon(icon_name)
  977.         if x + icon.width > 368
  978.           x = 0
  979.           y += [32, min_y].max
  980.           min_y = 0
  981.         end
  982.         x += 28
  983.         next
  984.       end
  985.       # 图片的情况下
  986.       if c == "\003"
  987.         pic_name = ''
  988.         while ((cha = text.slice!(/./m)) != ']')
  989.           next if cha == '['
  990.           pic_name += cha
  991.         end
  992.         pic = RPG::Cache.picture(pic_name)
  993.         if x + pic.width > 368
  994.           x = 0
  995.           y += [32, min_y].max
  996.           min_y = 0
  997.         end
  998.         x += pic.width
  999.         min_y = [pic.height, 32].max
  1000.         next
  1001.       end
  1002.       # 另起一行文字的情况下
  1003.       if c == "\n"
  1004.         y += [32, min_y].max
  1005.         min_y = 0
  1006.         x = 0
  1007.         # 下面的文字
  1008.         next
  1009.       end
  1010.       # 自动换行处理
  1011.       if x + 22 > 368
  1012.         y += [32, min_y].max
  1013.         min_y = 0
  1014.         x = 0
  1015.       end
  1016.       # x 为要描绘文字的加法运算
  1017.       x += 22
  1018.     end
  1019.     return (y + [32, min_y].max)
  1020.   end
  1021.   def id
  1022.     return $game_party.tasks_info.index(self)
  1023.   end
  1024. end
  1025.  
  1026. #==============================================================================
  1027. # ■ Window_Task_Name
  1028. #------------------------------------------------------------------------------
  1029. #  任务名称显示窗口。
  1030. #==============================================================================
  1031.  
  1032. class Window_Task_Name < Window_Selectable
  1033.   #--------------------------------------------------------------------------
  1034.   # ● 初始化对像
  1035.   #--------------------------------------------------------------------------
  1036.   def initialize(tasks)
  1037.     super(0, 0, 240, 480)
  1038.  
  1039.     @menu_com = Sprite.new
  1040.     @menu_com.bitmap = RPG::Cache.picture("离开游戏")
  1041.  
  1042.     @tasks = []
  1043.     for id in tasks
  1044.       @tasks.push($game_party.tasks_info[id])
  1045.     end
  1046.     @item_max = tasks.size
  1047.     self.contents = Bitmap.new(
  1048.     self.width - 32, @item_max == 0 ? 32 : @item_max * 32)
  1049.  
  1050.  
  1051.  
  1052.     refresh
  1053.     self.index = 0
  1054.   end
  1055.   #--------------------------------------------------------------------------
  1056.   # ● 刷新
  1057.   #--------------------------------------------------------------------------
  1058.   def refresh
  1059.     self.contents.clear
  1060.     if @tasks != []
  1061.       for task in @tasks
  1062.         draw_item(task)
  1063.       end
  1064.     else
  1065.       draw_blank
  1066.     end
  1067.   end
  1068.   #--------------------------------------------------------------------------
  1069.   # ● 描绘项目
  1070.   #--------------------------------------------------------------------------
  1071.   def draw_item(task)
  1072.     text = task.name.clone
  1073.     x = 0
  1074.     y = @tasks.index(task) * 32
  1075.     # 限制文字处理
  1076.     begin
  1077.       last_text = text.clone
  1078.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  1079.     end until text == last_text
  1080.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  1081.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  1082.     end
  1083.     # 为了方便、将 "\\\\" 变换为 "\000"
  1084.     text.gsub!(/\\\\/) { "\000" }
  1085.     # "\\C" 变为 "\001"
  1086.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  1087.     # "\I" 变为 "\002"
  1088.     text.gsub!(/\\[Ii]/) { "\002" }
  1089.     # "\P" 变为 "\003"
  1090.     text.gsub!(/\\[Pp]/) { "\003" }
  1091.     # c 获取 1 个字 (如果不能取得文字就循环)
  1092.     while ((c = text.slice!(/./m)) != nil)
  1093.       # \\ 的情况下
  1094.       if c == "\000"
  1095.         # 还原为本来的文字
  1096.         c = "\\"
  1097.       end
  1098.       # \C[n] 的情况下
  1099.       if c == "\001"
  1100.         # 更改文字色
  1101.         text.sub!(/\[([0-9]+)\]/, "")
  1102.         color = $1.to_i
  1103.         if color >= 0 and color <= 7
  1104.           self.contents.font.color = text_color(color)
  1105.         elsif color == 8
  1106.           self.contents.font.color = disabled_color
  1107.         elsif color == 9
  1108.           self.contents.font.color = system_color
  1109.         end
  1110.         # 下面的文字
  1111.         next
  1112.       end
  1113.       # 图标的情况下
  1114.       if c == "\002"
  1115.         icon_name = ''
  1116.         while ((cha = text.slice!(/./m)) != ']')
  1117.           next if cha == '['
  1118.           icon_name += cha
  1119.         end
  1120.         icon = RPG::Cache.icon(icon_name)
  1121.         if x + icon.width > self.contents.width
  1122.           x = 0
  1123.           y += [32, min_y].max
  1124.           min_y = 0
  1125.         end
  1126.         self.contents.blt(x + 4, y + 4, icon, Rect.new(0, 0, 24, 24))
  1127.         x += 28
  1128.         next
  1129.       end
  1130.       # 图片的情况下
  1131.       if c == "\003"
  1132.         pic_name = ''
  1133.         while ((cha = text.slice!(/./m)) != ']')
  1134.           next if cha == '['
  1135.           pic_name += cha
  1136.         end
  1137.         pic = RPG::Cache.picture(pic_name)
  1138.         if x + pic.width > self.contents.width
  1139.           x = 0
  1140.           y += [32, min_y].max
  1141.           min_y = 0
  1142.         end
  1143.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  1144.         x += pic.width
  1145.         next
  1146.       end
  1147.       # 描绘文字
  1148.       self.contents.draw_text(4 + x, y, 40, 32, c)
  1149.       # x 为要描绘文字的加法运算
  1150.       x += self.contents.text_size(c).width
  1151.     end
  1152.   end
  1153.   #--------------------------------------------------------------------------
  1154.   # ● 描绘空行
  1155.   #--------------------------------------------------------------------------
  1156.   def draw_blank
  1157.     self.contents.font.color = disabled_color
  1158.     rect = Rect.new(4, 0, self.contents.width - 8, 32)
  1159.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  1160.     self.contents.draw_text(rect, '当前没有任何任务')
  1161.   end
  1162.   #--------------------------------------------------------------------------
  1163.   # ● 获取任务
  1164.   #--------------------------------------------------------------------------
  1165.   def task
  1166.     return @tasks[self.index]
  1167.   end
  1168. end
  1169.  
  1170. #==============================================================================
  1171. # ■ Window_Task
  1172. #------------------------------------------------------------------------------
  1173. #  任务内容显示窗口。
  1174. #==============================================================================
  1175.  
  1176. class Window_Task < Window_Base
  1177.   #--------------------------------------------------------------------------
  1178.   # ● 初始化对像
  1179.   #--------------------------------------------------------------------------
  1180.   def initialize(task_id)
  1181.     super(240, 0, 400, 480)
  1182.     refresh(task_id)
  1183.   end
  1184.   #--------------------------------------------------------------------------
  1185.   # ● 刷新内容
  1186.   #--------------------------------------------------------------------------
  1187.   def refresh(task_id)
  1188.     self.oy = 0
  1189.     self.visible = true
  1190.     return if task_id.nil?
  1191.     task = $game_party.tasks_info[task_id]
  1192.     if !task.nil?
  1193.       self.contents = Bitmap.new(self.width - 32, task.height)
  1194.     else
  1195.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  1196.       return
  1197.     end
  1198.     self.contents.font.color = normal_color
  1199.     # 描绘任务内容
  1200.     draw_task_info(task)
  1201.   end
  1202.   #--------------------------------------------------------------------------
  1203.   # ● 描绘任务内容
  1204.   #--------------------------------------------------------------------------
  1205.   def draw_task_info(task)
  1206.     # 记录文字x坐标
  1207.     x = 0
  1208.     # 记录文字y坐标
  1209.     y = 0
  1210.     # 记录换行时y坐标最小加值
  1211.     min_y = 0
  1212.     self.contents.font.color = normal_color
  1213.     # 描绘任务简介
  1214.     text = task.briefing.clone
  1215.     # 限制文字处理
  1216.     begin
  1217.       last_text = text.clone
  1218.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  1219.     end until text == last_text
  1220.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  1221.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  1222.     end
  1223.     # 为了方便、将 "\\\\" 变换为 "\000"
  1224.     text.gsub!(/\\\\/) { "\000" }
  1225.     # "\C" 变为 "\001"
  1226.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  1227.     # "\I" 变为 "\002"
  1228.     text.gsub!(/\\[Ii]/) { "\002" }
  1229.     # "\P" 变为 "\003"
  1230.     text.gsub!(/\\[Pp]/) { "\003" }
  1231.     # c 获取 1 个字 (如果不能取得文字就循环)
  1232.     while ((c = text.slice!(/./m)) != nil)
  1233.       # \\ 的情况下
  1234.       if c == "\000"
  1235.         # 还原为本来的文字
  1236.         c = "\\"
  1237.       end
  1238.       # \C[n] 的情况下
  1239.       if c == "\001"
  1240.         # 更改文字色
  1241.         text.sub!(/\[([0-9]+)\]/, "")
  1242.         color = $1.to_i
  1243.         if color >= 0 and color <= 7
  1244.           self.contents.font.color = text_color(color)
  1245.         elsif color == 8
  1246.           self.contents.font.color = disabled_color
  1247.         elsif color == 9
  1248.           self.contents.font.color = system_color
  1249.         end
  1250.         # 下面的文字
  1251.         next
  1252.       end
  1253.       # 图标的情况下
  1254.       if c == "\002"
  1255.         icon_name = ''
  1256.         while ((cha = text.slice!(/./m)) != ']')
  1257.           next if cha == '['
  1258.           icon_name += cha
  1259.         end
  1260.         icon = RPG::Cache.icon(icon_name)
  1261.         if x + icon.width > self.contents.width
  1262.           x = 0
  1263.           y += [32, min_y].max
  1264.           min_y = 0
  1265.         end
  1266.         self.contents.blt(x + 4, y + 4, icon, Rect.new(0, 0, 24, 24))
  1267.         x += 28
  1268.         next
  1269.       end
  1270.       # 图片的情况下
  1271.       if c == "\003"
  1272.         pic_name = ''
  1273.         while ((cha = text.slice!(/./m)) != ']')
  1274.           next if cha == '['
  1275.           pic_name += cha
  1276.         end
  1277.         pic = RPG::Cache.picture(pic_name)
  1278.         if x + pic.width > self.contents.width
  1279.           x = 0
  1280.           y += [32, min_y].max
  1281.           min_y = 0
  1282.         end
  1283.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  1284.         x += pic.width
  1285.         min_y = [pic.height, 32].max
  1286.         next
  1287.       end
  1288.       # 另起一行文字的情况下
  1289.       if c == "\n"
  1290.         y += [32, min_y].max
  1291.         min_y = 0
  1292.         x = 0
  1293.         # 下面的文字
  1294.         next
  1295.       end
  1296.       # 自动换行处理
  1297.       if x + self.contents.text_size(c).width > self.contents.width
  1298.         y += [32, min_y].max
  1299.         min_y = 0
  1300.         x = 0
  1301.       end
  1302.       # 描绘文字
  1303.       self.contents.draw_text(4 + x, y, 40, 32, c)
  1304.       # x 为要描绘文字的加法运算
  1305.       x += self.contents.text_size(c).width
  1306.     end
  1307.   end
  1308. end
  1309.  
  1310. #==============================================================================
  1311. # ■ Scene_Task
  1312. #------------------------------------------------------------------------------
  1313. #  处理任务画面的类。
  1314. #==============================================================================
  1315.  
  1316. class Scene_Task
  1317.   #--------------------------------------------------------------------------
  1318.   # ● 主处理
  1319.   #--------------------------------------------------------------------------
  1320.   def main
  1321.     # 刷新任务资料
  1322.     $game_party.get_tasks_info
  1323.     # 生成任务名称窗口
  1324.     @task_names_window = Window_Task_Name.new($game_party.current_tasks)
  1325.     @task_names_window.active = true
  1326.     if $game_party.current_tasks != []
  1327.       @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)
  1328.     end
  1329.     # 生成任务内容窗口
  1330.     @task_info_window = Window_Task.new($game_party.latest_task)
  1331.     @task_info_window.active = true
  1332.     # 执行过渡
  1333.     Graphics.transition
  1334.     # 主循环
  1335.     loop do
  1336.       # 刷新游戏画面
  1337.       Graphics.update
  1338.       # 刷新输入信息
  1339.       Input.update
  1340.       # 刷新画面
  1341.       update
  1342.       # 如果画面被切换的话就中断循环
  1343.       if $scene != self
  1344.         break
  1345.       end
  1346.     end
  1347.     # 准备过渡
  1348.     Graphics.freeze
  1349.     # 释放窗口
  1350.     @task_names_window.dispose
  1351.     @task_info_window.dispose
  1352.   end
  1353.   #--------------------------------------------------------------------------
  1354.   # ● 刷新画面
  1355.   #--------------------------------------------------------------------------
  1356.   def update
  1357.     # 刷新窗口
  1358.     @task_names_window.update
  1359.     @task_info_window.update
  1360.     update_task_names_window
  1361.   end
  1362.   #--------------------------------------------------------------------------
  1363.   # ● 刷新任务名称窗口
  1364.   #--------------------------------------------------------------------------
  1365.   def update_task_names_window
  1366.     # 按下 B 键的情况下
  1367.     if Input.trigger?(Input::B)
  1368.       # 演奏取消 SE
  1369.       $game_system.se_play($data_system.cancel_se)
  1370.       # 这里设置返回的场景,返回地图是Scene_Map.new,菜单是Scene_Menu.new(任务界面index)
  1371.       $scene = Scene_Menu.new
  1372.       #$scene = Scene_Map.new
  1373.       return
  1374.     end
  1375.     # 按下 C 键的情况下
  1376.     if Input.trigger?(Input::C)
  1377.       # 无任务可显示的话
  1378.       if @task_names_window.task == nil
  1379.         # 演奏冻结 SE
  1380.         $game_system.se_play($data_system.buzzer_se)
  1381.         return
  1382.       end
  1383.       # 如果光标没有移动的话,翻页
  1384.       if $game_party.latest_task == @task_names_window.task.id
  1385.         if @task_info_window.oy + @task_info_window.height - 32 > @task_info_window.contents.height
  1386.           @task_info_window.oy = 0
  1387.         else
  1388.           @task_info_window.oy += 480-32
  1389.         end
  1390.         if @task_info_window.contents.height > @task_info_window.height - 32
  1391.           # 演奏翻页 SE
  1392.           Audio.se_play(CHANGE_PAGE_SE)
  1393.         end
  1394.       else
  1395.         @task_info_window.refresh(@task_names_window.task.id)
  1396.         $game_party.latest_task = @task_names_window.task.id
  1397.         # 演奏确定 SE
  1398.         $game_system.se_play($data_system.decision_se)
  1399.       end
  1400.     end
  1401.   end
  1402. end
  1403.  
  1404. # 生成帮助窗口

作者: guoxiaomi    时间: 2017-1-1 19:20
试一下
  1. \\p[001-Fighter01.png]
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1