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

Project1

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

[已经过期] 任务系统

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2012-9-23
帖子
30
跳转到指定楼层
1
发表于 2012-10-4 17:10:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我用叶子的任务脚本,设置了个打怪任务,但无论打多少次,上面都没有显示。
#--------------------------------------------------------------------------
  # ● 设置任务资料
  #--------------------------------------------------------------------------
  def get_tasks_info
    @tasks_info = []
   
    #-讲解-
    # 三个示例任务由浅入深,其实只要看懂第一个就可以使用了。
    # 任务的写法多种多样,不限于这三个任务的方法
    #----
    #-----------------------------
    # 示例任务1:沙漠中的五叶花
    #-----------------------------
    名称 = "\\c[6]打败史莱姆*2"
    #-讲解-
    # 注意!脚本编辑器的变色功能并不是非常完善,所以换行后字变黑了,但仍然是字符
    # 串的一部分,所以不要忘记在内容最后打一个双引号
    # 按回车是强制换行
    #----
    简介 = "\\c[6]打败史莱姆*2
\\c[9]任务目标:
打败史莱姆*2
\\c[0]打败史莱姆数目:\\v[1]/2
村长:
\\c[Hff0000]打败史莱姆*2"
    #-讲解-
    # 每个任务最后一定要加上:
    # @tasks_info[任务ID] = Game_Task.new(名称, 简介)
    # 接受任务和完成任务都是用这个任务ID来索引
    #----
    @tasks_info[1] = Game_Task.new(名称, 简介)
   

Lv2.观梦者

梦石
0
星屑
762
在线时间
1270 小时
注册时间
2011-2-14
帖子
5589
2
发表于 2012-10-4 17:19:52 | 只看该作者
叶子的任务系统不是写给XP的么
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2012-9-23
帖子
30
3
 楼主| 发表于 2012-10-4 17:26:48 | 只看该作者
R-零 发表于 2012-10-4 17:19
叶子的任务系统不是写给XP的么

将XP的一些脚本改成VX版的
回复 支持 反对

使用道具 举报

Lv3.寻梦者

伴侣:北岛谜烟

梦石
0
星屑
2967
在线时间
3547 小时
注册时间
2012-8-7
帖子
12181

贵宾

4
发表于 2012-10-4 18:36:47 | 只看该作者
本帖最后由 delv25 于 2012-10-4 18: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 = [0]
  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.     名称 = "\\c[6]史莱姆的灾难"
  123.    
  124.     简介 = "\\c[2]主线任务(不可放弃)

  125. \\c[3]任务目标:
  126. 杀死30只史莱姆

  127. \\c[6]提示:
  128. \\c[0]史莱姆分布在野外平原。"
  129.     @tasks_info[2] = Game_Task.new(名称, 简介)
  130. end
  131. end
  132. #==============================================================================
  133. # ■ Interpreter
  134. #------------------------------------------------------------------------------
  135. #  执行事件命令的解释器。本类在 Game_System 类
  136. # 与 Game_Event 类的内部使用。
  137. #==============================================================================

  138. class Game_Interpreter
  139.   #--------------------------------------------------------------------------
  140.   # ● 接受任务
  141.   #--------------------------------------------------------------------------
  142.   def get_task(id)
  143.     task = $game_party.tasks_info[id]
  144.     return true if (task.nil? or $game_party.current_tasks.include?(task.id))
  145.     $game_party.current_tasks.unshift(task.id)
  146.     return true
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 获得全部任务
  150.   #--------------------------------------------------------------------------
  151.   def get_all_task
  152.     # 清空当前任务
  153.     $game_party.current_tasks.clear
  154.     for task in $game_party.tasks_info
  155.       next if task.nil?
  156.       $game_party.current_tasks.unshift(task.id)
  157.     end
  158.     return true
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 完成/放弃任务
  162.   #--------------------------------------------------------------------------
  163.   def finish_task(id)
  164.     task = $game_party.tasks_info[id]
  165.     return true if task.nil?
  166.     $game_party.current_tasks.delete(task.id)
  167.     return true
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 删除全部任务
  171.   #--------------------------------------------------------------------------
  172.   def finish_all_task
  173.     $game_party.current_tasks.clear
  174.     return true
  175.   end
  176. end

  177. #==============================================================================
  178. # ■ Game_Party
  179. #------------------------------------------------------------------------------
  180. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  181. # 请参考 $game_party。
  182. #==============================================================================

  183. class Game_Party
  184.   #--------------------------------------------------------------------------
  185.   # ● 定义实例变量
  186.   #--------------------------------------------------------------------------
  187.   attr_writer     :latest_task                  # 上次查看的任务
  188.   #--------------------------------------------------------------------------
  189.   # ● 取得任务资料
  190.   #--------------------------------------------------------------------------
  191.   def tasks_info
  192.     if @tasks_info.nil?
  193.       get_tasks_info
  194.     end
  195.     return @tasks_info
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 取得当前任务
  199.   #--------------------------------------------------------------------------
  200.   def current_tasks
  201.     if @current_tasks.nil?
  202.       @current_tasks = []
  203.     end
  204.     return @current_tasks
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 上次查看的任务
  208.   #--------------------------------------------------------------------------
  209.   def latest_task
  210.     if !current_tasks.include?(@latest_task)
  211.       @latest_task = current_tasks[0]
  212.     end
  213.     return @latest_task
  214.   end
  215. end

  216. #==============================================================================
  217. # ■ Game_Task
  218. #------------------------------------------------------------------------------
  219. #  处理任务的类。包含任务的信息。
  220. #==============================================================================

  221. class Game_Task
  222.   attr_accessor   :name                   # 名称
  223.   attr_accessor   :briefing               # 简介
  224.   def initialize(name, briefing)
  225.     @name = name
  226.     @briefing = briefing
  227.   end
  228.   def height
  229.     text = @briefing.clone
  230.     x = 0
  231.     y = 64
  232.     min_y = 0
  233.     # 限制文字处理
  234.     begin
  235.       last_text = text.clone
  236.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  237.     end until text == last_text
  238.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  239.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  240.     end
  241.     # 为了方便、将 "\\\\" 变换为 "\000"
  242.     text.gsub!(/\\\\/) { "\000" }
  243.     # "\C" 变为 "\001"
  244.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  245.     # "\I" 变为 "\002"
  246.     text.gsub!(/\\[Ii]/) { "\002" }
  247.     # "\P" 变为 "\003"
  248.     text.gsub!(/\\[Pp]/) { "\003" }
  249.     # c 获取 1 个字 (如果不能取得文字就循环)
  250.     while ((c = text.slice!(/./m)) != nil)
  251.       # \\ 的情况下
  252.       if c == "\000"
  253.         # 还原为本来的文字
  254.         c = "\\"
  255.       end
  256.       # \C[n] 的情况下
  257.       if c == "\001"
  258.         # 更改文字色
  259.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  260.         # 下面的文字
  261.         next
  262.       end
  263.       # 图标的情况下
  264.       if c == "\002"
  265.         icon_name = ''
  266.         while ((cha = text.slice!(/./m)) != ']')
  267.           next if cha == '['
  268.           icon_name += cha
  269.         end
  270.         if x + 24 > 368
  271.           x = 0
  272.           y += [24, min_y].max
  273.           min_y = 0
  274.         end
  275.         x += 28
  276.         next
  277.       end
  278.       # 图片的情况下
  279.       if c == "\003"
  280.         pic_name = ''
  281.         while ((cha = text.slice!(/./m)) != ']')
  282.           next if cha == '['
  283.           pic_name += cha
  284.         end
  285.         pic = Cache.picture(pic_name)
  286.         if x + pic.width > 368
  287.           x = 0
  288.           y += [24, min_y].max
  289.           min_y = 0
  290.         end
  291.         x += pic.width
  292.         min_y = [pic.height, 24].max
  293.         next
  294.       end
  295.       # 另起一行文字的情况下
  296.       if c == "\n"
  297.         y += [24, min_y].max
  298.         min_y = 0
  299.         x = 0
  300.         # 下面的文字
  301.         next
  302.       end
  303.       # 自动换行处理
  304.       if x + 22 > 368
  305.         y += [24, min_y].max
  306.         min_y = 0
  307.         x = 0
  308.       end
  309.       # x 为要描绘文字的加法运算
  310.       x += 22
  311.     end
  312.     return (y + [24, min_y].max)
  313.   end
  314.   def id
  315.     return $game_party.tasks_info.index(self)
  316.   end
  317. end

  318. #==============================================================================
  319. # ■ Window_Task_Name
  320. #------------------------------------------------------------------------------
  321. #  任务名称显示窗口。
  322. #==============================================================================

  323. class Window_Task_Name < Window_Selectable
  324.   #--------------------------------------------------------------------------
  325.   # ● 初始化对像
  326.   #--------------------------------------------------------------------------
  327.   def initialize(tasks)
  328.     super(0, 0, 204, 416)
  329.     @tasks = []
  330.     for id in tasks
  331.       @tasks.push($game_party.tasks_info[id])
  332.     end
  333.     @item_max = tasks.size
  334.     self.contents = Bitmap.new(
  335.     self.width - 32, @item_max == 0 ? 32 : @item_max * 32)
  336.     refresh
  337.     self.index = 0
  338.   end
  339.   #--------------------------------------------------------------------------
  340.   # ● 刷新
  341.   #--------------------------------------------------------------------------
  342.   def refresh
  343.     self.contents.clear
  344.     if @tasks != []
  345.       for task in @tasks
  346.         draw_item(task)
  347.       end
  348.     else
  349.       draw_blank
  350.     end
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ● 描绘项目
  354.   #--------------------------------------------------------------------------
  355.   def draw_item(task)
  356.     text = task.name.clone
  357.     y = @tasks.index(task) * WLH
  358.     chenge_special_character(text, 0, y)
  359.   end
  360.   #--------------------------------------------------------------------------
  361.   # ● 描绘空行
  362.   #--------------------------------------------------------------------------
  363.   def draw_blank
  364.     self.contents.font.color = Color.new(255, 255, 255, 128)
  365.     rect = Rect.new(4, 0, self.contents.width - 8, 32)
  366.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  367.     self.contents.draw_text(rect, '无任何任务')
  368.   end
  369.   #--------------------------------------------------------------------------
  370.   # ● 获取任务
  371.   #--------------------------------------------------------------------------
  372.   def task
  373.     return @tasks[self.index]
  374.   end
  375. end
  376.   
  377. #==============================================================================
  378. # ■ Window_Task
  379. #------------------------------------------------------------------------------
  380. #  任务内容显示窗口。
  381. #==============================================================================

  382. class Window_Task < Window_Base
  383.   #--------------------------------------------------------------------------
  384.   # ● 初始化对像
  385.   #--------------------------------------------------------------------------
  386.   def initialize(task_id)
  387.     super(204, 0, 340, 416)
  388.     refresh(task_id)
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● 刷新内容
  392.   #--------------------------------------------------------------------------
  393.   def refresh(task_id)
  394.     self.oy = 0
  395.     self.visible = true
  396.     return if task_id.nil?
  397.     task = $game_party.tasks_info[task_id]
  398.     if !task.nil?
  399.       self.contents = Bitmap.new(self.width - 32, task.height)
  400.     else
  401.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  402.       return
  403.     end
  404.     self.contents.font.color = normal_color
  405.     # 描绘任务内容
  406.     draw_task_info(task)
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # ● 描绘任务内容
  410.   #--------------------------------------------------------------------------
  411.   def draw_task_info(task)
  412.     self.contents.font.color = normal_color
  413.     # 描绘任务简介
  414.     chenge_special_character(task.briefing.clone)
  415.   end
  416. end

  417. class Window_Base < Window
  418.   def chenge_special_character(text, x=0, y=0)
  419.     # 记录换行时y坐标最小加值
  420.     min_y = 0
  421.     # 限制文字处理
  422.     begin
  423.       last_text = text.clone
  424.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  425.     end until text == last_text
  426.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  427.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  428.     end
  429.     # 为了方便、将 "\\\\" 变换为 "\000"
  430.     text.gsub!(/\\\\/) { "\000" }
  431.     # "\C" 变为 "\001"
  432.     text.gsub!(/\\[Cc]\[([0-9a-zA-Z]+)\]/)  { "\001[#{$1}]" }
  433.     # "\I" 变为 "\002"
  434.     text.gsub!(/\\[Ii]/) { "\002" }
  435.     # "\P" 变为 "\003"
  436.     text.gsub!(/\\[Pp]/) { "\003" }
  437.     # c 获取 1 个字 (如果不能取得文字就循环)
  438.     while ((c = text.slice!(/./m)) != nil)
  439.       # \\ 的情况下
  440.       if c == "\000"
  441.         # 还原为本来的文字
  442.         c = "\\"
  443.       end
  444.       # \C[n] 的情況下
  445.       if c == "\001"
  446.         # 更改文字色
  447.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  448.         # 如果是设定RGB颜色
  449.         if $1[0,1]=="H"
  450.           # 先拷贝一下文字
  451.           c=$1.dup
  452.           # 分3段分别取出R,G,B颜色
  453.           c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")
  454.           # 设定文字颜色
  455.           self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))
  456.         else
  457.           color = $1.to_i
  458.           if color >= 0 and color <= 31
  459.             self.contents.font.color = text_color(color)
  460.           elsif color == 32
  461.             self.contents.font.color = disabled_color
  462.           elsif color == 33
  463.             self.contents.font.color = system_color
  464.           end
  465.         end
  466.         # 下面的文字
  467.         next
  468.       end
  469.       # 图标的情况下
  470.       if c == "\002"
  471.         icon_name = ''
  472.         while ((cha = text.slice!(/./m)) != ']')
  473.           next if cha == '['
  474.           icon_name += cha
  475.         end
  476.         if x + 24 > self.contents.width
  477.           x = 0
  478.           y += [WLH, min_y].max
  479.           min_y = 0
  480.         end
  481.         draw_icon(icon_name.to_i, x+4, y+4, true)
  482.         x += 28
  483.         next
  484.       end
  485.       # 图片的情况下
  486.       if c == "\003"
  487.         pic_name = ''
  488.         while ((cha = text.slice!(/./m)) != ']')
  489.           next if cha == '['
  490.           pic_name += cha
  491.         end
  492.         pic = Cache.picture(pic_name)
  493.         if x + pic.width > self.contents.width
  494.           x = 0
  495.           y += [WLH, min_y].max
  496.           min_y = 0
  497.         end
  498.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  499.         x += pic.width
  500.         min_y = [pic.height, WLH].max
  501.         next
  502.       end
  503.       # 另起一行文字的情况下
  504.       if c == "\n"
  505.         y += [WLH, min_y].max
  506.         min_y = 0
  507.         x = 0
  508.         # 下面的文字
  509.         next
  510.       end
  511.       # 自动换行处理
  512.       if x + self.contents.text_size(c).width > self.contents.width
  513.         y += [WLH, min_y].max
  514.         min_y = 0
  515.         x = 0
  516.       end
  517.       # 描绘文字
  518.       self.contents.draw_text(4 + x, y, 40, WLH, c)
  519.       # x 为要描绘文字的加法运算
  520.       x += self.contents.text_size(c).width
  521.     end
  522.   end
  523. end

  524. class Game_Party < Game_Unit
  525.   def item_no(n)
  526.     return item_number($data_items[n])
  527.   end
  528.   def weapon_no(n)
  529.     return item_number($data_weapons[n])
  530.   end
  531.   def armor_no(n)
  532.     return item_number($data_armors[n])
  533.   end
  534. end

  535. #==============================================================================
  536. # ■ Scene_Task
  537. #------------------------------------------------------------------------------
  538. #  处理任务画面的类。
  539. #==============================================================================

  540. class Scene_Task < Scene_Base
  541.   def initialize(index=nil)
  542.     @menu_index = index
  543.   end
  544.   #--------------------------------------------------------------------------
  545.   # ● 主处理
  546.   #--------------------------------------------------------------------------
  547.   def start
  548.     # 刷新任务资料
  549.     $game_party.get_tasks_info
  550.     # 生成任务名称窗口
  551.     @task_names_window = Window_Task_Name.new($game_party.current_tasks)
  552.     @task_names_window.active = true
  553.     if $game_party.current_tasks != []
  554.       @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)
  555.     end
  556.     # 生成任务内容窗口
  557.     @task_info_window = Window_Task.new($game_party.latest_task)
  558.     @task_info_window.active = true
  559.   end

  560.   def terminate
  561.     # 释放窗口
  562.     @task_names_window.dispose
  563.     @task_info_window.dispose
  564.   end
  565.   #--------------------------------------------------------------------------
  566.   # ● 刷新画面
  567.   #--------------------------------------------------------------------------
  568.   def update
  569.     # 刷新窗口
  570.     @task_names_window.update
  571.     @task_info_window.update
  572.     update_task_names_window
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ● 刷新任务名称窗口
  576.   #--------------------------------------------------------------------------
  577.   def update_task_names_window
  578.     # 按下 B 键的情况下
  579.     if Input.trigger?(Input::B)
  580.       # 演奏取消 SE
  581.       Sound.play_cancel
  582.       # 这里设置返回的场景,返回地图是Scene_Map.new,菜单是Scene_Menu.new(任务界面index)
  583.       if @menu_index == nil
  584.         $scene = Scene_Map.new
  585.       else
  586.         $scene = Scene_Menu.new(@menu_index)
  587.       end
  588.       return
  589.     end
  590.     # 按下 C 键的情况下
  591.     if Input.trigger?(Input::C)
  592.       # 无任务可显示的话
  593.       if @task_names_window.task == nil
  594.         # 演奏冻结 SE
  595.         Sound.play_buzzer
  596.         return
  597.       end
  598.       # 如果光标没有移动的话,翻页
  599.       if $game_party.latest_task == @task_names_window.task.id
  600.         if @task_info_window.oy + @task_info_window.height - 32 > @task_info_window.contents.height
  601.           @task_info_window.oy = 0
  602.         else
  603.           @task_info_window.oy += 480-32
  604.         end
  605.         
  606.       else
  607.         @task_info_window.refresh(@task_names_window.task.id)
  608.         $game_party.latest_task = @task_names_window.task.id
  609.         # 演奏确定 SE
  610.         Sound.play_decision
  611.       end
  612.     end
  613.   end
  614. end
复制代码
  1.   #--------------------------------------------------------------------------
  2.   # ● 设置任务资料
  3.   #--------------------------------------------------------------------------
  4.   def get_tasks_info
  5.     @tasks_info = [0]
  6.   #---------------------------------------------------
  7.    
  8.     名称 = "\\c[6]吃饭"
  9.    
  10.     简介 = "\\c[2]主线任务(不可放弃)

  11. \\c[3]任务目标:
  12. 回家

  13. \\c[6]提示:
  14. \\c[0]回家"
  15.     @tasks_info[1] = Game_Task.new(名称, 简介)
  16.   #----------------------------------------
  17.     名称 = "\\c[6]史莱姆的灾难"
  18.    
  19.     简介 = "\\c[2]主线任务(不可放弃)

  20. \\c[3]任务目标:
  21. 杀死30只史莱姆

  22. \\c[6]提示:
  23. \\c[0]史莱姆分布在野外平原。"
  24.     @tasks_info[2] = Game_Task.new(名称, 简介)
  25. end
  26. end
复制代码
设置任务资料以后。
  1. 脚本get_task(任务ID)
  2. 例如 get_task(1) 就是接受1号任务
复制代码
  1. 事件里的「脚本」指令输入:finish_task(任务ID)
  2. 例如 finish_task(1) 就是完成1号任务
复制代码
1号任务就是吃饭,2号任务就是史莱姆灾难。可以自己扩展。
如何扩展?
  1.   #----------------------------------------
  2.     名称 = "\\c[6]史莱姆的灾难"
  3.    
  4.     简介 = "\\c[2]主线任务(不可放弃)

  5. \\c[3]任务目标:
  6. 杀死30只史莱姆

  7. \\c[6]提示:
  8. \\c[0]史莱姆分布在野外平原。"
  9.     @tasks_info[2] = Game_Task.new(名称, 简介)
  10. end
  11. end
复制代码
end 前面加入
   名称 = "\\c[6]任务名称"
   
    简介 = "\\c[2]主线任务(不可放弃)

\\c[3]任务目标:


\\c[6]提示:
\\c[0]。"
    @tasks_info[下一个任务ID,不要和前面的重复] = Game_Task.new(名称, 简介)

这些都是可以自己调整的。
#----------------只是分化,可以要可以不要。


如何在菜单中加入任务这一个选项?
在脚本Scene_Menu中找到
  1.   #--------------------------------------------------------------------------
  2.   # ● 生成命令窗口
  3.   #--------------------------------------------------------------------------
  4.   def create_command_window
  5.     s1 = Vocab::item
  6.     s2 = Vocab::skill
  7.     s3 = Vocab::equip
  8.     s4 = Vocab::status
  9.     s5 = "任务"
  10.     s6 = Vocab::save
  11.     s7 = Vocab::game_end
  12.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
  13.     @command_window.index = @menu_index
  14.     if $game_party.members.size == 0          # 如果队伍为空
  15.       @command_window.draw_item(0, false)     # 无效化物品选项
  16.       @command_window.draw_item(1, false)     # 无效化技能选项
  17.       @command_window.draw_item(2, false)     # 无效化装备选项
  18.       @command_window.draw_item(3, false)     # 无效化状态选项
  19.     end
  20.     if $game_system.save_disabled             # 如果禁止存档
  21.       @command_window.draw_item(4, false)     # 无效化存档选项
  22.     end
  23.   end
复制代码
game_end代表结束游戏的菜单,最好放在最后面,即仿照这些把任务插入s5即可。
  1.    s1 = Vocab::item
  2.     s2 = Vocab::skill
  3.     s3 = Vocab::equip
  4.     s4 = Vocab::status
  5.     s5 = "任务"
  6.     s6 = Vocab::save
  7.     s7 = Vocab::game_end
  8.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])  
复制代码
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
这一栏记得加入s1s2s3补充完整,简单的说几个s就加到几。。。。

再找到
  1.   #--------------------------------------------------------------------------
  2.   # ● 更新命令窗口
  3.   #--------------------------------------------------------------------------
  4.   def update_command_selection
  5.     if Input.trigger?(Input::B)
  6.       Sound.play_cancel
  7.       $scene = Scene_Map.new
  8.     elsif Input.trigger?(Input::C)
  9.       if $game_party.members.size == 0 and @command_window.index < 4
  10.         Sound.play_buzzer
  11.         return
  12.       elsif $game_system.save_disabled and @command_window.index == 4
  13.         Sound.play_buzzer
  14.         return
  15.       end
  16.       Sound.play_decision
  17.       case @command_window.index
  18.       when 0      # 物品
  19.         $scene = Scene_Item.new
  20.       when 1,2,3  # 技能、装备、状态
  21.         start_actor_selection
  22.       when 4      #任务
  23.         $scene = Scene_Task.new(4)
  24.       when 5      # 存档
  25.         $scene = Scene_File.new(true, false, false)
  26.       when 6      # 结束游戏
  27.         $scene = Scene_End.new
  28.       end
  29.     end
  30.   end
复制代码
修改一下部分。加入。
RUBY 代码复制
  1. $scene = Scene_Task.new(4)

注意下,when几就是几……

最后保存。应该可以了。

评分

参与人数 1星屑 +240 收起 理由
Luciffer + 240 辛苦费,若问题解决呼我

查看全部评分

本人收不到提醒(点评|回复|@人),总之有事情到空间留言一起普通普通
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2012-9-23
帖子
30
5
 楼主| 发表于 2012-10-4 18:43:30 | 只看该作者
delv25 发表于 2012-10-4 18:36
设置任务资料以后。1号任务就是吃饭,2号任务就是史莱姆灾难。可以自己扩展。
如何扩展?end 前面加入
    ...

我想说的是,设置打怪的任务,打完后任务界面没有显示
回复 支持 反对

使用道具 举报

Lv3.寻梦者

伴侣:北岛谜烟

梦石
0
星屑
2967
在线时间
3547 小时
注册时间
2012-8-7
帖子
12181

贵宾

6
发表于 2012-10-4 18:46:06 | 只看该作者
vip54987 发表于 2012-10-4 18:43
我想说的是,设置打怪的任务,打完后任务界面没有显示

你确定调好了变量?
本人收不到提醒(点评|回复|@人),总之有事情到空间留言一起普通普通
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2012-9-23
帖子
30
7
 楼主| 发表于 2012-10-4 18:49:06 | 只看该作者
delv25 发表于 2012-10-4 18:46
你确定调好了变量?

我怎么调都不行
回复 支持 反对

使用道具 举报

Lv3.寻梦者

伴侣:北岛谜烟

梦石
0
星屑
2967
在线时间
3547 小时
注册时间
2012-8-7
帖子
12181

贵宾

8
发表于 2012-10-4 18:53:27 | 只看该作者
vip54987 发表于 2012-10-4 18:49
我怎么调都不行

你如何调的?
敌人队伍里,敌人HP低于XX时触发变量?
本人收不到提醒(点评|回复|@人),总之有事情到空间留言一起普通普通
回复 支持 反对

使用道具 举报

Lv3.寻梦者

伴侣:北岛谜烟

梦石
0
星屑
2967
在线时间
3547 小时
注册时间
2012-8-7
帖子
12181

贵宾

9
发表于 2012-10-4 18:58:27 | 只看该作者
vip54987 发表于 2012-10-4 18:49
我怎么调都不行

在敌人队伍里面。



这样?
本人收不到提醒(点评|回复|@人),总之有事情到空间留言一起普通普通
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2012-9-23
帖子
30
10
 楼主| 发表于 2012-10-4 18:59:31 | 只看该作者
delv25 发表于 2012-10-4 18:53
你如何调的?
敌人队伍里,敌人HP低于XX时触发变量?

将敌人打败,触发变量
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-28 04:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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