赞 | 0 |
VIP | 0 |
好人卡 | 2 |
积分 | 1 |
经验 | 2326 |
最后登录 | 2014-10-1 |
在线时间 | 50 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 50 小时
- 注册时间
- 2011-5-22
- 帖子
- 12
|
- #encoding:utf-8
- #==============================================================================
- # ■ Scene_Task
- #------------------------------------------------------------------------------
- # 任务菜单
- #==============================================================================
- =begin
- 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
- 完成任务:$game_party.finish_task(领取任务时设定的数字)
- 对已有任务追加说明:$game_party.add_task(任务编号,任务追加描述)
- 如:
- 前面有事件$game_party.get_task(1,"测试","只是测试")
- 此时任务1的说明为
- >只是测试
- 后面完成任务的脚本就是$game_party.finish_task(1)
- 追加说明$game_party.add_task(1,"真的只是测试哦")
- 此时任务1的说明为:
- >只是测试
- >真的只是测试哦
- 召唤任务界面:SceneManager.call(Scene_Task)
- =end
- class Task
- attr_reader :desc
- attr_reader :finished
- def initialize(origin_name,desc)
- @origin_name = origin_name
- @desc = desc
- @finished = false
- end
- def name
- if @finished
- return @origin_name + "(完成)"
- else
- return @origin_name
- end
- end
- def desc=(desc)
- @desc = desc
- end
-
- def finish
- @finished = true
- end
-
- end
- class Game_Party < Game_Unit
- alias old_init initialize
- def initialize
- old_init
- @tasks = {}
- end
- def add_task(i,desc)
- @tasks[i].desc = @tasks[i].desc + "\n" + desc
- end
- def get_task(i,name,desc)
- @tasks[i]=Task.new(name,desc)
- end
- def have_task?(i)
- @tasks[i] != nil
- end
- def finish_task(i)
- @tasks[i].finish if have_task?(i)
- end
- def unfinished_tasks
- n = []
- for i in @tasks.values
- next if i.finished
- n.push(i)
- end
- return n
- end
- def finished_tasks
- n = []
- for i in @tasks.values
- next unless i.finished
- n.push(i)
- end
- return n
- end
- end
- class Window_Task_Type < Window_HorzCommand
- #--------------------------------------------------------------------------
- # ● 对象初始化
- #--------------------------------------------------------------------------
- def initialize
- super(0, 0)
- activate
- end
- def window_width
- return Graphics.width
- end
- def col_max
- return 3
- end
- #--------------------------------------------------------------------------
- # ● 创建一个命令列表
- #--------------------------------------------------------------------------
- def make_command_list
- add_command("未完成任务", :unfinished_task)
- add_command("已完成任务", :finished_task)
- add_command("取消", :cancel)
- end
- end
- class Window_TaskLeft < Window_Selectable
- attr_reader :finished
- def initialize
- super(0,48,160,Graphics.height - 48)
- create_contents
- @finished = false
- @index = 0
- refresh
- deactivate
- end
- def set_finish(finish)
- @finished = finish
- set_item_max
- end
- def item_max
- return @item_max != nil ? @item_max : 0
- end
- def set_item_max
- if @finished
- @item_max = $game_party.finished_tasks.size
- else
- @item_max = $game_party.unfinished_tasks.size
- end
- end
- def refresh
- set_item_max
- super
- end
- #--------------------------------------------------------------------------
- # ● 利用项目
- #--------------------------------------------------------------------------
- def draw_item(index)
- text = ""
- unless @finished
- if $game_party.unfinished_tasks[index] != nil
- text = $game_party.unfinished_tasks[index].name
- end
- else
- if $game_party.finished_tasks[index] != nil
- text = $game_party.finished_tasks[index].name
- end
- end
- draw_text(item_rect_for_text(index), text)
- end
- end
- class Window_TaskRight < Window_Base
- attr_reader :left_index
- def initialize
- super(160,48,Graphics.width - 160,Graphics.height - 48)
- create_contents
- @left_index = 0
- @finished = false
- refresh
- end
- def set_index(i)
- @left_index = i
- refresh
- end
- def set_finish(i)
- @finished = i
- end
-
- def refresh
- contents.clear
- draw_desc
- end
- def draw_desc
- if @finished
- if $game_party.finished_tasks[@left_index] != nil
- draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
- end
- else
- if $game_party.unfinished_tasks[@left_index] != nil
- draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
- end
- end
- end
-
- end
- class Scene_Task < Scene_Base
- def start
- super
- create_task_type_window
- create_left_window
- create_right_window
- end
- def update
- super
- if @left_window.active
- if Input.trigger?(:B)
- @left_window.deactivate
- @task_type_window.activate
- end
- if Input.trigger?(:UP) || Input.trigger?(:DOWN)
- @right_window.set_finish(@left_window.finished)
- @right_window.set_index(@left_window.index)
- end
- end
- end
-
- def terminate
- super
- end
- def create_task_type_window
- @task_type_window = Window_Task_Type.new
- @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
- @task_type_window.set_handler(:finished_task,method(:view_finished_task))
- @task_type_window.set_handler(:cancel,method(:return_scene))
- end
- def create_left_window
- @left_window = Window_TaskLeft.new
- @left_window.set_finish(false)
- @left_window.refresh
- end
- def create_right_window
- @right_window = Window_TaskRight.new
- @right_window.refresh
- end
- def view_unfinished_task
- @left_window.set_finish(false)
- @left_window.refresh
- @left_window.activate
- @task_type_window.deactivate
- @right_window.set_finish(false)
- @right_window.set_index(@left_window.index)
- end
- def view_finished_task
- @left_window.set_finish(true)
- @left_window.refresh
- @left_window.activate
- @task_type_window.deactivate
- @right_window.set_finish(true)
- @right_window.set_index(@left_window.index)
- end
-
- end
- class Window_MenuCommand < Window_HorzCommand
- alias task_add_main_commands add_main_commands
- def add_main_commands
- task_add_main_commands
- add_command("任務", :task, main_commands_enabled)
- end
- end
- class Scene_Menu < Scene_MenuBase
- alias task_create_command_window create_command_window
- def create_command_window
- task_create_command_window
- @command_window.set_handler(:task, method(:task))
- end
- def task
- SceneManager.call(Scene_Task)
- end
- end
复制代码 某位前辈整合的 |
评分
-
查看全部评分
|