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

Project1

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

有关任务脚本

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1 小时
注册时间
2008-4-15
帖子
26
跳转到指定楼层
1
发表于 2008-5-9 20:37:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我用了叶子的这个任务系统的脚本,在获取1-7号任务的时候都很好用但是第8号任务却怎么都无法获得,我设置的任务变量都有变了,但任务列表却没有,我尝试把原来正常的1号任务改为8号,同样无法获得.改成9号也不可以,请问这个脚本难道只能支持7个任务?不会吧.....


  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. 顾名思义,就是显示任务资料的界面
  17. 任务资料要预先在这里设定好
  18. 下载范例工程,能帮助你更快更好地掌握使用方法
  19. --------------------------------------------------------------------------
  20. 使用方法:

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

  22. 可以在事件中的“脚本”指令加入这段东西,又或者修改 Scene_Menu 来增加一个显示
  23. 任务的选项。如果是修改 Scene_Menu 增加选项的话,在脚本倒数第30行左右,
  24. 把 $scene = Scene_Map.new 修改成 $scene = Scene_Menu.new(任务界面index)

  25. 2、设置任务资料

  26.   2.1、相关内容解析
  27.   
  28.   所有内容文字必须用双引号括住
  29.   
  30.   名称:任务的名字(显示在左边窗口中),大小为208×32,如果全部为文字的话,
  31.         够放九个全角字符
  32.         
  33.   简介:任务的介绍(显示在右边窗口中),宽368,高不限
  34.   
  35.         文字可以自动换行
  36.   
  37.    2.1.1、控制码解析
  38.    
  39.    名称和内容均可用控制码,注意两条反斜线都要打!
  40.    
  41.    \\v[n] 显示n号变量
  42.    \\c[n] 改变字体颜色。
  43.           n=1~7 时同“显示文章”的\c[n],n=8 时为半透明色,n=9 时为系统色(青色)
  44.    \\n[i] 显示i号角色名字
  45.    \\i[文件名] 显示图标
  46.    \\p[文件名] 显示图片
  47.    
  48.    2.1.2、高级:内嵌表达式
  49.         
  50.    请参考帮助-脚本入门-字符串-内嵌表达式相关内容。
  51.    它可以用来在任务的名称和简介那里显示变量。
  52.    常用的表达式(注意不要漏了井号和大括号):
  53.    #{$game_variables[n]}       ——插入n号变量的值
  54.    #{$game_party.item_number(n)}  ——插入持有n号物品数量
  55.                                       同理还有weapon_number,armor_number
  56.    还可以预先定义一个变量,再插入(例子见示例任务3-灵魂线)
  57.    
  58.   2.2、注意事项
  59.   
  60.    2.2.1、括号、逗号和双引号 [ ] , " 必须使用半角符号(英文输入),
  61.           引号内的内容则没有关系
  62.          
  63.    2.2.2、单引号 ' 和双引号 " 的区别:
  64.           为了不出错误,全部用双引号吧!当然如果你对Ruby很熟悉,那就没所谓了
  65.   
  66.   2.3、开始设置吧!
  67.   从107行开始设置任务资料,可以参考示例任务来设置,请仔细阅读附加讲解
  68.   
  69. 3、接受任务

  70. 事件里的“脚本”指令输入:get_task(任务ID)
  71. 例如 get_task(1) 就是接受1号任务

  72.   3.1、获得全部任务
  73.   
  74.   事件里的“脚本”指令输入:get_all_task
  75.   这个功能基本上是用来在编写好所有任务资料后测试排版的
  76.   

  77. 4、完成/删除任务

  78. 事件里的“脚本”指令输入:finish_task(任务ID)
  79. 例如 finish_task(1) 就是完成1号任务

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

  82.   4.1、删除全部任务
  83.   
  84.   事件里的“脚本”指令输入:finish_all_task
  85.   作为获得全部任务的对应功能存在,似乎不会怎么用到
  86. =end

  87. class Scene_Task
  88.   # 这里设置任务内容翻页音效
  89.   CHANGE_PAGE_SE = "Audio/SE/046-Book01"
  90. end

  91. class Game_Party
  92.   #--------------------------------------------------------------------------
  93.   # ● 设置任务资料
  94.   #--------------------------------------------------------------------------
  95.   def get_tasks_info
  96.     @tasks_info = []
  97.    
  98.     #-讲解-
  99.     # 三个示例任务由浅入深,其实只要看懂第一个就可以使用了。
  100.     # 任务的写法多种多样,不限于这三个任务的方法
  101.     #----
  102.     #-----------------------------
  103.     # 示例任务1:沙漠中的五叶花
  104.     #-----------------------------
  105.     名称 = "\\c[5]幼狮的怨念1(主线)"
  106.     #-讲解-
  107.     # 注意!脚本编辑器的变色功能并不是非常完善,所以换行后字变黑了,但仍然是字符
  108.     # 串的一部分,所以不要忘记在内容最后打一个双引号
  109.     # 按回车是强制换行
  110.     #----
  111.     简介 = "\\c[5]幼狮的怨念1(主线)

  112. \\c[9]任务目标:
  113. 去以诺的幼狮学院找一个叫年特的人,问他进入圣女学院的方法。


  114. "
  115.     #-讲解-
  116.     # 每个任务最后一定要加上:
  117.     # @tasks_info[任务ID] = Game_Task.new(名称, 简介)
  118.     # 接受任务和完成任务都是用这个任务ID来索引
  119.     #----
  120.     @tasks_info[1] = Game_Task.new(名称, 简介)
  121.    
  122.     #-----------------------------
  123.     # 示例任务2:克萝莉亚的药瓶
  124.     #-----------------------------
  125.     名称 = "\\c[6]拉利奥的请求"
  126.     #-讲解-
  127.     # 这里使用了字符串相加,例如 s = "a" + "b" ,s 就是 "ab"
  128.     # 还用了内嵌表达式,$game_party.item_number(38) 就是38号物品的数量
  129.     #----
  130.     简介 = 名称 + "
  131.    
  132. \\c[9]任务目标:
  133. 把拉利奥的信在5月24日之前送到范德尔手上!"
  134.     @tasks_info[2] = Game_Task.new(名称, 简介)
  135.    
  136.     名称 = "\\c[5]幼狮的怨念2(主线)"
  137.    
  138.     简介 = 名称 + "
  139.    
  140. \\c[9]任务目标:
  141. 去圣堂学院找圣堂骑士大流伊联系有关。。。呃,还是别说出来了!"
  142.     @tasks_info[3] = Game_Task.new(名称, 简介)
  143.    
  144.     名称 = "\\c[5]幼狮的怨念3(主线)"
  145.    
  146.     简介 = 名称 + "
  147.    
  148. \\c[9]任务目标:
  149. 把大流伊的好消息带给年特!"
  150.     @tasks_info[4] = Game_Task.new(名称, 简介)
  151.    
  152.         名称 = "\\c[5]幼狮的怨念4(主线)"
  153.    
  154.     简介 = 名称 + "
  155.    
  156. \\c[9]任务目标:
  157. 攻打圣女学院啦,在学院花园与年特回合。

  158. ps:\\N[3],我们来救你出来了"
  159.     @tasks_info[5] = Game_Task.new(名称, 简介)
  160.    
  161.             名称 = "\\c[5]幼狮的怨念5(主线)"
  162.    
  163.     简介 = 名称 + "
  164.    
  165. \\c[9]任务目标:
  166. 去把\\n[3]带出来!"
  167.     @tasks_info[6] = Game_Task.new(名称, 简介)
  168.    
  169.             名称 = "\\c[5]寻找可以回家的方法"
  170.    
  171.     简介 = 名称 + "
  172.    
  173. \\c[9]任务目标:
  174. 听说巴伐利亚很擅长空间魔法,去那里看看"
  175.     @tasks_info[7] = Game_Task.new(名称, 简介)
  176.    
  177. 名称 = "\\c[6]迷失的马德琳"
  178.    
  179.     简介 = 名称 + "
  180.    
  181. \\c[9]任务目标:
  182. 帮助迷路的小女孩马德琳找父母!"
  183.     @tasks_info[8] = Game_Task.new(名称, 简介)   

  184.   end
  185. end
  186.    
  187. #==============================================================================
  188. # ■ Interpreter
  189. #------------------------------------------------------------------------------
  190. #  执行事件命令的解释器。本类在 Game_System 类
  191. # 与 Game_Event 类的内部使用。
  192. #==============================================================================

  193. class Interpreter
  194.   #--------------------------------------------------------------------------
  195.   # ● 接受任务
  196.   #--------------------------------------------------------------------------
  197.   def get_task(id)
  198.     task = $game_party.tasks_info[id]
  199.     return true if (task.nil? or $game_party.current_tasks.include?(task.id))
  200.     $game_party.current_tasks.unshift(task.id)
  201.     return true
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ● 获得全部任务
  205.   #--------------------------------------------------------------------------
  206.   def get_all_task
  207.     # 清空当前任务
  208.     $game_party.current_tasks.clear
  209.     for task in $game_party.tasks_info
  210.       next if task.nil?
  211.       $game_party.current_tasks.unshift(task.id)
  212.     end
  213.     return true
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ● 完成/放弃任务
  217.   #--------------------------------------------------------------------------
  218.   def finish_task(id)
  219.     task = $game_party.tasks_info[id]
  220.     return true if task.nil?
  221.     $game_party.current_tasks.delete(task.id)
  222.     return true
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● 删除全部任务
  226.   #--------------------------------------------------------------------------
  227.   def finish_all_task
  228.     $game_party.current_tasks.clear
  229.     return true
  230.   end
  231. end

  232. #==============================================================================
  233. # ■ Game_Party
  234. #------------------------------------------------------------------------------
  235. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  236. # 请参考 $game_party。
  237. #==============================================================================

  238. class Game_Party
  239.   #--------------------------------------------------------------------------
  240.   # ● 定义实例变量
  241.   #--------------------------------------------------------------------------
  242.   attr_writer     :latest_task                  # 上次查看的任务
  243.   #--------------------------------------------------------------------------
  244.   # ● 取得任务资料
  245.   #--------------------------------------------------------------------------
  246.   def tasks_info
  247.     if @tasks_info.nil?
  248.       get_tasks_info
  249.     end
  250.     return @tasks_info
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ● 取得当前任务
  254.   #--------------------------------------------------------------------------
  255.   def current_tasks
  256.     if @current_tasks.nil?
  257.       @current_tasks = []
  258.     end
  259.     return @current_tasks
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● 上次查看的任务
  263.   #--------------------------------------------------------------------------
  264.   def latest_task
  265.     if !current_tasks.include?(@latest_task)
  266.       @latest_task = current_tasks[0]
  267.     end
  268.     return @latest_task
  269.   end
  270. end

  271. #==============================================================================
  272. # ■ Game_Task
  273. #------------------------------------------------------------------------------
  274. #  处理任务的类。包含任务的信息。
  275. #==============================================================================

  276. class Game_Task
  277.   attr_accessor   :name                   # 名称
  278.   attr_accessor   :briefing               # 简介
  279.   def initialize(name, briefing)
  280.     @name = name
  281.     @briefing = briefing
  282.   end
  283.   def height
  284.     text = @briefing.clone
  285.     x = 0
  286.     y = 64
  287.     min_y = 0
  288.     # 限制文字处理
  289.     begin
  290.       last_text = text.clone
  291.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  292.     end until text == last_text
  293.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  294.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  295.     end
  296.     # 为了方便、将 "\\\\" 变换为 "\000"
  297.     text.gsub!(/\\\\/) { "\000" }
  298.     # "\C" 变为 "\001"
  299.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  300.     # "\I" 变为 "\002"
  301.     text.gsub!(/\\[Ii]/) { "\002" }
  302.     # "\P" 变为 "\003"
  303.     text.gsub!(/\\[Pp]/) { "\003" }
  304.     # c 获取 1 个字 (如果不能取得文字就循环)
  305.     while ((c = text.slice!(/./m)) != nil)
  306.       # \\ 的情况下
  307.       if c == "\000"
  308.         # 还原为本来的文字
  309.         c = "\\"
  310.       end
  311.       # \C[n] 的情况下
  312.       if c == "\001"
  313.         # 更改文字色
  314.         text.sub!(/\[([0-9]+)\]/, "")
  315.         # 下面的文字
  316.         next
  317.       end
  318.       # 图标的情况下
  319.       if c == "\002"
  320.         icon_name = ''
  321.         while ((cha = text.slice!(/./m)) != ']')
  322.           next if cha == '['
  323.           icon_name += cha
  324.         end
  325.         icon = RPG::Cache.icon(icon_name)
  326.         if x + icon.width > 368
  327.           x = 0
  328.           y += [32, min_y].max
  329.           min_y = 0
  330.         end
  331.         x += 28
  332.         next
  333.       end
  334.       # 图片的情况下
  335.       if c == "\003"
  336.         pic_name = ''
  337.         while ((cha = text.slice!(/./m)) != ']')
  338.           next if cha == '['
  339.           pic_name += cha
  340.         end
  341.         pic = RPG::Cache.picture(pic_name)
  342.         if x + pic.width > 368
  343.           x = 0
  344.           y += [32, min_y].max
  345.           min_y = 0
  346.         end
  347.         x += pic.width
  348.         min_y = [pic.height, 32].max
  349.         next
  350.       end
  351.       # 另起一行文字的情况下
  352.       if c == "\n"
  353.         y += [32, min_y].max
  354.         min_y = 0
  355.         x = 0
  356.         # 下面的文字
  357.         next
  358.       end
  359.       # 自动换行处理
  360.       if x + 22 > 368
  361.         y += [32, min_y].max
  362.         min_y = 0
  363.         x = 0
  364.       end
  365.       # x 为要描绘文字的加法运算
  366.       x += 22
  367.     end
  368.     return (y + [32, min_y].max)
  369.   end
  370.   def id
  371.     return $game_party.tasks_info.index(self)
  372.   end
  373. end

  374. #==============================================================================
  375. # ■ Window_Task_Name
  376. #------------------------------------------------------------------------------
  377. #  任务名称显示窗口。
  378. #==============================================================================

  379. class Window_Task_Name < Window_Selectable
  380.   #--------------------------------------------------------------------------
  381.   # ● 初始化对像
  382.   #--------------------------------------------------------------------------
  383.   def initialize(tasks)
  384.     super(0, 0, 240, 480)
  385.     @tasks = []
  386.     for id in tasks
  387.       @tasks.push($game_party.tasks_info[id])
  388.     end
  389.     @item_max = tasks.size
  390.     self.contents = Bitmap.new(
  391.     self.width - 32, @item_max == 0 ? 32 : @item_max * 32)
  392.     refresh
  393.     self.index = 0
  394.   end
  395.   #--------------------------------------------------------------------------
  396.   # ● 刷新
  397.   #--------------------------------------------------------------------------
  398.   def refresh
  399.     self.contents.clear
  400.     if @tasks != []
  401.       for task in @tasks
  402.         draw_item(task)
  403.       end
  404.     else
  405.       draw_blank
  406.     end
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # ● 描绘项目
  410.   #--------------------------------------------------------------------------
  411.   def draw_item(task)
  412.     text = task.name.clone
  413.     x = 0
  414.     y = @tasks.index(task) * 32
  415.     # 限制文字处理
  416.     begin
  417.       last_text = text.clone
  418.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  419.     end until text == last_text
  420.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  421.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  422.     end
  423.     # 为了方便、将 "\\\\" 变换为 "\000"
  424.     text.gsub!(/\\\\/) { "\000" }
  425.     # "\\C" 变为 "\001"
  426.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  427.     # "\I" 变为 "\002"
  428.     text.gsub!(/\\[Ii]/) { "\002" }
  429.     # "\P" 变为 "\003"
  430.     text.gsub!(/\\[Pp]/) { "\003" }
  431.     # c 获取 1 个字 (如果不能取得文字就循环)
  432.     while ((c = text.slice!(/./m)) != nil)
  433.       # \\ 的情况下
  434.       if c == "\000"
  435.         # 还原为本来的文字
  436.         c = "\\"
  437.       end
  438.       # \C[n] 的情况下
  439.       if c == "\001"
  440.         # 更改文字色
  441.         text.sub!(/\[([0-9]+)\]/, "")
  442.         color = $1.to_i
  443.         if color >= 0 and color <= 7
  444.           self.contents.font.color = text_color(color)
  445.         elsif color == 8
  446.           self.contents.font.color = disabled_color
  447.         elsif color == 9
  448.           self.contents.font.color = system_color
  449.         end
  450.         # 下面的文字
  451.         next
  452.       end
  453.       # 图标的情况下
  454.       if c == "\002"
  455.         icon_name = ''
  456.         while ((cha = text.slice!(/./m)) != ']')
  457.           next if cha == '['
  458.           icon_name += cha
  459.         end
  460.         icon = RPG::Cache.icon(icon_name)
  461.         if x + icon.width > self.contents.width
  462.           x = 0
  463.           y += [32, min_y].max
  464.           min_y = 0
  465.         end
  466.         self.contents.blt(x + 4, y + 4, icon, Rect.new(0, 0, 24, 24))
  467.         x += 28
  468.         next
  469.       end
  470.       # 图片的情况下
  471.       if c == "\003"
  472.         pic_name = ''
  473.         while ((cha = text.slice!(/./m)) != ']')
  474.           next if cha == '['
  475.           pic_name += cha
  476.         end
  477.         pic = RPG::Cache.picture(pic_name)
  478.         if x + pic.width > self.contents.width
  479.           x = 0
  480.           y += [32, min_y].max
  481.           min_y = 0
  482.         end
  483.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  484.         x += pic.width
  485.         next
  486.       end
  487.       # 描绘文字
  488.       self.contents.draw_text(4 + x, y, 40, 32, c)
  489.       # x 为要描绘文字的加法运算
  490.       x += self.contents.text_size(c).width
  491.     end
  492.   end
  493.   #--------------------------------------------------------------------------
  494.   # ● 描绘空行
  495.   #--------------------------------------------------------------------------
  496.   def draw_blank
  497.     self.contents.font.color = disabled_color
  498.     rect = Rect.new(4, 0, self.contents.width - 8, 32)
  499.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  500.     self.contents.draw_text(rect, '当前没有任何任务')
  501.   end
  502.   #--------------------------------------------------------------------------
  503.   # ● 获取任务
  504.   #--------------------------------------------------------------------------
  505.   def task
  506.     return @tasks[self.index]
  507.   end
  508. end
  509.   
  510. #==============================================================================
  511. # ■ Window_Task
  512. #------------------------------------------------------------------------------
  513. #  任务内容显示窗口。
  514. #==============================================================================

  515. class Window_Task < Window_Base
  516.   #--------------------------------------------------------------------------
  517.   # ● 初始化对像
  518.   #--------------------------------------------------------------------------
  519.   def initialize(task_id)
  520.     super(240, 0, 400, 480)
  521.     refresh(task_id)
  522.   end
  523.   #--------------------------------------------------------------------------
  524.   # ● 刷新内容
  525.   #--------------------------------------------------------------------------
  526.   def refresh(task_id)
  527.     self.oy = 0
  528.     self.visible = true
  529.     return if task_id.nil?
  530.     task = $game_party.tasks_info[task_id]
  531.     if !task.nil?
  532.       self.contents = Bitmap.new(self.width - 32, task.height)
  533.     else
  534.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  535.       return
  536.     end
  537.     self.contents.font.color = normal_color
  538.     # 描绘任务内容
  539.     draw_task_info(task)
  540.   end
  541.   #--------------------------------------------------------------------------
  542.   # ● 描绘任务内容
  543.   #--------------------------------------------------------------------------
  544.   def draw_task_info(task)
  545.     # 记录文字x坐标
  546.     x = 0
  547.     # 记录文字y坐标
  548.     y = 0
  549.     # 记录换行时y坐标最小加值
  550.     min_y = 0
  551.     self.contents.font.color = normal_color
  552.     # 描绘任务简介
  553.     text = task.briefing.clone
  554.     # 限制文字处理
  555.     begin
  556.       last_text = text.clone
  557.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  558.     end until text == last_text
  559.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  560.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  561.     end
  562.     # 为了方便、将 "\\\\" 变换为 "\000"
  563.     text.gsub!(/\\\\/) { "\000" }
  564.     # "\C" 变为 "\001"
  565.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  566.     # "\I" 变为 "\002"
  567.     text.gsub!(/\\[Ii]/) { "\002" }
  568.     # "\P" 变为 "\003"
  569.     text.gsub!(/\\[Pp]/) { "\003" }
  570.     # c 获取 1 个字 (如果不能取得文字就循环)
  571.     while ((c = text.slice!(/./m)) != nil)
  572.       # \\ 的情况下
  573.       if c == "\000"
  574.         # 还原为本来的文字
  575.         c = "\\"
  576.       end
  577.       # \C[n] 的情况下
  578.       if c == "\001"
  579.         # 更改文字色
  580.         text.sub!(/\[([0-9]+)\]/, "")
  581.         color = $1.to_i
  582.         if color >= 0 and color <= 7
  583.           self.contents.font.color = text_color(color)
  584.         elsif color == 8
  585.           self.contents.font.color = disabled_color
  586.         elsif color == 9
  587.           self.contents.font.color = system_color
  588.         end
  589.         # 下面的文字
  590.         next
  591.       end
  592.       # 图标的情况下
  593.       if c == "\002"
  594.         icon_name = ''
  595.         while ((cha = text.slice!(/./m)) != ']')
  596.           next if cha == '['
  597.           icon_name += cha
  598.         end
  599.         icon = RPG::Cache.icon(icon_name)
  600.         if x + icon.width > self.contents.width
  601.           x = 0
  602.           y += [32, min_y].max
  603.           min_y = 0
  604.         end
  605.         self.contents.blt(x + 4, y + 4, icon, Rect.new(0, 0, 24, 24))
  606.         x += 28
  607.         next
  608.       end
  609.       # 图片的情况下
  610.       if c == "\003"
  611.         pic_name = ''
  612.         while ((cha = text.slice!(/./m)) != ']')
  613.           next if cha == '['
  614.           pic_name += cha
  615.         end
  616.         pic = RPG::Cache.picture(pic_name)
  617.         if x + pic.width > self.contents.width
  618.           x = 0
  619.           y += [32, min_y].max
  620.           min_y = 0
  621.         end
  622.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  623.         x += pic.width
  624.         min_y = [pic.height, 32].max
  625.         next
  626.       end
  627.       # 另起一行文字的情况下
  628.       if c == "\n"
  629.         y += [32, min_y].max
  630.         min_y = 0
  631.         x = 0
  632.         # 下面的文字
  633.         next
  634.       end
  635.       # 自动换行处理
  636.       if x + self.contents.text_size(c).width > self.contents.width
  637.         y += [32, min_y].max
  638.         min_y = 0
  639.         x = 0
  640.       end
  641.       # 描绘文字
  642.       self.contents.draw_text(4 + x, y, 40, 32, c)
  643.       # x 为要描绘文字的加法运算
  644.       x += self.contents.text_size(c).width
  645.     end
  646.   end
  647. end

  648. #==============================================================================
  649. # ■ Scene_Task
  650. #------------------------------------------------------------------------------
  651. #  处理任务画面的类。
  652. #==============================================================================

  653. class Scene_Task
  654.   #--------------------------------------------------------------------------
  655.   # ● 主处理
  656.   #--------------------------------------------------------------------------
  657.   def main
  658.     # 刷新任务资料
  659.     $game_party.get_tasks_info
  660.     # 生成任务名称窗口
  661.     @task_names_window = Window_Task_Name.new($game_party.current_tasks)
  662.     @task_names_window.active = true
  663.     if $game_party.current_tasks != []
  664.       @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)
  665.     end
  666.     # 生成任务内容窗口
  667.     @task_info_window = Window_Task.new($game_party.latest_task)
  668.     @task_info_window.active = true
  669.     # 执行过渡
  670.     Graphics.transition
  671.     # 主循环
  672.     loop do
  673.       # 刷新游戏画面
  674.       Graphics.update
  675.       # 刷新输入信息
  676.       Input.update
  677.       # 刷新画面
  678.       update
  679.       # 如果画面被切换的话就中断循环
  680.       if $scene != self
  681.         break
  682.       end
  683.     end
  684.     # 准备过渡
  685.     Graphics.freeze
  686.     # 释放窗口
  687.     @task_names_window.dispose
  688.     @task_info_window.dispose
  689.   end
  690.   #--------------------------------------------------------------------------
  691.   # ● 刷新画面
  692.   #--------------------------------------------------------------------------
  693.   def update
  694.     # 刷新窗口
  695.     @task_names_window.update
  696.     @task_info_window.update
  697.     update_task_names_window
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● 刷新任务名称窗口
  701.   #--------------------------------------------------------------------------
  702.   def update_task_names_window
  703.     # 按下 B 键的情况下
  704.     if Input.trigger?(Input::B)
  705.       # 演奏取消 SE
  706.       $game_system.se_play($data_system.cancel_se)
  707.       # 这里设置返回的场景,返回地图是Scene_Map.new,菜单是Scene_Menu.new(任务界面index)
  708.       $scene = Scene_Map.new
  709.       return
  710.     end
  711.     # 按下 C 键的情况下
  712.     if Input.trigger?(Input::C)
  713.       # 无任务可显示的话
  714.       if @task_names_window.task == nil
  715.         # 演奏冻结 SE
  716.         $game_system.se_play($data_system.buzzer_se)
  717.         return
  718.       end
  719.       # 如果光标没有移动的话,翻页
  720.       if $game_party.latest_task == @task_names_window.task.id
  721.         if @task_info_window.oy + @task_info_window.height - 32 > @task_info_window.contents.height
  722.           @task_info_window.oy = 0
  723.         else
  724.           @task_info_window.oy += 480-32
  725.         end
  726.         if @task_info_window.contents.height > @task_info_window.height - 32
  727.           # 演奏翻页 SE
  728.           Audio.se_play(CHANGE_PAGE_SE)
  729.         end
  730.       else
  731.         @task_info_window.refresh(@task_names_window.task.id)
  732.         $game_party.latest_task = @task_names_window.task.id
  733.         # 演奏确定 SE
  734.         $game_system.se_play($data_system.decision_se)
  735.       end
  736.     end
  737.   end
  738. end
复制代码

版务信息:本贴由楼主自主结贴~

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8481
在线时间
94 小时
注册时间
2006-12-11
帖子
3156

第2届TG大赛亚军

2
发表于 2008-5-9 20:42:45 | 只看该作者
应该不会的……
有截图吗
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1 小时
注册时间
2008-4-15
帖子
26
3
 楼主| 发表于 2008-5-9 20:57:11 | 只看该作者
我给图吧,刚刚把1号任务改成8号,在接第一个任务的地方也做了修改,是正常了说明接8号任务是没问题的,那就是我这个接8号任务的NPC设置有问题(或者脚本对8号任务的设置有问题)但我自己找不出来哦,麻烦大家帮看看了


回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

4
发表于 2008-5-9 20:57:14 | 只看该作者
默认工程测试可行啊……{/fd}
仔细检查一下你的任务设置和其他脚本,应该不会有这问题……

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1 小时
注册时间
2008-4-15
帖子
26
5
 楼主| 发表于 2008-5-9 21:03:54 | 只看该作者
情况我很不理解哦,我用默认工程测试也没问题,那只能是NPC设的不对了.
但基本上只要有句get_task(8)就应该么问题的啊?

把那个NPC拷到默认工程再测试也么问题!
大家能不能给个建议,可能是哪里不对了?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

6
发表于 2008-5-9 21:14:35 | 只看该作者
看到你的npc有三个事件页,会不会是触发了后面的事件页呢?- -
实在不行就上传工程吧……

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1 小时
注册时间
2008-4-15
帖子
26
7
 楼主| 发表于 2008-5-9 21:16:56 | 只看该作者
这个这个,我刚把游戏从头测试了一边发现正常了........先谢谢大家,不过我还是想知道到底哪里错了会出这种问题啊?
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
49
在线时间
15 小时
注册时间
2008-4-8
帖子
357
8
发表于 2008-5-9 21:25:56 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-27 20:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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