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

Project1

 找回密码
 注册会员
搜索

如何在用了任务脚本之后将任务界面添加到菜单中?

查看数: 2421 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-7-20 17:39

正文摘要:

本帖最后由 银枫月 于 2013-7-20 18:48 编辑 用了这个地址里的脚本 http://rpg.blue/thread-216707-1-1.html 然后想手动在菜单里添加一项【任务】,选择可以直接到任务界面 自己有成功将整队选项去掉过,但是添加 ...

回复

冬天吃雪糕 发表于 2013-7-21 08:51:56
银枫月 发表于 2013-7-20 18:44
把脚本添加进去之后会弹窗:

将脚本里面的Window_HorzCommand全部替换成Window_Command应该就可以了

因为我这个是横向菜单的,忘记改了
银枫月 发表于 2013-7-20 18:40:00
本帖最后由 银枫月 于 2013-7-20 18:45 编辑

有两个呢……不知道用哪个好……
冬天吃雪糕 发表于 2013-7-20 18:33:57
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_Task
  4. #------------------------------------------------------------------------------
  5. #  任务菜单
  6. #==============================================================================

  7. =begin
  8. 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
  9. 完成任务:$game_party.finish_task(领取任务时设定的数字)
  10. 对已有任务追加说明:$game_party.add_task(任务编号,任务追加描述)

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

  13. 此时任务1的说明为

  14. >只是测试

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

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

  17. 此时任务1的说明为:
  18. >只是测试
  19. >真的只是测试哦

  20. 召唤任务界面:SceneManager.call(Scene_Task)
  21. =end
  22. class Task
  23.   attr_reader :desc
  24.   attr_reader :finished
  25.   def initialize(origin_name,desc)
  26.     @origin_name = origin_name
  27.     @desc = desc
  28.     @finished = false
  29.   end
  30.   def name
  31.     if @finished
  32.       return @origin_name + "(完成)"
  33.     else
  34.       return @origin_name
  35.     end
  36.   end
  37.   def desc=(desc)
  38.     @desc = desc
  39.   end
  40.   
  41.   def finish
  42.     @finished = true
  43.   end
  44.    
  45. end

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

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

  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.     super
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 利用项目
  134.   #--------------------------------------------------------------------------
  135.   def draw_item(index)
  136.     text = ""
  137.     unless @finished
  138.       if $game_party.unfinished_tasks[index] != nil
  139.         text = $game_party.unfinished_tasks[index].name
  140.       end
  141.     else
  142.       if $game_party.finished_tasks[index] != nil
  143.         text = $game_party.finished_tasks[index].name  
  144.       end
  145.     end
  146.     draw_text(item_rect_for_text(index), text)
  147.   end

  148. end

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

  183. class Scene_Task < Scene_Base
  184.   def start
  185.     super
  186.     create_task_type_window
  187.     create_left_window
  188.     create_right_window
  189.   end
  190.   def update
  191.     super
  192.     if @left_window.active
  193.       if Input.trigger?(:B)
  194.         @left_window.deactivate
  195.         @task_type_window.activate
  196.       end
  197.       if Input.trigger?(:UP) || Input.trigger?(:DOWN)
  198.         @right_window.set_finish(@left_window.finished)
  199.         @right_window.set_index(@left_window.index)
  200.       end
  201.     end
  202.   end
  203.   
  204.   def terminate
  205.     super
  206.   end
  207.   def create_task_type_window
  208.     @task_type_window = Window_Task_Type.new
  209.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  210.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  211.     @task_type_window.set_handler(:cancel,method(:return_scene))
  212.   end
  213.   def create_left_window
  214.     @left_window = Window_TaskLeft.new
  215.     @left_window.set_finish(false)
  216.     @left_window.refresh
  217.   end
  218.   def create_right_window
  219.     @right_window = Window_TaskRight.new
  220.     @right_window.refresh
  221.   end
  222.   def view_unfinished_task
  223.     @left_window.set_finish(false)
  224.     @left_window.refresh
  225.     @left_window.activate
  226.     @task_type_window.deactivate
  227.     @right_window.set_finish(false)
  228.     @right_window.set_index(@left_window.index)
  229.   end
  230.   def view_finished_task
  231.     @left_window.set_finish(true)
  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.   
  239. end
  240. class Window_MenuCommand < Window_HorzCommand
  241.   alias task_add_main_commands add_main_commands
  242.   def add_main_commands
  243.       task_add_main_commands
  244.       add_command("任務", :task, main_commands_enabled)
  245.   end
  246. end   
  247. class Scene_Menu < Scene_MenuBase
  248.    alias task_create_command_window create_command_window
  249.    def create_command_window
  250.        task_create_command_window
  251.        @command_window.set_handler(:task,     method(:task))
  252.    end
  253.    def task
  254.        SceneManager.call(Scene_Task)
  255.    end
  256. end   

复制代码
某位前辈整合的

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 感谢帮忙

查看全部评分

Ayahiyano 发表于 2013-7-20 18:32:34
  1. #用法:
  2. #领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
  3. #完成任务:$game_party.finish_task(领取任务时设定的数字)
  4. #如:前面有事件$game_party.get_task(1,"测试","只是测试")
  5. #后面完成任务的脚本就是$game_party.finish_task(1)

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




  7. class Task
  8.   attr_reader :desc
  9.   attr_reader :finished
  10.   def initialize(origin_name,desc)
  11.     @origin_name = origin_name
  12.     @desc = desc
  13.     @finished = false
  14.   end
  15.   def name
  16.     if @finished
  17.       return @origin_name + "(完成)"
  18.     else
  19.       return @origin_name
  20.     end
  21.   end
  22.   def finish
  23.     @finished = true
  24.   end
  25.    
  26. end

  27. class Game_Party < Game_Unit
  28.   alias old_init initialize
  29.   def initialize
  30.     old_init
  31.     @tasks = {}
  32.   end
  33.   def get_task(i,name,desc)
  34.     @tasks[i]=Task.new(name,desc)
  35.   end
  36.   def have_task?(i)
  37.     @tasks[i] != nil
  38.   end
  39.   def finish_task(i)
  40.     @tasks[i].finish if have_task?(i)
  41.   end
  42.   def unfinished_tasks
  43.     n = []
  44.     for i in @tasks.values
  45.       next if i.finished
  46.       n.push(i)
  47.     end
  48.     return n
  49.   end
  50.   def finished_tasks
  51.     n = []
  52.     for i in @tasks.values
  53.       next unless i.finished
  54.       n.push(i)
  55.     end
  56.     return n
  57.   end
  58. end

  59. class Window_Task_Type < Window_HorzCommand
  60.   #--------------------------------------------------------------------------
  61.   # ● オブジェクト初期化
  62.   #--------------------------------------------------------------------------
  63.   def initialize
  64.     super(0, 0)
  65.     activate
  66.   end
  67.   def window_width
  68.     return Graphics.width
  69.   end
  70.   def col_max
  71.     return 3
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● コマンドリストの作成
  75.   #--------------------------------------------------------------------------
  76.   def make_command_list
  77.     add_command("未完成任务",  :unfinished_task)
  78.     add_command("已完成任务", :finished_task)
  79.     add_command("返回", :cancel)
  80.   end
  81. end

  82. class Window_TaskLeft < Window_Selectable
  83.   attr_reader :finished
  84.   def initialize
  85.     super(0,48,160,Graphics.height - 48)
  86.     create_contents
  87.     @finished = false
  88.     @index = 0
  89.     refresh
  90.     deactivate
  91.   end
  92.   def set_finish(finish)
  93.     @finished = finish
  94.     set_item_max
  95.   end
  96.   def item_max
  97.     return @item_max != nil ? @item_max : 0
  98.   end
  99.   def set_item_max
  100.     if @finished
  101.       @item_max = $game_party.finished_tasks.size
  102.     else
  103.       @item_max = $game_party.unfinished_tasks.size
  104.     end
  105.   end

  106.   def refresh
  107.     set_item_max
  108.     super
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 項目の描画
  112.   #--------------------------------------------------------------------------
  113.   def draw_item(index)
  114.     text = ""
  115.     unless @finished
  116.       if $game_party.unfinished_tasks[index] != nil
  117.         text = $game_party.unfinished_tasks[index].name
  118.       end
  119.     else
  120.       if $game_party.finished_tasks[index] != nil
  121.         text = $game_party.finished_tasks[index].name  
  122.       end
  123.     end
  124.     draw_text(item_rect_for_text(index), text)
  125.   end

  126. end

  127. class Window_TaskRight < Window_Base
  128.   attr_reader :left_index
  129.   def initialize
  130.     super(160,48,Graphics.width - 160,Graphics.height - 48)
  131.     create_contents
  132.     @left_index = 0
  133.     @finished = false
  134.     refresh
  135.   end
  136.   def set_index(i)
  137.     @left_index = i
  138.     refresh
  139.   end
  140.   def set_finish(i)
  141.     @finished = i
  142.   end
  143.   
  144.   def refresh
  145.     contents.clear
  146.     draw_desc
  147.   end
  148.   def draw_desc
  149.     if @finished
  150.       if $game_party.finished_tasks[@left_index] != nil
  151.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  152.       end
  153.     else
  154.       if $game_party.unfinished_tasks[@left_index] != nil
  155.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  156.       end
  157.     end
  158.   end
  159.   
  160. end

  161. class Scene_Task < Scene_Base
  162.   def start
  163.     super
  164.     create_task_type_window
  165.     create_left_window
  166.     create_right_window
  167.   end
  168.   def update
  169.     super
  170.     if @left_window.active
  171.       if Input.trigger?(:B)
  172.         @left_window.deactivate
  173.         @task_type_window.activate
  174.       end
  175.       if Input.trigger?(:UP) || Input.trigger?(:DOWN)
  176.         @right_window.set_finish(@left_window.finished)
  177.         @right_window.set_index(@left_window.index)
  178.       end
  179.     end
  180.   end
  181.   
  182.   def terminate
  183.     super
  184.   end
  185.   def create_task_type_window
  186.     @task_type_window = Window_Task_Type.new
  187.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  188.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  189.     @task_type_window.set_handler(:cancel,method(:return_scene))
  190.   end
  191.   def create_left_window
  192.     @left_window = Window_TaskLeft.new
  193.     @left_window.set_finish(false)
  194.     @left_window.refresh
  195.   end
  196.   def create_right_window
  197.     @right_window = Window_TaskRight.new
  198.     @right_window.refresh
  199.   end
  200.   def view_unfinished_task
  201.     @left_window.set_finish(false)
  202.     @left_window.refresh
  203.     @left_window.activate
  204.     @task_type_window.deactivate
  205.     @right_window.set_finish(false)
  206.     @right_window.set_index(@left_window.index)
  207.   end
  208.   def view_finished_task
  209.     @left_window.set_finish(true)
  210.     @left_window.refresh
  211.     @left_window.activate
  212.     @task_type_window.deactivate
  213.     @right_window.set_finish(true)
  214.     @right_window.set_index(@left_window.index)
  215.   end
  216.   
  217. end

  218. class Window_MenuCommand < Window_Command
  219.   alias add_original_commands_task_zabing add_original_commands
  220.   def add_original_commands
  221.     add_original_commands_task_zabing
  222.     add_command("任务", :maphint)
  223.   end
  224. end
  225. class Scene_Menu < Scene_MenuBase
  226.   alias create_command_window_task_zabing create_command_window
  227.   def create_command_window
  228.     create_command_window_task_zabing
  229.     @command_window.set_handler(:maphint,   method(:command_maphint))
  230.   end
  231.   def command_maphint
  232.     SceneManager.call(Scene_Task)
  233.   end
  234. end
复制代码

点评

这个可以用.感谢前辈.  发表于 2013-7-20 18:45

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 认可答案

查看全部评分

银枫月 发表于 2013-7-20 18:08:40
挺急着用的,但是为什么没有人帮忙、……
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-15 16:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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