Project1

标题: 关于鼠标脚本与任务脚本 [打印本页]

作者: 394178110    时间: 2013-6-27 16:16
标题: 关于鼠标脚本与任务脚本
用了任务脚本发现用鼠标无法查看任务,只能用键盘上下选择,其他选项都没问题,只有进了任务选项鼠标就不管用了。 不知改怎么解决呢?具体内容在附件里 Project2.rar (315.86 KB, 下载次数: 70)   哪位大哥有空帮着解决下。多谢!
作者: Sion    时间: 2013-6-28 23:30
  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.   
  40.   def finish
  41.     @finished = true
  42.   end
  43.    
  44. end

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

  80. class Window_Task_Type < Window_HorzCommand
  81.   #--------------------------------------------------------------------------
  82.   # ● オブジェクト初期化
  83.   #--------------------------------------------------------------------------
  84.   def initialize
  85.     super(0, 0)
  86.     activate
  87.   end
  88.   def window_width
  89.     return Graphics.width
  90.   end
  91.   def col_max
  92.     return 3
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● コマンドリストの作成
  96.   #--------------------------------------------------------------------------
  97.   def make_command_list
  98.     add_command("未完成任务",  :unfinished_task)
  99.     add_command("已完成任务", :finished_task)
  100.     add_command("取消", :cancel)
  101.   end
  102. end

  103. class Window_TaskLeft < Window_Selectable
  104.   attr_reader :finished
  105.   attr_writer :right_window
  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 update_cursor
  119.     super
  120.     return unless @right_window
  121.     @right_window.set_finish(finished)
  122.     @right_window.set_index(index)
  123.   end
  124.   def item_max
  125.     return @item_max != nil ? @item_max : 0
  126.   end
  127.   def set_item_max
  128.     if @finished
  129.       @item_max = $game_party.finished_tasks.size
  130.     else
  131.       @item_max = $game_party.unfinished_tasks.size
  132.     end
  133.   end

  134.   def refresh
  135.     set_item_max
  136.     super
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 項目の描画
  140.   #--------------------------------------------------------------------------
  141.   def draw_item(index)
  142.     text = ""
  143.     unless @finished
  144.       if $game_party.unfinished_tasks[index] != nil
  145.         text = $game_party.unfinished_tasks[index].name
  146.       end
  147.     else
  148.       if $game_party.finished_tasks[index] != nil
  149.         text = $game_party.finished_tasks[index].name  
  150.       end
  151.     end
  152.     draw_text(item_rect_for_text(index), text)
  153.   end

  154. end

  155. class Window_TaskRight < Window_Base
  156.   attr_reader :left_index
  157.   def initialize
  158.     super(160,48,Graphics.width - 160,Graphics.height - 48)
  159.     create_contents
  160.     @left_index = 0
  161.     @finished = false
  162.     refresh
  163.   end
  164.   def set_index(i)
  165.     @left_index = i
  166.     refresh
  167.   end
  168.   def set_finish(i)
  169.     @finished = i
  170.   end
  171.   
  172.   def refresh
  173.     contents.clear
  174.     draw_desc
  175.   end
  176.   def draw_desc
  177.     if @finished
  178.       if $game_party.finished_tasks[@left_index] != nil
  179.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  180.       end
  181.     else
  182.       if $game_party.unfinished_tasks[@left_index] != nil
  183.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  184.       end
  185.     end
  186.   end
  187.   
  188. end

  189. class Scene_Task < Scene_Base
  190.   def start
  191.     super
  192.     create_task_type_window
  193.     create_left_window
  194.     create_right_window
  195.   end
  196.   def update
  197.     super
  198.     if @left_window.active
  199.       if Input.trigger?(:B)
  200.         @left_window.deactivate
  201.         @task_type_window.activate
  202.       end
  203.     end
  204.   end
  205.   
  206.   def terminate
  207.     super
  208.   end
  209.   def create_task_type_window
  210.     @task_type_window = Window_Task_Type.new
  211.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  212.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  213.     @task_type_window.set_handler(:cancel,method(:return_scene))
  214.   end
  215.   def create_left_window
  216.     @left_window = Window_TaskLeft.new
  217.     @left_window.set_finish(false)
  218.     @left_window.refresh
  219.   end
  220.   def create_right_window
  221.     @right_window = Window_TaskRight.new
  222.     @right_window.refresh
  223.     @left_window.right_window = @right_window
  224.   end
  225.   def view_unfinished_task
  226.     @left_window.set_finish(false)
  227.     @left_window.refresh
  228.     @left_window.activate
  229.     @task_type_window.deactivate
  230.     @right_window.set_finish(false)
  231.     @right_window.set_index(@left_window.index)
  232.   end
  233.   def view_finished_task
  234.     @left_window.set_finish(true)
  235.     @left_window.refresh
  236.     @left_window.activate
  237.     @task_type_window.deactivate
  238.     @right_window.set_finish(true)
  239.     @right_window.set_index(@left_window.index)
  240.   end
  241.   
  242. end
复制代码

作者: 394178110    时间: 2013-7-6 15:33
完美解决 非常感谢!{:2_275:}




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1