|
本帖最后由 76213585 于 2013-9-3 20:44 编辑 http://rpg.blue/thread-216707-1-1.html 可以試試看任務腳本 把相對vacab修改就可以了 然後標題就是日志標題 內容就是文章 選項數量改一下改一下就行了(自己想想看吧!) 然後於是改的新手向一点了 (不是只為了你改的说 所以 用詞 選項數量 那些還是得設定) [pre lang="ruby" line="1"]=begin 我自己加了一些幫助新手的说明好了..... 用法: 领取任务:$game_party.get_task(任意数字,任务名称,任务描述) 如:前面有事件$game_party.get_task(1,"测试","只是测试") 完成任务:$game_party.finish_task(领取任务时设定的数字) 如:$game_party.finish_task(1) 召唤任务界面:SceneManager.call(Scene_Task) 然後下面可以設定用詞 =end module Panda $UNFIN_TASK = "喵" #未完成任务的用詞 $FIN_TASK = "喵" #已完成任务的用詞 $CANCEL = "取消" #退出界面的用詞 $TASK_NAME = "任務" #菜單內任務的用詞 $MEUN_ON = true #是否在菜單中顯示 要的話true 不要的話 false 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 finish @finished = true end end class Game_Party < Game_Unit alias old_init initialize def initialize old_init @tasks = {} end def get_task(i,name,desc) @tasks=Task.new(name,desc) end def have_task?(i) @tasks != nil end def finish_task(i) @tasks.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($UNFIN_TASK, :unfinished_task) add_command($FIN_TASK, :finished_task) add_command($CANCEL, :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 if $MEUN_ON == true class Window_MenuCommand < Window_Command alias task_add_main_commands add_main_commands #A def add_main_commands task_add_main_commands#A add_command($TASK_NAME, :task, main_commands_enabled)#B end end class Scene_Menu < Scene_MenuBase alias task_create_command_window create_command_window#C def create_command_window task_create_command_window #C @command_window.set_handler(:task, method(:task))#B 跟 後面是 D end def task #D SceneManager.call(Scene_Task) end end else end [/pre] |
| 你发的链接我看了,你可以用那个脚本啊 |
| 你问了也是没人回答的,因为这个脚本是我写的。但是我这几天找工作,吃饭都成问题,实在是没心情解决这个 |