设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1659|回复: 0
打印 上一主题 下一主题

简单的任务系统

[复制链接]

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

跳转到指定楼层
1
发表于 2014-5-21 16:13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 taroxd 于 2014-9-20 21:48 编辑

还是自己写的任务系统最了解操作方法啊……
看得懂Task类定义的人自然明白怎么设定任务

RUBY 代码复制
  1. #----------------------------------------------------------------------------
  2. # ● require Taroxd基础设置
  3. #----------------------------------------------------------------------------
  4.  
  5. class Taroxd::Task
  6.   #--------------------------------------------------------------------------
  7.   # ● 任务设定
  8.   #--------------------------------------------------------------------------
  9.   LIST = [
  10.     # 在此设置任务的内容。设置方式请参考 Taroxd::Task 的定义。
  11.   ]
  12.   COMPLETED_PREFIX = '\I[125]'      # 任务完成时的前缀,不需要可设置为 ''
  13.   ONGOING_PRIFIX   = '\I[126]'      # 任务进行中的前缀,不需要可设置为 ''
  14.   COMMAND = '任务'                   # 菜单上的指令名,不需要可设置为 nil
  15.   #--------------------------------------------------------------------------
  16.   # ● 初始化
  17.   #--------------------------------------------------------------------------
  18.   def initialize(id, name, description = '', goal = 1)
  19.     @id, @name, @description, @goal = id, name, description, goal
  20.   end
  21.   attr_reader :description
  22.   #--------------------------------------------------------------------------
  23.   # ● 任务名称
  24.   #--------------------------------------------------------------------------
  25.   def name
  26.     (completed? ? COMPLETED_PREFIX : ONGOING_PRIFIX) + @name
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 任务是否开始
  30.   #--------------------------------------------------------------------------
  31.   def started?
  32.     $game_switches[@id]
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 任务是否完成
  36.   #--------------------------------------------------------------------------
  37.   def completed?
  38.     $game_variables[@id] >= @goal
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 设置任务列表
  42.   #--------------------------------------------------------------------------
  43.   LIST.map! {|args| new(*args) }
  44.   #--------------------------------------------------------------------------
  45.   # ● 获取任务列表
  46.   #--------------------------------------------------------------------------
  47.   def self.list
  48.     LIST.select(&:started?)
  49.   end
  50. end
  51.  
  52. class Window_TaskList < Window_Selectable
  53.   Task = Taroxd::Task
  54.   #--------------------------------------------------------------------------
  55.   # ● 初始化
  56.   #--------------------------------------------------------------------------
  57.   def initialize(y)
  58.     super(0, y, Graphics.width, Graphics.height - y)
  59.     select Task.list.index {|task| !task.completed? }
  60.     refresh
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 获取列数
  64.   #--------------------------------------------------------------------------
  65.   def col_max
  66.     2
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 获取项目数
  70.   #--------------------------------------------------------------------------
  71.   def item_max
  72.     Task.list.size
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 绘制项目
  76.   #--------------------------------------------------------------------------
  77.   def draw_item(index)
  78.     rect = item_rect_for_text(index)
  79.     draw_text_ex(rect.x, rect.y, Task.list[index].name)
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 更新帮助窗口
  83.   #--------------------------------------------------------------------------
  84.   def update_help
  85.     @help_window.set_text(Task.list[index].description)
  86.   end
  87. end
  88.  
  89. class Scene_Task < Scene_MenuBase
  90.   #--------------------------------------------------------------------------
  91.   # ● 开始处理
  92.   #--------------------------------------------------------------------------
  93.   def start
  94.     super
  95.     create_help_window
  96.     create_list_window
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 创建任务列表窗口
  100.   #--------------------------------------------------------------------------
  101.   def create_list_window
  102.     @list_window = Window_TaskList.new(@help_window.height)
  103.     @list_window.help_window = @help_window
  104.     @list_window.set_handler(:cancel, method(:return_scene))
  105.     @list_window.activate
  106.   end
  107. end
  108.  
  109. if Taroxd::Task::COMMAND
  110.  
  111. class Window_MenuCommand < Window_Command
  112.   #--------------------------------------------------------------------------
  113.   # ● 独自添加指令用
  114.   #--------------------------------------------------------------------------
  115.   def_after :add_original_commands do
  116.     add_command(Taroxd::Task::COMMAND, :task, !Taroxd::Task.list.empty?)
  117.   end
  118. end
  119.  
  120. class Scene_Menu < Scene_MenuBase
  121.   #--------------------------------------------------------------------------
  122.   # ● 生成指令窗口
  123.   #--------------------------------------------------------------------------
  124.   def_after :create_command_window do
  125.     @command_window.set_handler(:task, method(:command_task))
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 指令“任务”
  129.   #--------------------------------------------------------------------------
  130.   def command_task
  131.     SceneManager.call(Scene_Task)
  132.   end
  133. end
  134.  
  135. end # if Taroxd::Task::COMMAND
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 20:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表