查看: 3387|回复: 2

[RMVA发布] 简单的任务系统

[复制链接]

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-9-21 07:25:52 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 taroxd 于 2014-9-21 07:31 编辑

可以与 https://rpg.blue/thread-371714-1-1.html 该脚本配合使用

[pre lang="ruby" line="1"]
#----------------------------------------------------------------------------
# ● 简单任务系统
#    觉得窗口难看的觉得功能太简陋的要么不用要么就自己改吧。
#----------------------------------------------------------------------------

module Taroxd end

class Taroxd::Task
  #--------------------------------------------------------------------------
  # ● 任务设定
  #--------------------------------------------------------------------------
  LIST = [
    #------------- 在此设置任务的内容。------------------
    #
    # id: 当该id对应的开关打开时,视为接受了该任务
    #     当该id对应的变量值不小于【目标】时,视为任务完成
    #
    # 任务名称:显示在菜单中的选项名称
    #
    # 任务介绍:显示在顶部的任务介绍
    #
    # 目标:当【id】对应的变量值不小于目标时,视为任务完成(可以不写,默认为1)
    #
    #--------------------------------------------------
    #
    # id 任务名称              任务介绍                       目标
    [ 5, "卖萌",      "想办法把变量5的值弄到2以上。",           2   ],
    [ 6, "继续卖萌",   "当你接到这个任务的时候你就已经完成了。", 0   ],
    #--------------- 任务内容设置结束。-----------------
  ]
  COMPLETED_PREFIX = '\I[125]'      # 任务完成时的前缀,不需要可设置为 ''
  ONGOING_PRIFIX   = '\I[126]'      # 任务进行中的前缀,不需要可设置为 ''
  COMMAND          = '任务'         # 菜单上的指令名,不需要可设置为 nil
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize(id, name, description = '', goal = 1)
    @id, @name, @description, @goal = id, name, description, goal
  end
  attr_reader :description
  #--------------------------------------------------------------------------
  # ● 任务名称
  #--------------------------------------------------------------------------
  def name
    (completed? ? COMPLETED_PREFIX : ONGOING_PRIFIX) + @name
  end
  #--------------------------------------------------------------------------
  # ● 任务是否开始
  #--------------------------------------------------------------------------
  def started?
    $game_switches[@id]
  end
  #--------------------------------------------------------------------------
  # ● 任务是否完成
  #--------------------------------------------------------------------------
  def completed?
    $game_variables[@id] >= @goal
  end
  #--------------------------------------------------------------------------
  # ● 设置任务列表
  #--------------------------------------------------------------------------
  LIST.map! {|args| new(*args) }
  #--------------------------------------------------------------------------
  # ● 获取任务列表
  #--------------------------------------------------------------------------
  def self.list
    LIST.select(&:started?)
  end
end

class Window_TaskList < Window_Selectable
  Task = Taroxd::Task
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize(y)
    super(0, y, Graphics.width, Graphics.height - y)
    select Task.list.index {|task| !task.completed? }
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 获取列数
  #--------------------------------------------------------------------------
  def col_max
    2
  end
  #--------------------------------------------------------------------------
  # ● 获取项目数
  #--------------------------------------------------------------------------
  def item_max
    Task.list.size
  end
  #--------------------------------------------------------------------------
  # ● 绘制项目
  #--------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect_for_text(index)
    draw_text_ex(rect.x, rect.y, Task.list[index].name)
  end
  #--------------------------------------------------------------------------
  # ● 更新帮助窗口
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(Task.list[index].description)
  end
end

class Scene_Task < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_list_window
  end
  #--------------------------------------------------------------------------
  # ● 创建任务列表窗口
  #--------------------------------------------------------------------------
  def create_list_window
    @list_window = Window_TaskList.new(@help_window.height)
    @list_window.help_window = @help_window
    @list_window.set_handler(:cancel, method(:return_scene))
    @list_window.activate
  end
end

if Taroxd::Task::COMMAND

class Window_MenuCommand < Window_Command
  #--------------------------------------------------------------------------
  # ● 独自添加指令用
  #--------------------------------------------------------------------------
  alias aoc_20140921 add_original_commands
  def add_original_commands
    aoc_20140921
    add_command(Taroxd::Task::COMMAND, :task, !Taroxd::Task.list.empty?)
  end
end

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 生成指令窗口
  #--------------------------------------------------------------------------
  alias ccw_20140921 create_command_window
  def create_command_window
    ccw_20140921
    @command_window.set_handler(:task, method(:command_task))
  end
  #--------------------------------------------------------------------------
  # ● 指令“任务”
  #--------------------------------------------------------------------------
  def command_task
    SceneManager.call(Scene_Task)
  end
end

end # if Taroxd::Task::COMMAND[/pre]

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
回帖
6325
发表于 2014-9-21 07:53:04 | 显示全部楼层
瓦嗒西不是天使
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-9-21 10:05:41 | 显示全部楼层
我下意识地看了下发帖时间···这个标题和之前那个谁发的一样···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

在本版发帖返回顶部