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

Project1

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

[已经解决] 任务脚本求修改BUG

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1083
在线时间
140 小时
注册时间
2019-5-12
帖子
57
跳转到指定楼层
1
发表于 2019-8-28 17:12:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
100星屑
本帖最后由 真の玛娜君 于 2019-8-28 17:17 编辑

求修改该脚本的BUG
超过初始屏幕的任务名无论未完成还是已完成都不显示,已知修改分辨率可以让该脚本能显示更多任务,但没什么用。
已我那连新手都不算的脚本功底,只会让任务名都不显示
RUBY 代码复制
  1. =begin
  2. 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
  3. 完成任务:$game_party.finish_task(领取任务时设定的数字)
  4. 对已有任务追加说明:$game_party.add_task(任务编号,任务追加描述)
  5.  
  6. 如:
  7. 前面有事件$game_party.get_task(1,"测试","只是测试")
  8.  
  9. 此时任务1的说明为
  10.  
  11. >只是测试
  12.  
  13. 后面完成任务的脚本就是$game_party.finish_task(1)
  14.  
  15. 追加说明$game_party.add_task(1,"真的只是测试哦")
  16.  
  17. 此时任务1的说明为:
  18. >只是测试
  19. >真的只是测试哦
  20.  
  21. 召唤任务界面:SceneManager.call(Scene_Task)
  22.  
  23. 该脚本来自66rpg,发布者:韩云溪
  24. 改进:工藤由纪(论坛ID:zyyczp)
  25. =end
  26.  
  27. #===========================================================
  28. #●任务系统
  29. #===========================================================
  30. class Task
  31.   attr_reader :desc
  32.   attr_reader :finished
  33.   def initialize(origin_name,desc)
  34.     @origin_name = origin_name
  35.     @desc = desc
  36.     @finished = false
  37.   end
  38.   def name
  39.     if @finished
  40.       return @origin_name + "(完成)"
  41.     else
  42.       return @origin_name
  43.     end
  44.   end
  45.   def desc=(desc)
  46.     @desc = desc
  47.   end
  48.  
  49.   def finish
  50.     @finished = true
  51.   end
  52.  
  53. end
  54.  
  55. class Game_Party < Game_Unit
  56.   alias old_init initialize
  57.   def initialize
  58.     old_init
  59.     @tasks = {}
  60.   end
  61.   def add_task(i,desc)
  62.     @tasks[i].desc = @tasks[i].desc + "\n" + desc
  63.   end
  64.   def get_task(i,name,desc)
  65.     @tasks[i]=Task.new(name,desc)
  66.   end
  67.   def have_task?(i)
  68.     @tasks[i] != nil
  69.   end
  70.   def finish_task(i)
  71.     @tasks[i].finish if have_task?(i)
  72.   end
  73.   def unfinished_tasks
  74.     n = []
  75.     for i in @tasks.values
  76.       next if i.finished
  77.       n.push(i)
  78.     end
  79.     return n
  80.   end
  81.   def finished_tasks
  82.     n = []
  83.     for i in @tasks.values
  84.       next unless i.finished
  85.       n.push(i)
  86.     end
  87.     return n
  88.   end
  89. end
  90.  
  91. class Window_Task_Type < Window_HorzCommand
  92.   #--------------------------------------------------------------------------
  93.   # ● 对象初始化
  94.   #--------------------------------------------------------------------------
  95.   def initialize
  96.     super(0, 0)
  97.     activate
  98.   end
  99.   def window_width
  100.     return Graphics.width
  101.   end
  102.   def col_max
  103.     return 3
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 创建命令列表
  107.   #--------------------------------------------------------------------------
  108.   def make_command_list
  109.     add_command("未完成任务",  :unfinished_task)
  110.     add_command("已完成任务", :finished_task)
  111.     add_command("取消", :cancel)
  112.   end
  113. end
  114.  
  115. class Window_TaskLeft < Window_Selectable
  116.   attr_reader :finished
  117.   def initialize
  118.     super(0,48,160,Graphics.height - 48)
  119.     create_contents
  120.     @finished = false
  121.     @index = 0
  122.     refresh
  123.     deactivate
  124.   end
  125.   def set_finish(finish)
  126.     @finished = finish
  127.     set_item_max
  128.   end
  129.   def item_max
  130.     return @item_max != nil ? @item_max : 0
  131.   end
  132.   def set_item_max
  133.     if @finished
  134.       @item_max = $game_party.finished_tasks.size
  135.     else
  136.       @item_max = $game_party.unfinished_tasks.size
  137.     end
  138.   end
  139.  
  140.   def refresh
  141.     set_item_max
  142.     super
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 项目的描画
  146.   #--------------------------------------------------------------------------
  147.   def draw_item(index)
  148.     text = ""
  149.     unless @finished
  150.       if $game_party.unfinished_tasks[index] != nil
  151.         text = $game_party.unfinished_tasks[index].name
  152.       end
  153.     else
  154.       if $game_party.finished_tasks[index] != nil
  155.         text = $game_party.finished_tasks[index].name  
  156.       end
  157.     end
  158.     draw_text(item_rect_for_text(index), text)
  159.   end
  160. end
  161.  
  162. class Window_TaskRight < Window_Base
  163.   attr_reader :left_index
  164.   def initialize
  165.     super(160,48,Graphics.width - 160,Graphics.height - 48)
  166.     create_contents
  167.     @left_index = 0
  168.     @finished = false
  169.     refresh
  170.   end
  171.   def set_index(i)
  172.     @left_index = i
  173.     refresh
  174.   end
  175.   def set_finish(i)
  176.     @finished = i
  177.   end
  178.  
  179.   def refresh
  180.     contents.clear
  181.     draw_desc
  182.   end
  183.   def draw_desc
  184.     if @finished
  185.       if $game_party.finished_tasks[@left_index] != nil
  186.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  187.       end
  188.     else
  189.       if $game_party.unfinished_tasks[@left_index] != nil
  190.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  191.       end
  192.     end
  193.   end
  194.  
  195. end
  196.  
  197. class Scene_Task < Scene_Base
  198.   def start
  199.     super
  200.     create_task_type_window
  201.     create_left_window
  202.     create_right_window
  203.   end
  204.   def update
  205.     super
  206.     if @left_window.active
  207.       if Input.trigger?(:B)
  208.         @left_window.deactivate
  209.         @task_type_window.activate
  210.       end
  211.       if Input.trigger?(:UP) || Input.trigger?(:DOWN)
  212.         @right_window.set_finish(@left_window.finished)
  213.         @right_window.set_index(@left_window.index)
  214.       end
  215.     end
  216.   end
  217.  
  218.   def terminate
  219.     super
  220.   end
  221.   def create_task_type_window
  222.     @task_type_window = Window_Task_Type.new
  223.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  224.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  225.     @task_type_window.set_handler(:cancel,method(:return_scene))
  226.   end
  227.   def create_left_window
  228.     @left_window = Window_TaskLeft.new
  229.     @left_window.set_finish(false)
  230.     @left_window.refresh
  231.   end
  232.   def create_right_window
  233.     @right_window = Window_TaskRight.new
  234.     @right_window.refresh
  235.   end
  236. def view_unfinished_task
  237.     @left_window.set_finish(false)
  238.     @left_window.select(0)
  239.     @left_window.refresh
  240.     @left_window.activate
  241.     @task_type_window.deactivate
  242.     @right_window.set_finish(false)
  243.     @right_window.set_index(@left_window.index)
  244.   end
  245.   def view_finished_task
  246.     @left_window.set_finish(true)
  247.     @left_window.select(0)
  248.     @left_window.refresh
  249.     @left_window.activate
  250.     @task_type_window.deactivate
  251.     @right_window.set_finish(true)
  252.     @right_window.set_index(@left_window.index)
  253.   end
  254.  
  255. end

QQ图片20190828171545.png (72.39 KB, 下载次数: 24)

QQ图片20190828171545.png

QQ图片20190828171608.png (71.31 KB, 下载次数: 18)

QQ图片20190828171608.png

最佳答案

查看完整内容

看过好几个同样的求助,帮你在本版搜了一下“任务”关键字: 【求助】任务脚本第二页不显示任务名字 http://rpg.blue/forum.php?mod=viewthread&tid=408271&fromuid=2635781 韩云溪大大的任务脚本出点问题。。求助。。 http://rpg.blue/forum.php?mod=viewthread&tid=378317&fromuid=2635781 上面这两个帖的解法不同。 我也没用过所以不知道具体的情况? 请自行尝试⋯⋯ 以及可能存在的另一个bug(看帖子里的bug2): 求修复va ...

Lv5.捕梦者 (暗夜天使)

梦石
1
星屑
20306
在线时间
4876 小时
注册时间
2014-12-22
帖子
1525

开拓者

2
发表于 2019-8-28 17:12:32 | 只看该作者
本帖最后由 shencao 于 2019-8-28 23:18 编辑

看过好几个同样的求助,帮你在本版搜了一下“任务”关键字:

【求助】任务脚本第二页不显示任务名字
http://rpg.blue/forum.php?mod=vi ... amp;fromuid=2635781
韩云溪大大的任务脚本出点问题。。求助。。
http://rpg.blue/forum.php?mod=vi ... amp;fromuid=2635781

上面这两个帖的解法不同。
我也没用过所以不知道具体的情况?
请自行尝试⋯⋯

以及可能存在的另一个bug(看帖子里的bug2):
求修复va任务系统的BUG
http://rpg.blue/forum.php?mod=vi ... amp;fromuid=2635781
(*我不知道是不是同一个脚本,没逐行对比过。看出的问题挺像是同一个)

评分

参与人数 1+1 收起 理由
真の玛娜君 + 1 sorry

查看全部评分

回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1083
在线时间
140 小时
注册时间
2019-5-12
帖子
57
3
 楼主| 发表于 2019-8-29 00:32:28 | 只看该作者
shencao 发表于 2019-8-28 23:16
看过好几个同样的求助,帮你在本版搜了一下“任务”关键字:

【求助】任务脚本第二页不显示任务名字

只有第一个似乎有用,但是我一点脚本都不懂...
[将某个窗口的父类Window_Selectable改为Window_Command。
再调节其他的参数即可修正。
这是默认VA的一个常见Bug。]
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1083
在线时间
140 小时
注册时间
2019-5-12
帖子
57
4
 楼主| 发表于 2019-8-29 00:46:36 | 只看该作者
shencao 发表于 2019-8-28 23:16
看过好几个同样的求助,帮你在本版搜了一下“任务”关键字:

【求助】任务脚本第二页不显示任务名字

抱歉,看错了...第二个是有正确答案的,因为正确答案上面有人贴一个只解决了另一个BUG的修复方法,所以搞错了。

点评

解决就好啦~~~  发表于 2019-8-29 09:23
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1083
在线时间
140 小时
注册时间
2019-5-12
帖子
57
5
 楼主| 发表于 2019-8-29 00:51:42 | 只看该作者
贴一下修复版(两个BUG都修正完毕的版本)
  1. =begin
  2. 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
  3. 完成任务:$game_party.finish_task(领取任务时设定的数字)
  4. 对已有任务追加说明:$game_party.add_task(任务编号,任务追加描述)

  5. 如:
  6. 前面有事件$game_party.get_task(1,"测试","只是测试")

  7. 此时任务1的说明为

  8. >只是测试

  9. 后面完成任务的脚本就是$game_party.finish_task(1)

  10. 追加说明$game_party.add_task(1,"真的只是测试哦")

  11. 此时任务1的说明为:
  12. >只是测试
  13. >真的只是测试哦

  14. 召唤任务界面:SceneManager.call(Scene_Task)

  15. 该脚本来自66rpg,发布者:韩云溪
  16. 改进:工藤由纪(论坛ID:zyyczp)
  17. =end


  18. #===========================================================
  19. #●任务系统
  20. #===========================================================
  21. class Task
  22.   attr_reader :desc
  23.   attr_reader :finished
  24.   def initialize(origin_name,desc)
  25.     @origin_name = origin_name
  26.     @desc = desc
  27.     @finished = false
  28.   end
  29.   def name
  30.     if @finished
  31.       return @origin_name + "(完成)"
  32.     else
  33.       return @origin_name
  34.     end
  35.   end
  36.   def desc=(desc)
  37.     @desc = desc
  38.   end

  39.   def finish
  40.     @finished = true
  41.   end

  42. end

  43. class Game_Party < Game_Unit
  44.   alias old_init initialize
  45.   def initialize
  46.     old_init
  47.     @tasks = {}
  48.   end
  49.   def add_task(i,desc)
  50.     @tasks[i].desc = @tasks[i].desc + "\n" + desc
  51.   end
  52.   def get_task(i,name,desc)
  53.     @tasks[i]=Task.new(name,desc)
  54.   end
  55.   def have_task?(i)
  56.     @tasks[i] != nil
  57.   end
  58.   def finish_task(i)
  59.     @tasks[i].finish if have_task?(i)
  60.   end
  61.   def unfinished_tasks
  62.     n = []
  63.     for i in @tasks.values
  64.       next if i.finished
  65.       n.push(i)
  66.     end
  67.     return n
  68.   end
  69.   def finished_tasks
  70.     n = []
  71.     for i in @tasks.values
  72.       next unless i.finished
  73.       n.push(i)
  74.     end
  75.     return n
  76.   end
  77. end

  78. class Window_Task_Type < Window_HorzCommand
  79.   #--------------------------------------------------------------------------
  80.   # ● 对象初始化
  81.   #--------------------------------------------------------------------------
  82.   def initialize
  83.     super(0, 0)
  84.     activate
  85.   end
  86.   def window_width
  87.     return Graphics.width
  88.   end
  89.   def col_max
  90.     return 3
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 创建命令列表
  94.   #--------------------------------------------------------------------------
  95.   def make_command_list
  96.     add_command("未完成任务",  :unfinished_task)
  97.     add_command("已完成任务", :finished_task)
  98.     add_command("取消", :cancel)
  99.   end
  100. end

  101. #========================================================
  102. # * 任务界面左边的纵向选项区域
  103. #========================================================
  104. class Window_TaskLeft < Window_Selectable
  105.   attr_reader :finished
  106.   def initialize
  107.     super(0,48,160,Graphics.height - 48)
  108.     create_contents
  109.     @finished = false
  110.     @index = 0
  111.     refresh
  112.     deactivate
  113.   end
  114.   def set_finish(finish)
  115.     @finished = finish
  116.     set_item_max
  117.   end
  118.   def item_max
  119.     return @item_max != nil ? @item_max : 0
  120.   end
  121.   def set_item_max
  122.     if @finished
  123.       @item_max = $game_party.finished_tasks.size
  124.     else
  125.       @item_max = $game_party.unfinished_tasks.size
  126.     end
  127.   end

  128.   def refresh
  129.     set_item_max
  130.     create_contents
  131.     draw_all_items
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 项目的描画
  135.   #--------------------------------------------------------------------------
  136.   def draw_item(index)
  137.     text = ""
  138.     unless @finished
  139.       if $game_party.unfinished_tasks[index] != nil
  140.         text = $game_party.unfinished_tasks[index].name
  141.       end
  142.     else
  143.       if $game_party.finished_tasks[index] != nil
  144.         text = $game_party.finished_tasks[index].name  
  145.       end
  146.     end
  147.     draw_text(item_rect_for_text(index), text)
  148.   end
  149. end

  150. class Window_TaskRight < Window_Base
  151.   attr_reader :left_index
  152.   def initialize
  153.     super(160,48,Graphics.width - 160,Graphics.height - 48)
  154.     create_contents
  155.     @left_index = 0
  156.     @finished = false
  157.     refresh
  158.   end
  159.   def set_index(i)
  160.     @left_index = i
  161.     refresh
  162.   end
  163.   def set_finish(i)
  164.     @finished = i
  165.   end

  166.   def refresh
  167.     contents.clear
  168.     draw_desc
  169.   end
  170.   def draw_desc
  171.     if @finished
  172.       if $game_party.finished_tasks[@left_index] != nil
  173.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  174.       end
  175.     else
  176.       if $game_party.unfinished_tasks[@left_index] != nil
  177.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  178.       end
  179.     end
  180.   end

  181. end

  182. class Scene_Task < Scene_Base
  183.   def start
  184.     super
  185.     create_task_type_window
  186.     create_left_window
  187.     create_right_window
  188.   end
  189.   def update
  190.     super
  191.     if @left_window.active
  192.       if Input.trigger?(:B)
  193.         @left_window.deactivate
  194.         @task_type_window.activate
  195.       end
  196.       if Input.trigger?(:UP) || Input.trigger?(:DOWN)
  197.         @right_window.set_finish(@left_window.finished)
  198.         @right_window.set_index(@left_window.index)
  199.       end
  200.     end
  201.   end

  202.   def terminate
  203.     super
  204.   end
  205.   def create_task_type_window
  206.     @task_type_window = Window_Task_Type.new
  207.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  208.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  209.     @task_type_window.set_handler(:cancel,method(:return_scene))
  210.   end
  211.   def create_left_window
  212.     @left_window = Window_TaskLeft.new
  213.     @left_window.set_finish(false)
  214.     @left_window.refresh
  215.   end
  216.   def create_right_window
  217.     @right_window = Window_TaskRight.new
  218.     @right_window.refresh
  219.   end
  220. def view_unfinished_task
  221.     @left_window.set_finish(false)
  222.     @left_window.select(0)
  223.     @left_window.refresh
  224.     @left_window.activate
  225.     @task_type_window.deactivate
  226.     @right_window.set_finish(false)
  227.     @right_window.set_index(@left_window.index)
  228.   end
  229.   def view_finished_task
  230.     @left_window.set_finish(true)
  231.     @left_window.select(0)
  232.     @left_window.refresh
  233.     @left_window.activate
  234.     @task_type_window.deactivate
  235.     @right_window.set_finish(true)
  236.     @right_window.set_index(@left_window.index)
  237.   end

  238. end
复制代码
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-20 07:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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