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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: lsmzzz38
打印 上一主题 下一主题

[已经解决] 请问这个任务系统怎么用?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
83 小时
注册时间
2013-1-13
帖子
36
11
发表于 2013-2-11 07:32:40 | 只看该作者
好吧,你就用叶子的吧,顺便教你把任务整合到菜单里。
  1. =begin
  2. --------------------------------------------------------------------------
  3. 详尽任务显示界面 v2.1
  4. --------------------------------------------------------------------------
  5. By 叶子

  6. 日期与更新
  7. 3-29-2006 -v1.0
  8. 4-3-2006  -v2.0
  9. -可以改变文字颜色,显示变量,显示图标,显示图片
  10. -大幅简化了编写任务内容的过程,加入自动换行功能
  11. -精简了窗口,使其还可以用作图鉴系统、日记系统等等
  12. 4-6-2006  -v2.1
  13. -增加了获得全部任务与删除全部任务命令
  14. -改正通假字,修改了示例任务3
  15. --------------------------------------------------------------------------
  16. 改版 by snstar2006

  17. 修改部分:
  18. - 将XP的一些脚本改成VX版的
  19. - 将窗口大小缩放成VX的大小(依照比例)
  20. - 将一些会变成很长的脚本精简
  21.    (如:用$game_pary.item_no(物品编号)
  22.         代替原来的$game_party.item_number($data_items[物品编号]) = ="好长)
  23. - 精简一些代码,将 Window_Task_Name 和Window_Task 重合部分用继承方式精简
  24. - 依照VX的 RGSS2 规范编写 Scene_Task
  25. - 增加使用16进位颜色代码变换字体颜色功能
  26. - 修改Scene_Menu的召唤方式,使脚本新手使用起来更容易

  27. --------------------------------------------------------------------------
  28. 顾名思义,就是显示任务数据的界面
  29. 任务数据要预先在这里设定好
  30. 下载范例工程,能帮助你更快更好地掌握使用方法
  31. --------------------------------------------------------------------------
  32. 使用方法:

  33. 1、召唤任务显示界面:$scene = Scene_Task.new

  34. 可以在事件中的「脚本」指令加入这段东西,
  35. 又或者修改 Scene_Menu 来增加一个显示任务的选项。
  36. 如果是修改 Scene_Menu 增加選項的話,请使用

  37.     $scene = Scene_Task.new(任务在菜单的index)

  38. 例如:$scene = Scene_Task.new(7)

  39. 2、设置任务数据

  40.   2.1、相关内容解析
  41.   
  42.   所有内容文字必须用双引号括住
  43.   
  44.   名称:任务的名字(显示在左边窗口中),大小为172×32,如果全部为文字的话,
  45.         够放九个全角字符
  46.         
  47.   简介:任务的介绍(显示在右边窗口中),宽308,高不限
  48.   
  49.         文字可以自动换行
  50.   
  51.    2.1.1、控制码解析
  52.    
  53.    名称和内容均可用控制码,注意两条反斜杠都要打!
  54.    
  55.    \\v[n] 显示n号变量
  56.    \\c[n] 改变字体颜色。n 为窗口外观图片中所设定的颜色,可为0-31

  57.    \\c[HRRGGBB]设定字体颜色为RRGGBB色, RRGGBB 为16进位颜色代码
  58.    \\n[i] 显示i号角色名字
  59.    \\i[图标编号] 显示图标    # 图标编号为图标在IconSet里的顺序
  60.    \\p[文件名] 显示图片
  61.    
  62.    2.1.2、高级:内嵌表达式
  63.         
  64.    请参考帮助-脚本入门-字符串-内嵌表达式相关内容。
  65.    它可以用来在任务的名称和简介那里显示变量。
  66.    常用的表达式(注意不要漏了井号和大括号):
  67.    #{$game_variables[n]}       ——插入n号变量的值
  68.    #{$game_party.item_no(n)}  —— 插入持有n号物品数量
  69.                                   同理还有 weapon_no,armor_no

  70.    还可以预先定义一个变量,再插入(例子见示例任务3-灵魂线)
  71.    
  72.   2.2、注意事项
  73.   
  74.    2.2.1、括号、逗号和双引号 [ ] , " 必须使用半角符号(英文输入),
  75.           引号内的内容则没有关系
  76.          
  77.    2.2.2、单引号 ' 和双引号 " 的区别:
  78.           为了不出错误,全部用双引号吧!当然如果你对Ruby很熟悉,那就没所谓了
  79.   
  80.   2.3、开始设置吧!
  81.   从107行开始设置任务数据,可以参考示例任务来设置,请仔细阅读附加讲解
  82.   
  83. 3、接受任务

  84. 事件里的「脚本」指令输入:get_task(任务ID)
  85. 例如 get_task(1) 就是接受1号任务

  86.   3.1、获得全部任务
  87.   
  88.   事件里的「脚本」指令输入:get_all_task
  89.   这个功能基本上是用来在编写好所有任务数据后测试排版的
  90.   

  91. 4、完成/删除任务

  92. 事件里的「脚本」指令输入:finish_task(任务ID)
  93. 例如 finish_task(1) 就是完成1号任务

  94. 注意:本脚本不负责完成任务后的奖励之类的东西,请自行在事件中判断,
  95.        这里的完成任务指的是从任务列表中删去此任务

  96.   4.1、删除全部任务
  97.   
  98.   事件里的「脚本」指令输入:finish_all_task
  99.   作为获得全部任务的对应功能存在,似乎不会怎么用到
  100. =end

  101. class Scene_Task
  102.   # 这里设置任务内容翻页音效
  103.   CHANGE_PAGE_SE = "Audio/SE/Book"
  104. end

  105. class Game_Party
  106.   #--------------------------------------------------------------------------
  107.   # ● 设置任务资料
  108.   #--------------------------------------------------------------------------
  109.   def get_tasks_info
  110.     @tasks_info = []
  111.    
  112.    
  113.     名称 = "\\c[6]打开书本阅读"
  114.    
  115.     简介 = "\\c[2]主线任务

  116. \\c[3]任务目标:
  117. 打开书本阅读

  118. \\c[6]提示:
  119. \\c[0]打开书本阅读。"
  120.     @tasks_info[1] = Game_Task.new(名称, 简介)
  121.    
  122.    
  123.     名称 = "\\c[6]打开书本阅读\\i[63]"
  124.    
  125.     简介 = "\\c[2]主线任务【已完成】

  126. \\c[3]任务目标:
  127. 打开书本阅读
  128. \\c[6]提示:
  129. \\c[0]已经完成。

  130. 任务奖励:
  131. \\c[Hff0000]
  132. 奖励点:200金币"
  133.     @tasks_info[1] = Game_Task.new(名称, 简介)
  134. #===========================================================================
  135.    
  136.   
  137.    @tasks_info=[]
  138.    
  139.    名称 = "\\c[5]打败强盗\\i[94]"
  140.    简介 = "\\c[3]支线任务
  141.    \\c[8]任务目标:
  142.    打败村子的强盗
  143.    \\c[0]打败强盗
  144.    任务奖励:
  145.    \\c[5]200银子"
  146.     @tasks_info[2] = Game_Task.new(名称, 简介)
  147.   
  148. #===========================================================================
  149. @tasks_info=[]
  150. 名称 = "\\c[4]勇者的考验\\i[54]"
  151. 简介 = "\\c[3]主线任务
  152. \\c[5]任务目标:
  153.    打败村子里的怪物。
  154. \\c[6]勇者的考验
  155.   任务奖励:
  156.   \\c[5]经验950  400铜钱"
  157.   @tasks_info[3] = Game_Task.new(名称, 简介)
  158.   #=======================================================================
  159.   @takes_info=[]
  160.   
  161.   名称 ="\\c[5]江树狂风扫\\i[53]"
  162.   简介 = "\\c[4]主线任务
  163.   \\c[3]任务目标:
  164.      ①收集5片枫叶
  165.      ②与李坤对话
  166.   \\c[6]江树狂风扫
  167.   任务奖励:
  168.   \\c[5]经验1500 750铜钱"
  169.   @tasks_info[4] = Game_Task.new(名称, 简介)
  170.   #======================================================================
  171.   end
  172. end
  173. #==============================================================================
  174. # ■ Interpreter
  175. #------------------------------------------------------------------------------
  176. #  执行事件命令的解释器。本类在 Game_System 类
  177. # 与 Game_Event 类的内部使用。
  178. #==============================================================================

  179. class Game_Interpreter
  180.   #--------------------------------------------------------------------------
  181.   # ● 接受任务
  182.   #--------------------------------------------------------------------------
  183.   def get_task(id)
  184.     task = $game_party.tasks_info[id]
  185.     return true if (task.nil? or $game_party.current_tasks.include?(task.id))
  186.     $game_party.current_tasks.unshift(task.id)
  187.     return true
  188.   end
  189.   #--------------------------------------------------------------------------
  190.   # ● 获得全部任务
  191.   #--------------------------------------------------------------------------
  192.   def get_all_task
  193.     # 清空当前任务
  194.     $game_party.current_tasks.clear
  195.     for task in $game_party.tasks_info
  196.       next if task.nil?
  197.       $game_party.current_tasks.unshift(task.id)
  198.     end
  199.     return true
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ● 完成/放弃任务
  203.   #--------------------------------------------------------------------------
  204.   def finish_task(id)
  205.     task = $game_party.tasks_info[id]
  206.     return true if task.nil?
  207.     $game_party.current_tasks.delete(task.id)
  208.     return true
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ● 删除全部任务
  212.   #--------------------------------------------------------------------------
  213.   def finish_all_task
  214.     $game_party.current_tasks.clear
  215.     return true
  216.   end
  217. end

  218. #==============================================================================
  219. # ■ Game_Party
  220. #------------------------------------------------------------------------------
  221. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  222. # 请参考 $game_party。
  223. #==============================================================================

  224. class Game_Party
  225.   #--------------------------------------------------------------------------
  226.   # ● 定义实例变量
  227.   #--------------------------------------------------------------------------
  228.   attr_writer     :latest_task                  # 上次查看的任务
  229.   #--------------------------------------------------------------------------
  230.   # ● 取得任务资料
  231.   #--------------------------------------------------------------------------
  232.   def tasks_info
  233.     if @tasks_info.nil?
  234.       get_tasks_info
  235.     end
  236.     return @tasks_info
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● 取得当前任务
  240.   #--------------------------------------------------------------------------
  241.   def current_tasks
  242.     if @current_tasks.nil?
  243.       @current_tasks = []
  244.     end
  245.     return @current_tasks
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 上次查看的任务
  249.   #--------------------------------------------------------------------------
  250.   def latest_task
  251.     if !current_tasks.include?(@latest_task)
  252.       @latest_task = current_tasks[0]
  253.     end
  254.     return @latest_task
  255.   end
  256. end

  257. #==============================================================================
  258. # ■ Game_Task
  259. #------------------------------------------------------------------------------
  260. #  处理任务的类。包含任务的信息。
  261. #==============================================================================

  262. class Game_Task
  263.   attr_accessor   :name                   # 名称
  264.   attr_accessor   :briefing               # 简介
  265.   def initialize(name, briefing)
  266.     @name = name
  267.     @briefing = briefing
  268.   end
  269.   def height
  270.     text = @briefing.clone
  271.     x = 0
  272.     y = 64
  273.     min_y = 0
  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"
  285.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  286.     # "\I" 变为 "\002"
  287.     text.gsub!(/\\[Ii]/) { "\002" }
  288.     # "\P" 变为 "\003"
  289.     text.gsub!(/\\[Pp]/) { "\003" }
  290.     # c 获取 1 个字 (如果不能取得文字就循环)
  291.     while ((c = text.slice!(/./m)) != nil)
  292.       # \\ 的情况下
  293.       if c == "\000"
  294.         # 还原为本来的文字
  295.         c = "\\"
  296.       end
  297.       # \C[n] 的情况下
  298.       if c == "\001"
  299.         # 更改文字色
  300.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  301.         # 下面的文字
  302.         next
  303.       end
  304.       # 图标的情况下
  305.       if c == "\002"
  306.         icon_name = ''
  307.         while ((cha = text.slice!(/./m)) != ']')
  308.           next if cha == '['
  309.           icon_name += cha
  310.         end
  311.         if x + 24 > 368
  312.           x = 0
  313.           y += [24, min_y].max
  314.           min_y = 0
  315.         end
  316.         x += 28
  317.         next
  318.       end
  319.       # 图片的情况下
  320.       if c == "\003"
  321.         pic_name = ''
  322.         while ((cha = text.slice!(/./m)) != ']')
  323.           next if cha == '['
  324.           pic_name += cha
  325.         end
  326.         pic = Cache.picture(pic_name)
  327.         if x + pic.width > 368
  328.           x = 0
  329.           y += [24, min_y].max
  330.           min_y = 0
  331.         end
  332.         x += pic.width
  333.         min_y = [pic.height, 24].max
  334.         next
  335.       end
  336.       # 另起一行文字的情况下
  337.       if c == "\n"
  338.         y += [24, min_y].max
  339.         min_y = 0
  340.         x = 0
  341.         # 下面的文字
  342.         next
  343.       end
  344.       # 自动换行处理
  345.       if x + 22 > 368
  346.         y += [24, min_y].max
  347.         min_y = 0
  348.         x = 0
  349.       end
  350.       # x 为要描绘文字的加法运算
  351.       x += 22
  352.     end
  353.     return (y + [24, min_y].max)
  354.   end
  355.   def id
  356.     return $game_party.tasks_info.index(self)
  357.   end
  358. end

  359. #==============================================================================
  360. # ■ Window_Task_Name
  361. #------------------------------------------------------------------------------
  362. #  任务名称显示窗口。
  363. #==============================================================================

  364. class Window_Task_Name < Window_Selectable
  365.   #--------------------------------------------------------------------------
  366.   # ● 初始化对像
  367.   #--------------------------------------------------------------------------
  368.   def initialize(tasks)
  369.     super(0, 0, 204, 416)
  370.     @tasks = []
  371.     for id in tasks
  372.       @tasks.push($game_party.tasks_info[id])
  373.     end
  374.     @item_max = tasks.size
  375.     self.contents = Bitmap.new(
  376.     self.width - 32, @item_max == 0 ? 32 : @item_max * 32)
  377.     refresh
  378.     self.index = 0
  379.   end
  380.   #--------------------------------------------------------------------------
  381.   # ● 刷新
  382.   #--------------------------------------------------------------------------
  383.   def refresh
  384.     self.contents.clear
  385.     if @tasks != []
  386.       for task in @tasks
  387.         draw_item(task)
  388.       end
  389.     else
  390.       draw_blank
  391.     end
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   # ● 描绘项目
  395.   #--------------------------------------------------------------------------
  396.   def draw_item(task)
  397.     text = task.name.clone
  398.     y = @tasks.index(task) * WLH
  399.     chenge_special_character(text, 0, y)
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 描绘空行
  403.   #--------------------------------------------------------------------------
  404.   def draw_blank
  405.     self.contents.font.color = Color.new(255, 255, 255, 128)
  406.     rect = Rect.new(4, 0, self.contents.width - 8, 32)
  407.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  408.     self.contents.draw_text(rect, '无任何任务')
  409.   end
  410.   #--------------------------------------------------------------------------
  411.   # ● 获取任务
  412.   #--------------------------------------------------------------------------
  413.   def task
  414.     return @tasks[self.index]
  415.   end
  416. end
  417.   
  418. #==============================================================================
  419. # ■ Window_Task
  420. #------------------------------------------------------------------------------
  421. #  任务内容显示窗口。
  422. #==============================================================================

  423. class Window_Task < Window_Base
  424.   #--------------------------------------------------------------------------
  425.   # ● 初始化对像
  426.   #--------------------------------------------------------------------------
  427.   def initialize(task_id)
  428.     super(204, 0, 340, 416)
  429.     refresh(task_id)
  430.   end
  431.   #--------------------------------------------------------------------------
  432.   # ● 刷新内容
  433.   #--------------------------------------------------------------------------
  434.   def refresh(task_id)
  435.     self.oy = 0
  436.     self.visible = true
  437.     return if task_id.nil?
  438.     task = $game_party.tasks_info[task_id]
  439.     if !task.nil?
  440.       self.contents = Bitmap.new(self.width - 32, task.height)
  441.     else
  442.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  443.       return
  444.     end
  445.     self.contents.font.color = normal_color
  446.     # 描绘任务内容
  447.     draw_task_info(task)
  448.   end
  449.   #--------------------------------------------------------------------------
  450.   # ● 描绘任务内容
  451.   #--------------------------------------------------------------------------
  452.   def draw_task_info(task)
  453.     self.contents.font.color = normal_color
  454.     # 描绘任务简介
  455.     chenge_special_character(task.briefing.clone)
  456.   end
  457. end

  458. class Window_Base < Window
  459.   def chenge_special_character(text, x=0, y=0)
  460.     # 记录换行时y坐标最小加值
  461.     min_y = 0
  462.     # 限制文字处理
  463.     begin
  464.       last_text = text.clone
  465.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  466.     end until text == last_text
  467.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  468.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  469.     end
  470.     # 为了方便、将 "\\\\" 变换为 "\000"
  471.     text.gsub!(/\\\\/) { "\000" }
  472.     # "\C" 变为 "\001"
  473.     text.gsub!(/\\[Cc]\[([0-9a-zA-Z]+)\]/)  { "\001[#{$1}]" }
  474.     # "\I" 变为 "\002"
  475.     text.gsub!(/\\[Ii]/) { "\002" }
  476.     # "\P" 变为 "\003"
  477.     text.gsub!(/\\[Pp]/) { "\003" }
  478.     # c 获取 1 个字 (如果不能取得文字就循环)
  479.     while ((c = text.slice!(/./m)) != nil)
  480.       # \\ 的情况下
  481.       if c == "\000"
  482.         # 还原为本来的文字
  483.         c = "\\"
  484.       end
  485.       # \C[n] 的情況下
  486.       if c == "\001"
  487.         # 更改文字色
  488.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  489.         # 如果是设定RGB颜色
  490.         if $1[0,1]=="H"
  491.           # 先拷贝一下文字
  492.           c=$1.dup
  493.           # 分3段分别取出R,G,B颜色
  494.           c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")
  495.           # 设定文字颜色
  496.           self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))
  497.         else
  498.           color = $1.to_i
  499.           if color >= 0 and color <= 31
  500.             self.contents.font.color = text_color(color)
  501.           elsif color == 32
  502.             self.contents.font.color = disabled_color
  503.           elsif color == 33
  504.             self.contents.font.color = system_color
  505.           end
  506.         end
  507.         # 下面的文字
  508.         next
  509.       end
  510.       # 图标的情况下
  511.       if c == "\002"
  512.         icon_name = ''
  513.         while ((cha = text.slice!(/./m)) != ']')
  514.           next if cha == '['
  515.           icon_name += cha
  516.         end
  517.         if x + 24 > self.contents.width
  518.           x = 0
  519.           y += [WLH, min_y].max
  520.           min_y = 0
  521.         end
  522.         draw_icon(icon_name.to_i, x+4, y+4, true)
  523.         x += 28
  524.         next
  525.       end
  526.       # 图片的情况下
  527.       if c == "\003"
  528.         pic_name = ''
  529.         while ((cha = text.slice!(/./m)) != ']')
  530.           next if cha == '['
  531.           pic_name += cha
  532.         end
  533.         pic = Cache.picture(pic_name)
  534.         if x + pic.width > self.contents.width
  535.           x = 0
  536.           y += [WLH, min_y].max
  537.           min_y = 0
  538.         end
  539.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  540.         x += pic.width
  541.         min_y = [pic.height, WLH].max
  542.         next
  543.       end
  544.       # 另起一行文字的情况下
  545.       if c == "\n"
  546.         y += [WLH, min_y].max
  547.         min_y = 0
  548.         x = 0
  549.         # 下面的文字
  550.         next
  551.       end
  552.       # 自动换行处理
  553.       if x + self.contents.text_size(c).width > self.contents.width
  554.         y += [WLH, min_y].max
  555.         min_y = 0
  556.         x = 0
  557.       end
  558.       # 描绘文字
  559.       self.contents.draw_text(4 + x, y, 40, WLH, c)
  560.       # x 为要描绘文字的加法运算
  561.       x += self.contents.text_size(c).width
  562.     end
  563.   end
  564. end

  565. class Game_Party < Game_Unit
  566.   def item_no(n)
  567.     return item_number($data_items[n])
  568.   end
  569.   def weapon_no(n)
  570.     return item_number($data_weapons[n])
  571.   end
  572.   def armor_no(n)
  573.     return item_number($data_armors[n])
  574.   end
  575. end

  576. #==============================================================================
  577. # ■ Scene_Task
  578. #------------------------------------------------------------------------------
  579. #  处理任务画面的类。
  580. #==============================================================================

  581. class Scene_Task < Scene_Base
  582.   def initialize(index=nil)
  583.     @menu_index = index
  584.   end
  585.   #--------------------------------------------------------------------------
  586.   # ● 主处理
  587.   #--------------------------------------------------------------------------
  588.   def start
  589.     # 刷新任务资料
  590.     $game_party.get_tasks_info
  591.     # 生成任务名称窗口
  592.     @task_names_window = Window_Task_Name.new($game_party.current_tasks)
  593.     @task_names_window.active = true
  594.     if $game_party.current_tasks != []
  595.       @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)
  596.     end
  597.     # 生成任务内容窗口
  598.     @task_info_window = Window_Task.new($game_party.latest_task)
  599.     @task_info_window.active = true
  600.   end

  601.   def terminate
  602.     # 释放窗口
  603.     @task_names_window.dispose
  604.     @task_info_window.dispose
  605.   end
  606.   #--------------------------------------------------------------------------
  607.   # ● 刷新画面
  608.   #--------------------------------------------------------------------------
  609.   def update
  610.     # 刷新窗口
  611.     @task_names_window.update
  612.     @task_info_window.update
  613.     update_task_names_window
  614.   end
  615.   #--------------------------------------------------------------------------
  616.   # ● 刷新任务名称窗口
  617.   #--------------------------------------------------------------------------
  618.   def update_task_names_window
  619.     # 按下 B 键的情况下
  620.     if Input.trigger?(Input::B)
  621.       # 演奏取消 SE
  622.       Sound.play_cancel
  623.       # 这里设置返回的场景,返回地图是Scene_Map.new,菜单是Scene_Menu.new(任务界面index)
  624.       if @menu_index == nil
  625.         $scene = Scene_Map.new
  626.       else
  627.         $scene = Scene_Menu.new(@menu_index)
  628.       end
  629.       return
  630.     end
  631.     # 按下 C 键的情况下
  632.     if Input.trigger?(Input::C)
  633.       # 无任务可显示的话
  634.       if @task_names_window.task == nil
  635.         # 演奏冻结 SE
  636.         Sound.play_buzzer
  637.         return
  638.       end
  639.       # 如果光标没有移动的话,翻页
  640.       if $game_party.latest_task == @task_names_window.task.id
  641.         if @task_info_window.oy + @task_info_window.height - 32 > @task_info_window.contents.height
  642.           @task_info_window.oy = 0
  643.         else
  644.           @task_info_window.oy += 480-32
  645.         end
  646.         
  647.       else
  648.         @task_info_window.refresh(@task_names_window.task.id)
  649.         $game_party.latest_task = @task_names_window.task.id
  650.         # 演奏确定 SE
  651.         Sound.play_decision
  652.       end
  653.     end
  654.   end
  655. end
复制代码
找到Scene_Menu,def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = "升级加点"
    s7 = "任务"
    s8 = Vocab::game_end
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,s7,s8])
    @command_window.index = @menu_index
    if $game_party.members.size == 0          # 如果無人在隊
      @command_window.draw_item(0, false)     # 禁用[用品]
      @command_window.draw_item(1, false)     # 禁用[技能]
      @command_window.draw_item(2, false)     # 禁用[整備]
      @command_window.draw_item(3, false)     # 禁用[狀態]
    end
    if $game_system.save_disabled             # 如果禁止存檔
      @command_window.draw_item(4, false)     # 禁用[存檔]
    end
  end
  #--------------------------------------------------------------------------
  # * 更新指令選擇輸入資訊
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 4
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.index
      when 0      # 用品
        $scene = Scene_Item.new
      when 1,2,3  # 技能,整備,狀態
        start_actor_selection
      when 4      # 存檔        
        $scene = Scene_File.new(true, false, false)
        when 5 #加点
      $scene = Scene_Lvup.new
      when 6 #任务
      $scene = Scene_Task.new(6)
      when 7      # 結束遊戲
        $scene = Scene_End.new
      end
    end
  end
  #--------------------------------------------------------------------------
  # * 開始接收主角選擇指令輸入資訊
  #--------------------------------------------------------------------------
  def start_actor_selection
    @command_window.active = false
    @status_window.active = true
    if $game_party.last_actor_index < @status_window.item_max
      @status_window.index = $game_party.last_actor_index
    else
      @status_window.index = 0
    end
  end
  #--------------------------------------------------------------------------
  # * 停止接收主角選擇指令輸入資訊
  #--------------------------------------------------------------------------
  def end_actor_selection
    @command_window.active = true
    @status_window.active = false
    @status_window.index = -1
  end
  #--------------------------------------------------------------------------
  # * 更新主角選擇指令輸入資訊
  #--------------------------------------------------------------------------
  def update_actor_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_actor_selection
    elsif Input.trigger?(Input::C)
      $game_party.last_actor_index = @status_window.index
      Sound.play_decision
      case @command_window.index
      when 1  # 技能
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # 整備
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # 狀態
        $scene = Scene_Status.new(@status_window.index)
      end
    end
  end
end
注:(无视我这里的加点,你懂得!)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
150 小时
注册时间
2006-4-15
帖子
84
12
 楼主| 发表于 2013-2-11 22:19:29 | 只看该作者
哇哇,这个好用,谢谢谢谢。!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-22 20:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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