关于图书图鉴脚本求帮助

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

正文摘要:

先说下我用这个脚本实现的功能 完成一个任务自动在图鉴里解锁一段介绍 得到一个物品XX风物志 使用后解锁这个物品的介绍

回复

熊喵酱 发表于 2013-9-4 11:20:48
本帖最后由 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]

点评

这个脚本无法翻页超过一定数量无法显示名字。。。。。。  发表于 2013-9-4 21:03
394178110 发表于 2013-9-4 11:04:04
{:2_276:}  怪物图鉴那个脚本做这个不太合适(我不会改)

点评

遊戲裡有那些系統卻不會改? 都 用別人腳本/伸手 是沒法進步的  发表于 2013-9-4 11:17
电锤斧王 发表于 2013-9-4 09:27:39
你发的链接我看了,你可以用那个脚本啊
电锤斧王 发表于 2013-9-4 09:24:49
你问了也是没人回答的,因为这个脚本是我写的。但是我这几天找工作,吃饭都成问题,实在是没心情解决这个

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部