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

Project1

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

[已经解决] 叶子任务界面怎么呼出

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
106 小时
注册时间
2010-12-30
帖子
43
跳转到指定楼层
1
发表于 2011-5-5 20:53:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 qiuxuie9 于 2011-5-7 20:16 编辑
  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/046-Book01"

  104. end



  105. class Game_Party

  106.   #--------------------------------------------------------------------------

  107.   # ● 设置任务资料

  108.   #--------------------------------------------------------------------------

  109.   def get_tasks_info

  110.     @tasks_info = []

  111.    

  112.     #-讲解-

  113.     # 三个示例任务由浅入深,其实只要看懂第一个就可以使用了。

  114.     # 任务的写法多种多样,不限于这三个任务的方法

  115.     #----

  116.     #-----------------------------

  117.     # 示例任务1:沙漠中的五叶花

  118.     #-----------------------------

  119.     名称 = "\\c[6]沙漠中的五叶花"

  120.     #-讲解-

  121.     # 注意!脚本编辑器的变色功能并不是非常完善,所以换行后字变黑了,但仍然是字符

  122.     # 串的一部分,所以不要忘记在内容最后打一个双引号

  123.     # 按回车是强制换行

  124.     #----

  125.     简介 = "\\c[6]沙漠中的五叶花



  126. \\c[9]任务目标:

  127. 获得5朵五叶花,交给西露达



  128. \\c[0]五叶花数目:\\v[1]/5



  129. 西露达:

  130. \\c[Hff0000]人家等着你的花哦~"

  131.     #-讲解-

  132.     # 每个任务最后一定要加上:

  133.     # @tasks_info[任务ID] = Game_Task.new(名称, 简介)

  134.     # 接受任务和完成任务都是用这个任务ID来索引

  135.     #----

  136.     @tasks_info[1] = Game_Task.new(名称, 简介)

  137.    

  138.     #-----------------------------

  139.     # 示例任务2:克萝莉亚的药瓶

  140.     #-----------------------------

  141.     名称 = "\\c[6]克萝莉亚的药瓶"

  142.     #-讲解-

  143.     # 这里使用了字符串相加,例如 s = "a" + "b" ,s 就是 "ab"

  144.     # 还用了内嵌表达式,$game_party.item_number(38) 就是38号物品的数量

  145.     #----

  146.     简介 = 名称 + "

  147.    

  148. \\c[9]任务目标:

  149. 问克萝莉亚要一个药瓶,交给西露达



  150. \\c[0]药瓶:#{$game_party.item_no(1)}/1



  151. 西露达:

  152. 克萝莉亚就在西边的屋子里"

  153.     @tasks_info[2] = Game_Task.new(名称, 简介)

  154.    

  155.     #-----------------------------

  156.     # 示例任务3:灵魂线

  157.     #-----------------------------

  158.     #-讲解-

  159.     # 这里用了条件判断,当3号变量大于等于1时,加上“完成”字样,同时变色

  160.     #----

  161.     if $game_variables[3] >= 1

  162.       名称 = "\\c[8]灵魂线(完成)"

  163.       item = "\\c[8]灵魂线:#{$game_variables[3]}/1 (完成)"

  164.     else

  165.       名称 = "\\c[2]灵魂线"

  166.       item = "\\c[0]灵魂线:#{$game_variables[3]}/1"

  167.     end

  168.     #-讲解-

  169.     # 预先定义变量,用内嵌表达式插入

  170.     # 最后用了显示图标

  171.     #----

  172.     简介 = "#{名称}

  173.    

  174. \\c[9]任务目标:

  175. 找到埋起来的灵魂线,交给克萝莉亚



  176. #{item}



  177. \\c[0]克萝莉亚:

  178. 灵魂线就埋在其中一棵树下,给我好好找\\i[157]"

  179.     @tasks_info[3] = Game_Task.new(名称, 简介)

  180.    

  181.   end

  182. end

  183. #==============================================================================

  184. # ■ Interpreter

  185. #------------------------------------------------------------------------------

  186. #  执行事件命令的解释器。本类在 Game_System 类

  187. # 与 Game_Event 类的内部使用。

  188. #==============================================================================



  189. class Game_Interpreter

  190.   #--------------------------------------------------------------------------

  191.   # ● 接受任务

  192.   #--------------------------------------------------------------------------

  193.   def get_task(id)

  194.     task = $game_party.tasks_info[id]

  195.     return true if (task.nil? or $game_party.current_tasks.include?(task.id))

  196.     $game_party.current_tasks.unshift(task.id)

  197.     return true

  198.   end

  199.   #--------------------------------------------------------------------------

  200.   # ● 获得全部任务

  201.   #--------------------------------------------------------------------------

  202.   def get_all_task

  203.     # 清空当前任务

  204.     $game_party.current_tasks.clear

  205.     for task in $game_party.tasks_info

  206.       next if task.nil?

  207.       $game_party.current_tasks.unshift(task.id)

  208.     end

  209.     return true

  210.   end

  211.   #--------------------------------------------------------------------------

  212.   # ● 完成/放弃任务

  213.   #--------------------------------------------------------------------------

  214.   def finish_task(id)

  215.     task = $game_party.tasks_info[id]

  216.     return true if task.nil?

  217.     $game_party.current_tasks.delete(task.id)

  218.     return true

  219.   end

  220.   #--------------------------------------------------------------------------

  221.   # ● 删除全部任务

  222.   #--------------------------------------------------------------------------

  223.   def finish_all_task

  224.     $game_party.current_tasks.clear

  225.     return true

  226.   end

  227. end



  228. #==============================================================================

  229. # ■ Game_Party

  230. #------------------------------------------------------------------------------

  231. #  处理同伴的类。包含金钱以及物品的信息。本类的实例

  232. # 请参考 $game_party。

  233. #==============================================================================



  234. class Game_Party

  235.   #--------------------------------------------------------------------------

  236.   # ● 定义实例变量

  237.   #--------------------------------------------------------------------------

  238.   attr_writer     :latest_task                  # 上次查看的任务

  239.   #--------------------------------------------------------------------------

  240.   # ● 取得任务资料

  241.   #--------------------------------------------------------------------------

  242.   def tasks_info

  243.     if @tasks_info.nil?

  244.       get_tasks_info

  245.     end

  246.     return @tasks_info

  247.   end

  248.   #--------------------------------------------------------------------------

  249.   # ● 取得当前任务

  250.   #--------------------------------------------------------------------------

  251.   def current_tasks

  252.     if @current_tasks.nil?

  253.       @current_tasks = []

  254.     end

  255.     return @current_tasks

  256.   end

  257.   #--------------------------------------------------------------------------

  258.   # ● 上次查看的任务

  259.   #--------------------------------------------------------------------------

  260.   def latest_task

  261.     if !current_tasks.include?(@latest_task)

  262.       @latest_task = current_tasks[0]

  263.     end

  264.     return @latest_task

  265.   end

  266. end



  267. #==============================================================================

  268. # ■ Game_Task

  269. #------------------------------------------------------------------------------

  270. #  处理任务的类。包含任务的信息。

  271. #==============================================================================



  272. class Game_Task

  273.   attr_accessor   :name                   # 名称

  274.   attr_accessor   :briefing               # 简介

  275.   def initialize(name, briefing)

  276.     @name = name

  277.     @briefing = briefing

  278.   end

  279.   def height

  280.     text = @briefing.clone

  281.     x = 0

  282.     y = 64

  283.     min_y = 0

  284.     # 限制文字处理

  285.     begin

  286.       last_text = text.clone

  287.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }

  288.     end until text == last_text

  289.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do

  290.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""

  291.     end

  292.     # 为了方便、将 "\\\\" 变换为 "\000"

  293.     text.gsub!(/\\\\/) { "\000" }

  294.     # "\C" 变为 "\001"

  295.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }

  296.     # "\I" 变为 "\002"

  297.     text.gsub!(/\\[Ii]/) { "\002" }

  298.     # "\P" 变为 "\003"

  299.     text.gsub!(/\\[Pp]/) { "\003" }

  300.     # c 获取 1 个字 (如果不能取得文字就循环)

  301.     while ((c = text.slice!(/./m)) != nil)

  302.       # \\ 的情况下

  303.       if c == "\000"

  304.         # 还原为本来的文字

  305.         c = "\\"

  306.       end

  307.       # \C[n] 的情况下

  308.       if c == "\001"

  309.         # 更改文字色

  310.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")

  311.         # 下面的文字

  312.         next

  313.       end

  314.       # 图标的情况下

  315.       if c == "\002"

  316.         icon_name = ''

  317.         while ((cha = text.slice!(/./m)) != ']')

  318.           next if cha == '['

  319.           icon_name += cha

  320.         end

  321.         if x + 24 > 368

  322.           x = 0

  323.           y += [24, min_y].max

  324.           min_y = 0

  325.         end

  326.         x += 28

  327.         next

  328.       end

  329.       # 图片的情况下

  330.       if c == "\003"

  331.         pic_name = ''

  332.         while ((cha = text.slice!(/./m)) != ']')

  333.           next if cha == '['

  334.           pic_name += cha

  335.         end

  336.         pic = Cache.picture(pic_name)

  337.         if x + pic.width > 368

  338.           x = 0

  339.           y += [24, min_y].max

  340.           min_y = 0

  341.         end

  342.         x += pic.width

  343.         min_y = [pic.height, 24].max

  344.         next

  345.       end

  346.       # 另起一行文字的情况下

  347.       if c == "\n"

  348.         y += [24, min_y].max

  349.         min_y = 0

  350.         x = 0

  351.         # 下面的文字

  352.         next

  353.       end

  354.       # 自动换行处理

  355.       if x + 22 > 368

  356.         y += [24, min_y].max

  357.         min_y = 0

  358.         x = 0

  359.       end

  360.       # x 为要描绘文字的加法运算

  361.       x += 22

  362.     end

  363.     return (y + [24, min_y].max)

  364.   end

  365.   def id

  366.     return $game_party.tasks_info.index(self)

  367.   end

  368. end



  369. #==============================================================================

  370. # ■ Window_Task_Name

  371. #------------------------------------------------------------------------------

  372. #  任务名称显示窗口。

  373. #==============================================================================



  374. class Window_Task_Name < Window_Selectable

  375.   #--------------------------------------------------------------------------

  376.   # ● 初始化对像

  377.   #--------------------------------------------------------------------------

  378.   def initialize(tasks)

  379.     super(0, 0, 204, 416)

  380.     @tasks = []

  381.     for id in tasks

  382.       @tasks.push($game_party.tasks_info[id])

  383.     end

  384.     @item_max = tasks.size

  385.     self.contents = Bitmap.new(

  386.     self.width - 32, @item_max == 0 ? 32 : @item_max * 32)

  387.     refresh

  388.     self.index = 0

  389.   end

  390.   #--------------------------------------------------------------------------

  391.   # ● 刷新

  392.   #--------------------------------------------------------------------------

  393.   def refresh

  394.     self.contents.clear

  395.     if @tasks != []

  396.       for task in @tasks

  397.         draw_item(task)

  398.       end

  399.     else

  400.       draw_blank

  401.     end

  402.   end

  403.   #--------------------------------------------------------------------------

  404.   # ● 描绘项目

  405.   #--------------------------------------------------------------------------

  406.   def draw_item(task)

  407.     text = task.name.clone

  408.     y = @tasks.index(task) * WLH

  409.     chenge_special_character(text, 0, y)

  410.   end

  411.   #--------------------------------------------------------------------------

  412.   # ● 描绘空行

  413.   #--------------------------------------------------------------------------

  414.   def draw_blank

  415.     self.contents.font.color = Color.new(255, 255, 255, 128)

  416.     rect = Rect.new(4, 0, self.contents.width - 8, 32)

  417.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))

  418.     self.contents.draw_text(rect, '当前没有任何任务')

  419.   end

  420.   #--------------------------------------------------------------------------

  421.   # ● 获取任务

  422.   #--------------------------------------------------------------------------

  423.   def task

  424.     return @tasks[self.index]

  425.   end

  426. end

  427.   

  428. #==============================================================================

  429. # ■ Window_Task

  430. #------------------------------------------------------------------------------

  431. #  任务内容显示窗口。

  432. #==============================================================================



  433. class Window_Task < Window_Base

  434.   #--------------------------------------------------------------------------

  435.   # ● 初始化对像

  436.   #--------------------------------------------------------------------------

  437.   def initialize(task_id)

  438.     super(204, 0, 340, 416)

  439.     refresh(task_id)

  440.   end

  441.   #--------------------------------------------------------------------------

  442.   # ● 刷新内容

  443.   #--------------------------------------------------------------------------

  444.   def refresh(task_id)

  445.     self.oy = 0

  446.     self.visible = true

  447.     return if task_id.nil?

  448.     task = $game_party.tasks_info[task_id]

  449.     if !task.nil?

  450.       self.contents = Bitmap.new(self.width - 32, task.height)

  451.     else

  452.       self.contents = Bitmap.new(self.width - 32, self.height - 32)

  453.       return

  454.     end

  455.     self.contents.font.color = normal_color

  456.     # 描绘任务内容

  457.     draw_task_info(task)

  458.   end

  459.   #--------------------------------------------------------------------------

  460.   # ● 描绘任务内容

  461.   #--------------------------------------------------------------------------

  462.   def draw_task_info(task)

  463.     self.contents.font.color = normal_color

  464.     # 描绘任务简介

  465.     chenge_special_character(task.briefing.clone)

  466.   end

  467. end



  468. class Window_Base < Window

  469.   def chenge_special_character(text, x=0, y=0)

  470.     # 记录换行时y坐标最小加值

  471.     min_y = 0

  472.     # 限制文字处理

  473.     begin

  474.       last_text = text.clone

  475.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }

  476.     end until text == last_text

  477.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do

  478.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""

  479.     end

  480.     # 为了方便、将 "\\\\" 变换为 "\000"

  481.     text.gsub!(/\\\\/) { "\000" }

  482.     # "\C" 变为 "\001"

  483.     text.gsub!(/\\[Cc]\[([0-9a-zA-Z]+)\]/)  { "\001[#{$1}]" }

  484.     # "\I" 变为 "\002"

  485.     text.gsub!(/\\[Ii]/) { "\002" }

  486.     # "\P" 变为 "\003"

  487.     text.gsub!(/\\[Pp]/) { "\003" }

  488.     # c 获取 1 个字 (如果不能取得文字就循环)

  489.     while ((c = text.slice!(/./m)) != nil)

  490.       # \\ 的情况下

  491.       if c == "\000"

  492.         # 还原为本来的文字

  493.         c = "\\"

  494.       end

  495.       # \C[n] 的情況下

  496.       if c == "\001"

  497.         # 更改文字色

  498.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")

  499.         # 如果是设定RGB颜色

  500.         if $1[0,1]=="H"

  501.           # 先拷贝一下文字

  502.           c=$1.dup

  503.           # 分3段分别取出R,G,B颜色

  504.           c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")

  505.           # 设定文字颜色

  506.           self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))

  507.         else

  508.           color = $1.to_i

  509.           if color >= 0 and color <= 31

  510.             self.contents.font.color = text_color(color)

  511.           elsif color == 32

  512.             self.contents.font.color = disabled_color

  513.           elsif color == 33

  514.             self.contents.font.color = system_color

  515.           end

  516.         end

  517.         # 下面的文字

  518.         next

  519.       end

  520.       # 图标的情况下

  521.       if c == "\002"

  522.         icon_name = ''

  523.         while ((cha = text.slice!(/./m)) != ']')

  524.           next if cha == '['

  525.           icon_name += cha

  526.         end

  527.         if x + 24 > self.contents.width

  528.           x = 0

  529.           y += [WLH, min_y].max

  530.           min_y = 0

  531.         end

  532.         draw_icon(icon_name.to_i, x+4, y+4, true)

  533.         x += 28

  534.         next

  535.       end

  536.       # 图片的情况下

  537.       if c == "\003"

  538.         pic_name = ''

  539.         while ((cha = text.slice!(/./m)) != ']')

  540.           next if cha == '['

  541.           pic_name += cha

  542.         end

  543.         pic = Cache.picture(pic_name)

  544.         if x + pic.width > self.contents.width

  545.           x = 0

  546.           y += [WLH, min_y].max

  547.           min_y = 0

  548.         end

  549.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))

  550.         x += pic.width

  551.         min_y = [pic.height, WLH].max

  552.         next

  553.       end

  554.       # 另起一行文字的情况下

  555.       if c == "\n"

  556.         y += [WLH, min_y].max

  557.         min_y = 0

  558.         x = 0

  559.         # 下面的文字

  560.         next

  561.       end

  562.       # 自动换行处理

  563.       if x + self.contents.text_size(c).width > self.contents.width

  564.         y += [WLH, min_y].max

  565.         min_y = 0

  566.         x = 0

  567.       end

  568.       # 描绘文字

  569.       self.contents.draw_text(4 + x, y, 40, WLH, c)

  570.       # x 为要描绘文字的加法运算

  571.       x += self.contents.text_size(c).width

  572.     end

  573.   end

  574. end



  575. class Game_Party < Game_Unit

  576.   def item_no(n)

  577.     return item_number($data_items[n])

  578.   end

  579.   def weapon_no(n)

  580.     return item_number($data_weapons[n])

  581.   end

  582.   def armor_no(n)

  583.     return item_number($data_armors[n])

  584.   end

  585. end



  586. #==============================================================================

  587. # ■ Scene_Task

  588. #------------------------------------------------------------------------------

  589. #  处理任务画面的类。

  590. #==============================================================================



  591. class Scene_Task < Scene_Base

  592.   def initialize(index=nil)

  593.     @menu_index = index

  594.   end

  595.   #--------------------------------------------------------------------------

  596.   # ● 主处理

  597.   #--------------------------------------------------------------------------

  598.   def start

  599.     # 刷新任务资料

  600.     $game_party.get_tasks_info

  601.     # 生成任务名称窗口

  602.     @task_names_window = Window_Task_Name.new($game_party.current_tasks)

  603.     @task_names_window.active = true

  604.     if $game_party.current_tasks != []

  605.       @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)

  606.     end

  607.     # 生成任务内容窗口

  608.     @task_info_window = Window_Task.new($game_party.latest_task)

  609.     @task_info_window.active = true

  610.   end



  611.   def terminate

  612.     # 释放窗口

  613.     @task_names_window.dispose

  614.     @task_info_window.dispose

  615.   end

  616.   #--------------------------------------------------------------------------

  617.   # ● 刷新画面

  618.   #--------------------------------------------------------------------------

  619.   def update

  620.     # 刷新窗口

  621.     @task_names_window.update

  622.     @task_info_window.update

  623.     update_task_names_window

  624.   end

  625.   #--------------------------------------------------------------------------

  626.   # ● 刷新任务名称窗口

  627.   #--------------------------------------------------------------------------

  628.   def update_task_names_window

  629.     # 按下 B 键的情况下

  630.     if Input.trigger?(Input::B)

  631.       # 演奏取消 SE

  632.       Sound.play_cancel

  633.       # 这里设置返回的场景,返回地图是Scene_Map.new,菜单是Scene_Menu.new(任务界面index)

  634.       if @menu_index == nil

  635.         $scene = Scene_Map.new

  636.       else

  637.         $scene = Scene_Menu.new(@menu_index)

  638.       end

  639.       return

  640.     end

  641.     # 按下 C 键的情况下

  642.     if Input.trigger?(Input::C)

  643.       # 无任务可显示的话

  644.       if @task_names_window.task == nil

  645.         # 演奏冻结 SE

  646.         Sound.play_buzzer

  647.         return

  648.       end

  649.       # 如果光标没有移动的话,翻页

  650.       if $game_party.latest_task == @task_names_window.task.id

  651.         if @task_info_window.oy + @task_info_window.height - 32 > @task_info_window.contents.height

  652.           @task_info_window.oy = 0

  653.         else

  654.           @task_info_window.oy += 480-32

  655.         end

  656.         if @task_info_window.contents.height > @task_info_window.height - 32

  657.           # 演奏翻页 SE

  658.           Sound.se_play(CHANGE_PAGE_SE)

  659.         end

  660.       else

  661.         @task_info_window.refresh(@task_names_window.task.id)

  662.         $game_party.latest_task = @task_names_window.task.id

  663.         # 演奏确定 SE

  664.         Sound.play_decision

  665.       end

  666.     end

  667.   end

  668. end
复制代码


我用的这个 菜单也有任务选项 但是点不进去 不知道为什么 哪位好心的前辈指教下
就像这样  点不进去

Lv3.寻梦者

不活君

梦石
0
星屑
1495
在线时间
1247 小时
注册时间
2011-2-16
帖子
681
2
发表于 2011-5-5 22:04:52 | 只看该作者
我是用技能呼出的  脚本太深奥了 不会
不知不觉就几百天过去了 经历无数个雨夜 清晨 黎明 先是兴奋 厌倦 释然 会觉得很有趣 然后又会觉得无趣 最后有一种归属感 满足感
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
106 小时
注册时间
2010-12-30
帖子
43
3
 楼主| 发表于 2011-5-6 18:47:46 | 只看该作者
回复 fangqing9 的帖子

那请问前辈 你是怎么弄到技能里去的呢?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
88
在线时间
331 小时
注册时间
2010-10-24
帖子
778
4
发表于 2011-5-6 19:03:53 | 只看该作者
应该是有任务的时候可以打开吧...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
116 小时
注册时间
2008-5-12
帖子
264
5
发表于 2011-5-6 20:08:31 | 只看该作者
本帖最后由 shinliwei 于 2011-5-6 20:11 编辑

不是告诉你是用$scene = Scene_Task.new 呼出了么


shinliwei于2011-5-6 20:10补充以下内容:
  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================
  6. #---------------------------------------------------------
  7. # ●菜单中显示地图
  8. #---------------------------------------------------------
  9. class Game_Map
  10. attr_reader   :map_id  
  11.   def mpname
  12.   $mpname = load_data("Data/MapInfos.rvdata")
  13.   $mpname[@map_id].name
  14.   end
  15. end
  16. class Window_Mapname < Window_Base
  17.   def initialize(x, y)
  18.     super(0, 272, 160, WLH + 64)
  19.     refresh
  20.   end  
  21.   def refresh
  22.     self.contents.clear
  23.     self.contents.font.color = system_color
  24.     self.contents.draw_text(4, 0, 120, 32, "当前地图:")
  25.     self.contents.font.color = normal_color
  26.     self.contents.draw_text(4, 32, 120, 32, $game_map.mpname.to_s, 2)
  27.   end
  28. end

  29. #---------------
  30. #正式开始菜单
  31. #---------------
  32. class Scene_Menu < Scene_Base
  33.   #--------------------------------------------------------------------------
  34.   # ● 初始化对像
  35.   #     menu_index : 命令窗口光标初始位置
  36.   #--------------------------------------------------------------------------
  37.   def initialize(menu_index = 0)
  38.     @menu_index = menu_index
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 开始处理
  42.   #--------------------------------------------------------------------------
  43.   def start
  44.     super
  45.     create_menu_background
  46.     create_command_window
  47.     @gold_window = Window_Gold.new(0, 360)
  48.     @status_window = Window_MenuStatus.new(160, 0)
  49.     @mapname_window = Window_Mapname.new(0, 178)
  50.     @mapname_window.openness = 0
  51.     @mapname_window.open
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 结束处理
  55.   #--------------------------------------------------------------------------
  56.   def terminate
  57.     super
  58.     dispose_menu_background
  59.     @command_window.dispose
  60.     @gold_window.dispose
  61.     @status_window.dispose

  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 更新画面
  65.   #--------------------------------------------------------------------------
  66.   def update
  67.     super
  68.     update_menu_background
  69.     @command_window.update
  70.     @gold_window.update
  71.     @status_window.update

  72.     if @command_window.active
  73.       update_command_selection
  74.     elsif @status_window.active
  75.       update_actor_selection
  76.     end
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 生成命令窗口
  80.   #--------------------------------------------------------------------------
  81.   def create_command_window
  82.     s1  = Vocab::item
  83.     s2  = Vocab::skill
  84.     s3  = Vocab::equip
  85.     s4  = Vocab::status
  86.     s5  = "天赋"
  87.     s6  = "图鉴"
  88.     s7  = "任务"
  89.     s8  = "队伍"
  90.     s9  = Vocab::save
  91.     s10 = Vocab::game_end
  92.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9, s10])
  93.     @command_window.index = @menu_index
  94.     if $game_party.members.size == 0          # 如果队伍为空
  95.       @command_window.draw_item(0, false)     # 无效化物品选项
  96.       @command_window.draw_item(1, false)     # 无效化技能选项
  97.       @command_window.draw_item(2, false)     # 无效化装备选项
  98.       @command_window.draw_item(3, false)     # 无效化状态选项
  99.     end
  100.     if $game_system.save_disabled             # 如果禁止存档
  101.       @command_window.draw_item(4, false)     # 无效化存档选项
  102.     end
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 更新命令窗口
  106.   #--------------------------------------------------------------------------
  107.   def update_command_selection
  108.     if Input.trigger?(Input::B)
  109.       Sound.play_cancel
  110.       $scene = Scene_Map.new
  111.     elsif Input.trigger?(Input::C)
  112.       if $game_party.members.size == 0 and @command_window.index < 4
  113.         Sound.play_buzzer
  114.         return
  115.       elsif $game_system.save_disabled and @command_window.index == 4
  116.         Sound.play_buzzer
  117.         return
  118.       end
  119.       Sound.play_decision
  120.       case @command_window.index
  121.       when 0      # 物品
  122.         $scene = Scene_Item.new
  123.       when 1,2,3,4  # 技能、装备、状态、天赋
  124.         start_actor_selection
  125.       when 5     # 怪物图鉴
  126.         $scene = Scene_EnemyGuide.new
  127.       when 6      # 任务
  128.         $scene = Scene_Task.new(5)
  129.       when 7      # 队伍
  130.         $scene = Scene_PartyForm.new  
  131.       when 8      # 存档
  132.         $scene = Scene_File.new(true, false, false)
  133.       when 9      # 结束游戏
  134.         $scene = Scene_End.new

  135.       end
  136.     end
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 角色选择开始
  140.   #--------------------------------------------------------------------------
  141.   def start_actor_selection
  142.     @command_window.active = false
  143.     @status_window.active = true
  144.     if $game_party.last_actor_index < @status_window.item_max
  145.       @status_window.index = $game_party.last_actor_index
  146.     else
  147.       @status_window.index = 0
  148.     end
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 角色选择结束
  152.   #--------------------------------------------------------------------------
  153.   def end_actor_selection
  154.     @command_window.active = true
  155.     @status_window.active = false
  156.     @status_window.index = -1
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 角色选择更新
  160.   #--------------------------------------------------------------------------
  161.   def update_actor_selection
  162.     if Input.trigger?(Input::B)
  163.       Sound.play_cancel
  164.       end_actor_selection
  165.     elsif Input.trigger?(Input::C)
  166.       $game_party.last_actor_index = @status_window.index
  167.       Sound.play_decision
  168.       case @command_window.index
  169.       when 1  # 技能
  170.         $scene = Scene_Skill.new(@status_window.index)
  171.       when 2  # 装备
  172.         $scene = Scene_Equip.new(@status_window.index)
  173.       when 3  # 状态
  174.         $scene = Scene_Status.new(@status_window.index)
  175.       when 4  # 天赋
  176.         $scene = Scene_Skill_Tree.new(@status_window.index)
  177.       end
  178.     end
  179.   end
  180. end
复制代码


shinliwei于2011-5-6 20:11补充以下内容:
你没有的项你删掉就是了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

不活君

梦石
0
星屑
1495
在线时间
1247 小时
注册时间
2011-2-16
帖子
681
6
发表于 2011-5-6 21:34:43 | 只看该作者
回复 shinliwei 的帖子

非常感谢
不知不觉就几百天过去了 经历无数个雨夜 清晨 黎明 先是兴奋 厌倦 释然 会觉得很有趣 然后又会觉得无趣 最后有一种归属感 满足感
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
106 小时
注册时间
2010-12-30
帖子
43
7
 楼主| 发表于 2011-5-7 19:21:59 | 只看该作者
回复 shinliwei 的帖子

$scene = Scene_Task.new
是什么?不懂诶:L
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
116 小时
注册时间
2008-5-12
帖子
264
8
发表于 2011-5-7 19:27:04 | 只看该作者
$scene = Scene_Task.new 是脚本
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
106 小时
注册时间
2010-12-30
帖子
43
9
 楼主| 发表于 2011-5-7 19:27:22 | 只看该作者
回复 shinliwei 的帖子

用了你的脚本 提示错误了


看下怎么回事


qiuxuie9于2011-5-7 19:28补充以下内容:
不明白:shutup:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
116 小时
注册时间
2008-5-12
帖子
264
10
发表于 2011-5-7 19:31:52 | 只看该作者
本帖最后由 shinliwei 于 2011-5-7 19:35 编辑

$scene = Scene_Task.new(5)

自己把括号里的数字改改啊 你的菜单跟我的又不同的


shinliwei于2011-5-7 19:32补充以下内容:
把你没有的项去掉啊


shinliwei于2011-5-7 19:34补充以下内容:
你的是6就写6
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 00:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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