Project1

标题: VA任务系统 [打印本页]

作者: asd11000    时间: 2012-5-22 16:34
标题: VA任务系统
好久没来这里了。。
这几天突发奇想做游戏,然后昨天就下载了VA。想给游戏里加个查看任务的功能,然后看到了这个帖子http://rpg.blue/thread-216707-1-1.html
恩。。因为不是很喜欢这个布局所以想改动改动,结果发现自己改不动- -!
于是就有了以下代码。。(基本上是复制粘贴系统本身查看物品的代码。。汗死。。我自己觉得相当山寨啊~但是难得自己折腾出来个东西,难得想发帖,于是就放上来了。。)

RUBY 代码复制
  1. #encoding:utf-8
  2.  
  3. #==============================================================================
  4. # ■ Task
  5. #------------------------------------------------------------------------------
  6. #  任务类。本类在 Game_Task 类的内部使用。
  7. #   任务属性:名称,内容,是否是主线任务,是否有父任务
  8. #==============================================================================
  9.  
  10. class Task
  11.   attr_reader :index
  12.   attr_reader :name
  13.   attr_reader :description
  14.   attr_reader :type
  15.   attr_reader :father_task
  16.   attr_reader :finished
  17.   #--------------------------------------------------------------------------
  18.   # ● 初始化对象
  19.   #--------------------------------------------------------------------------
  20.   def initialize(index, name, description, type = true, father_task = -1)
  21.     @type = type
  22.     @name = name
  23.     @description = description
  24.     @father_task = father_task
  25.     @index = index
  26.     @finished = false
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 是否是主线任务
  30.   #--------------------------------------------------------------------------
  31.   def key_task?
  32.     @type
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 是否是子任务
  36.   #--------------------------------------------------------------------------
  37.   def has_father_task?
  38.     @father_task > -1
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 完成任务
  42.   #--------------------------------------------------------------------------
  43.   def finish
  44.     @finished = true
  45.   end
  46.  
  47. end
  48.  
  49. #==============================================================================
  50. # ■ Game_Party
  51. #==============================================================================
  52.  
  53. class Game_Party < Game_Unit
  54.   #--------------------------------------------------------------------------
  55.   # ● 初始化对象
  56.   #--------------------------------------------------------------------------
  57.   alias old_init initialize
  58.   def initialize
  59.     old_init
  60.     @tasks = {}
  61.     @sub_tasks= {}
  62.     #定义了一个任务列表,提前把所有的任务都写进去了
  63.     @task_list=TaskList.new
  64.     @sub = false
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 是否存在子任务
  68.   #--------------------------------------------------------------------------
  69.   def is_sub
  70.     @sub
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 启用子任务
  74.   #--------------------------------------------------------------------------
  75.   def set_sub
  76.     @sub = true
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 添加新的任务
  80.   #--------------------------------------------------------------------------
  81.   def new_task(i, name, desc, type, father_task = -1)
  82.     if !is_sub
  83.       @tasks[i] = tmp if !have_task?(i)
  84.       return
  85.     end
  86.     tmp = Task.new(i, name, desc, type, father_task)
  87.     if father_task < 0
  88.       @tasks[i] = tmp if !have_task?(i)
  89.     else
  90.       @sub_tasks[i] = tmp if father_task?(father_task) && !sub_task?(i)
  91.     end   
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 从已定义好的任务列表中添加新的任务
  95.   #--------------------------------------------------------------------------
  96.   def set_task(index)
  97.     temp = @task_list.get_task(index)
  98.     if !is_sub
  99.       @tasks[index] = temp if !have_task?(index)
  100.       return
  101.     end
  102.     if temp.has_father_task?
  103.       @sub_tasks[index] = temp if father_task?(temp.father_task) && !sub_task?(index)
  104.     else
  105.       @tasks[index] = temp if !have_task?(index)
  106.     end
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 查询任务是否存在
  110.   #--------------------------------------------------------------------------
  111.   def have_task?(i)
  112.     return father_task?(i) || sub_task?(i)
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 查询父任务是否存在
  116.   #--------------------------------------------------------------------------
  117.   def father_task?(i)
  118.     @tasks[i] != nil
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 查询子任务是否存在
  122.   #--------------------------------------------------------------------------
  123.   def sub_task?(i)
  124.     @sub_tasks[i] != nil
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 完成已有的任务,如果该任务有没有完成的子任务,则不能完成
  128.   #--------------------------------------------------------------------------
  129.   def finish_task(i)
  130.     @tasks[i].finish if father_task?(i) && sub_tasks_finished?(i)
  131.     @sub_tasks[i].finish if sub_task?(i)
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 查询父任务序号为i的子任务,返回一个数组
  135.   #--------------------------------------------------------------------------
  136.   def get_sub_tasks(i)
  137.     return [] if !is_sub
  138.     tmp = []
  139.     for j in @sub_tasks.values
  140.       next if j.father_task != i
  141.       tmp.push(j)
  142.     end
  143.     return tmp
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 查询父任务序号为i的子任务是否都已完成
  147.   #--------------------------------------------------------------------------
  148.   def sub_tasks_finished?(i)
  149.     return true if !is_sub
  150.     for j in @sub_tasks.values
  151.       next if j.father_task != i
  152.       return false if !j.finished
  153.     end
  154.     return true
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● 获取任务类型为cat的任务集合
  158.   #--------------------------------------------------------------------------
  159.   def all_tasks(cat)
  160.     n = []
  161.     m = []
  162.     for i in @tasks.values
  163.       next if i.key_task? != cat
  164.       tmp = get_sub_tasks(i.index)
  165.       if i.finished
  166.         n.push(i)
  167.         n += tmp
  168.       else
  169.         m.push(i)
  170.         m += tmp
  171.       end
  172.     end
  173.     return m + n
  174.   end
  175.  
  176. end
  177.  
  178. #==============================================================================
  179. # ■ Window_TaskList
  180. #------------------------------------------------------------------------------
  181. #  任务画面中,显示已获得任务的窗口。
  182. #==============================================================================
  183.  
  184. class Window_TaskList < Window_Selectable
  185.   #--------------------------------------------------------------------------
  186.   # ● 初始化对象
  187.   #--------------------------------------------------------------------------
  188.   def initialize(x, y, width, height)
  189.     super
  190.     @category = :none
  191.     @data = []
  192.     @sub_task = false
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ● 设置是否有子任务
  196.   #--------------------------------------------------------------------------
  197.   def has_sub_task
  198.     @sub_task = true
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 设置分类
  202.   #--------------------------------------------------------------------------
  203.   def category=(category)
  204.     return if @category == category
  205.     @category = category
  206.     if category == :true
  207.       refresh(true)
  208.     else
  209.       refresh(false)
  210.     end
  211.     self.oy = 0
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ● 获取列数
  215.   #--------------------------------------------------------------------------
  216.   def col_max
  217.     if @sub_task
  218.       return 1
  219.     else
  220.       return 2
  221.     end
  222.   end
  223.   #--------------------------------------------------------------------------
  224.   # ● 获取项目数
  225.   #--------------------------------------------------------------------------
  226.   def item_max
  227.     @data ? @data.size : 1
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 获取任务
  231.   #--------------------------------------------------------------------------
  232.   def item
  233.     @data && index >= 0 ? @data[index] : nil
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ● 获取选择任务的有效状态
  237.   #--------------------------------------------------------------------------
  238.   def current_item_enabled?
  239.     enable?(@data[index])
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● 查询此任务是否完成
  243.   #--------------------------------------------------------------------------
  244.   def enable?(item)
  245.     !item.finished
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 生成任务列表
  249.   #--------------------------------------------------------------------------
  250.   def make_item_list(type)
  251.     @data = $game_party.all_tasks(type)
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 返回上一个选择的位置
  255.   #--------------------------------------------------------------------------
  256.   def select_last
  257.     select(0)
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 绘制项目
  261.   #--------------------------------------------------------------------------
  262.   def draw_item(index)
  263.     item = @data[index]
  264.     if item
  265.       rect = item_rect(index)
  266.       rect.width -= 4
  267.       draw_item_name(item, rect.x, rect.y, enable?(item))
  268.     end
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 绘制名称
  272.   #     enabled : 有效的标志。false 的时候使用半透明效果绘制
  273.   #--------------------------------------------------------------------------
  274.   def draw_item_name(item, x, y, enabled = true, width = 172)
  275.     return unless item
  276.     text = item.name
  277.     text = "    " + text if @sub_task && item.has_father_task?
  278.     text += "(已完成)" if item.finished
  279.     change_color(normal_color, enabled)
  280.     draw_text(x, y, width, line_height, text)
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 更新帮助内容
  284.   #--------------------------------------------------------------------------
  285.   def update_help
  286.     @help_window.set_item(item)
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● 刷新
  290.   #--------------------------------------------------------------------------
  291.   def refresh(type)
  292.     make_item_list(type)
  293.     create_contents
  294.     draw_all_items
  295.   end
  296. end
  297.  
  298. #==============================================================================
  299. # ■ Window_TaskCategory
  300. #------------------------------------------------------------------------------
  301. #  任务画面中,显示任务列表的窗口。
  302. #==============================================================================
  303.  
  304. class Window_TaskCategory < Window_HorzCommand
  305.   #--------------------------------------------------------------------------
  306.   # ● 定义实例变量
  307.   #--------------------------------------------------------------------------
  308.   attr_reader   :item_window
  309.   #--------------------------------------------------------------------------
  310.   # ● 初始化对象
  311.   #--------------------------------------------------------------------------
  312.   def initialize
  313.     super(0, 0)
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 获取窗口的宽度
  317.   #--------------------------------------------------------------------------
  318.   def window_width
  319.     Graphics.width
  320.   end
  321.   #--------------------------------------------------------------------------
  322.   # ● 获取列数
  323.   #--------------------------------------------------------------------------
  324.   def col_max
  325.     return 2
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● 更新画面
  329.   #--------------------------------------------------------------------------
  330.   def update
  331.     super
  332.     @item_window.category = current_symbol if @item_window
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ● 生成指令列表
  336.   #--------------------------------------------------------------------------
  337.   def make_command_list
  338.     add_command("主线任务",   :true)
  339.     add_command("支线任务",   :false)
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ● 设置任务窗口
  343.   #--------------------------------------------------------------------------
  344.   def item_window=(item_window)
  345.     @item_window = item_window
  346.     update
  347.   end
  348. end
  349.  
  350. #==============================================================================
  351. # ■ Scene_Task
  352. #------------------------------------------------------------------------------
  353. #  任务画面
  354. #==============================================================================
  355.  
  356. class Scene_Task < Scene_ItemBase
  357.   #--------------------------------------------------------------------------
  358.   # ● 开始处理
  359.   #--------------------------------------------------------------------------
  360.   def start
  361.     super
  362.     create_help_window
  363.     create_category_window
  364.     create_task_window
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ● 生成分类窗口
  368.   #--------------------------------------------------------------------------
  369.   def create_category_window
  370.     @category_window = Window_TaskCategory.new
  371.     @category_window.viewport = @viewport
  372.     @category_window.help_window = @help_window
  373.     @category_window.y = @help_window.height
  374.     @category_window.set_handler(:ok,     method(:on_category_ok))
  375.     @category_window.set_handler(:cancel, method(:return_scene))
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● 生成任务窗口
  379.   #--------------------------------------------------------------------------
  380.   def create_task_window
  381.     wy = @category_window.y + @category_window.height
  382.     wh = Graphics.height - wy
  383.     @item_window = Window_TaskList.new(0, wy, Graphics.width, wh)
  384.     #如果允许子任务则显示子任务
  385.     @item_window.has_sub_task if $game_party.is_sub
  386.     @item_window.viewport = @viewport
  387.     @item_window.help_window = @help_window
  388.     @item_window.set_handler(:cancel, method(:on_item_cancel))
  389.     @category_window.item_window = @item_window
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ● 分类“确定”
  393.   #--------------------------------------------------------------------------
  394.   def on_category_ok
  395.     @item_window.activate
  396.     @item_window.select_last
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● 任务“取消”
  400.   #--------------------------------------------------------------------------
  401.   def on_item_cancel
  402.     @item_window.unselect
  403.     @category_window.activate
  404.   end
  405. end
  406. #==============================================================================
  407. # ■ TaskList
  408. #------------------------------------------------------------------------------
  409. #  
  410. #==============================================================================
  411. class TaskList
  412.   def initialize
  413.     #允许子任务
  414.     @list = []
  415.     @list.push(Task.new(0, "任务0", "任务描述0任务描述0任务描述0任务描述0任务"))
  416.     @list.push(Task.new(1, "任务一", "任务描述1"))
  417.     @list.push(Task.new(2, "任务2", "任务描述2",false))
  418.     @list.push(Task.new(3, "任务3", "任务描述3", true, 1))
  419.     @list.push(Task.new(4, "任务4", "任务描述4", true, 1))
  420.     @list.push(Task.new(5, "任务5", "任务描述5", false, 2))
  421.     @list.push(Task.new(6, "任务6", "任务描述6", false))
  422.     @list.push(Task.new(7, "任务7", "任务描述7", true, 1))
  423.   end
  424.   def get_task(index)
  425.     @list[index]
  426.   end
  427. end

上图





恩,以下是对脚本的说明。。
我把任务分为主线任务和支线任务,另外一个父任务可以有若干个子任务

打开任务界面SceneManager.call(Scene_Task)

添加任务
有两种方式。。
1 $game_party.new_task(任务序号, 任务名称, 任务描述, 任务类型, 父任务序号)
如果任务类型为true,则为主线任务,否则为支线任务,默认是true
如果父任务序号为-1,则这个任务没有父任务,他自己就是一个顶级的父任务,可以拥有子任务了。如果父任务序号为已存在的父任务,则可以顺利生成一个子任务,否则不能生成任务
(说得这么好听究竟能不能做到啊- -!我对自己表示怀疑)

2 你看我在代码末尾絮絮叨叨的加了一个 class TaskList,那是因为我觉得一个一个往事件里加任务好累啊- -!所以在代码里都写好了,到时候要用哪个直接序号搞定。。
所以第二种添加方式是$game_party.set_task(该任务在TaskList里的序号)
当然这个任务在TaskList里的序号和他本身的那个序号是一样的了,如果你要写成不一样的,应该是会出问题。。

完成任务
$game_party.finish_task(任务序号)
好吧,这个跟我前面说的那个帖子是一样的。。我深深的觉得自己山寨,向被我山寨的LZ致以崇高的敬意

子任务系统
系统默认是不使用子任务的,这个时候任务列表里面显示任务的时候会有两列。
如果想要使用子任务的话,需要调用$game_party.set_sub
然后任务列表里就只显示一列了(- -!如果显示两列会灰常混乱),然后子任务会在他的父任务后面缩进显示
该系统只支持一级子任务。。

当任务完成后,会在列表里显示“(已完成)”字样,并且任务名称变灰色。已完成的任务一般是显示在未完成任务的后面的(貌似只考虑了父任务的顺序,没有考虑子任务的顺序。囧)。
如果一个父任务他的子任务没有全部完成,那么他也不可能被完成,调用了完成任务的方法也是徒劳啊~
作者: 冲啊小笼包    时间: 2012-5-22 18:00
好东西,虽然不是原创吧!不过分享东西也是不错的!下来用用好了!
作者: yachilo    时间: 2012-5-22 22:26
哈,楼主作出了我刚改到一半的东西,顺便帮楼主补充一下。
Window_MenuCommand  找到下面这几行,加上红色这行(52行左右)

  # ● 向指令列表添加主要的指令
  #--------------------------------------------------------------------------
  def add_main_commands
    add_command(Vocab::item,   :item,   main_commands_enabled)
    add_command(Vocab::skill,  :skill,  main_commands_enabled)
    add_command(Vocab::equip,  :equip,  main_commands_enabled)
    add_command(Vocab::status, :status, main_commands_enabled)
    add_command("任务",        :task,   main_commands_enabled)

Scene_Menu  找到下面这几行,加上红色这几行(62~67行左右)
#--------------------------------------------------------------------------
  # ● 指令“技能”“装备”“状态”
  #--------------------------------------------------------------------------
  def command_personal
    @status_window.select_last
    @status_window.activate
    @status_window.set_handler(:ok,     method(:on_personal_ok))
    @status_window.set_handler(:cancel, method(:on_personal_cancel))
  end
  #--------------------------------------------------------------------------
  # ● 指令“任务”
  #--------------------------------------------------------------------------
  def command_task
    SceneManager.call(Scene_Task)
  end


作者: 洛迪基尔    时间: 2012-5-22 22:56
话说改版后似乎更加怪异的说~
任务描述跑上面的小地方去了==i
感觉各种的不协调。

不过,分开主线和支线的改进方便了,值得鼓励!
窗体布局完善一下就更好了!
作者: 562305484    时间: 2012-6-10 20:39
。。。。。本人很笨,复制不起。。。。。
作者: asd11000    时间: 2012-6-11 11:35
562305484 发表于 2012-6-10 20:39
。。。。。本人很笨,复制不起。。。。。

你用的虾米浏览器啊。。Google chrome用得没问题。。
作者: tankonsai    时间: 2012-6-12 09:16
接任务后召唤任务界面出问题了



‘‘──tankonsai于2012-6-12 09:22补充以下内容:

7楼的问题解决了
原来在代码里编写任务时任务序号必须要按顺序才可以,否则会报错
’’

问题.jpg (8.79 KB, 下载次数: 41)

问题.jpg

作者: 562305484    时间: 2012-6-13 22:04
asd11000 发表于 2012-6-11 11:35
你用的虾米浏览器啊。。Google chrome用得没问题。。

其他发的代码都有复制代码按键,要不大哥给小弟个范例也可以,多少经验都可以啊谢谢了
作者: asd11000    时间: 2012-6-14 10:38
562305484 发表于 2012-6-13 22:04
其他发的代码都有复制代码按键,要不大哥给小弟个范例也可以,多少经验都可以啊谢谢了 ...

下载文件回复到你那个提问区的帖子了。
有啥问题直接问我就成。
作者: 羽下    时间: 2012-6-15 08:50
我要早点看到这贴。。我做那游戏的任务系统就不用物品触发了。。。因为不会脚本,我只能是每接一个任务,给一个任务物品,然后用任务物品去触发某些事件,任务说明只能局限于物品说明那短短两行。。。游戏做了大半了。。。改起来都没新信心了。。
作者: 御之嵐    时间: 2012-7-14 02:46
本帖最后由 御之嵐 于 2012-7-14 06:35 编辑

新手 問一下

要怎麼接任務
打在對話框上嗎?

還是設定事件 加入腳本 $game_party.new_task(任务序号, 任务名称, 任务描述, 任务类型, 父任务序号)

此外 如果沒有父任務序號  就空者嗎?
$game_party.new_task(任务序号, 任务名称, 任务描述, 任务类型)
這樣?


------------------------------------------------------------------------------------------------------------------------

會出錯



如何解決...?!
作者: asd11000    时间: 2012-7-15 17:57
御之嵐 发表于 2012-7-14 02:46
新手 問一下

要怎麼接任務

第一个问题:
设定事件加入脚本
第二个问题:
没有父任务就把父任务序号写成-1

出错那个我没看懂为虾米。。
有点要注意的是:
这个任务在TaskList里的序号和他本身的那个序号是一样的了,如果你要写成不一样的,应该是会出问题。。
作者: 御之嵐    时间: 2012-7-16 02:35
asd11000 发表于 2012-7-15 17:57
第一个问题:
设定事件加入脚本
第二个问题:

所以說 沒有 父任務
就是這樣
$game_party.new_task(任务序号, 任务名称, 任务描述, 任务类型, -1)


可是 我是要新增任務
不是用腳本內事先預設好的

還是說 這一定要事先預設好?!
作者: asd11000    时间: 2012-7-17 10:58
御之嵐 发表于 2012-7-16 02:35
所以說 沒有 父任務
就是這樣
$game_party.new_task(任务序号, 任务名称, 任务描述, 任务类型, -1)

什么时候想添加任务就在什么时候添加事件,时间里的脚本写上这个就好了。
我写的那个事先预设好的其实也不是一开始就把任务添加到任务列表里,是在使用$game_party.set_task()这个方法的时候才添加到任务列表里。
把任务在脚本里先写好有个好处是,当你想对任务内容进行修改的时候,方便查找。。
作者: 御之嵐    时间: 2012-7-18 02:53
asd11000 发表于 2012-7-17 10:58
什么时候想添加任务就在什么时候添加事件,时间里的脚本写上这个就好了。
我写的那个事先预设好的其实也 ...

了解了,感謝幫忙
作者: 咚小黑    时间: 2012-7-18 08:11
这叫精辟。
作者: 紫菜豆腐煲    时间: 2012-7-30 04:40
本帖最后由 紫菜豆腐煲 于 2012-8-3 06:35 编辑

@asd11000楼主,按3楼的方法做了,在主菜单上是多了“任务”但按下去没反应,召唤不出任务界面。


7/30补充:
现在搞好了

8/2补充
楼主,能不能把任务描述的窗口做大一些,或者文字可以换行呢??
作者: asd11000    时间: 2012-8-14 22:11
紫菜豆腐煲 发表于 2012-7-30 04:40
@asd11000楼主,按3楼的方法做了,在主菜单上是多了“任务”但按下去没反应,召唤不出任务界面。

我记得有个脚本是自动换行的。我之前也是去找了那个脚本实现换行。
复制给你吧。
  1. #==============================================================================
  2. # 本腳本來自www.66RPG.com,使用和轉載請保留此信息
  3. # http://rpg.blue/forum.php?mod=viewthread&tid=224184
  4. #==============================================================================

  5. class Window_Base
  6.   
  7.   alias :iisnow_convert_escape_characters :convert_escape_characters
  8.   def convert_escape_characters(text)
  9.     result = iisnow_convert_escape_characters(text)
  10.     result.gsub!(/\ek/)          { "\k" }
  11.     result
  12.   end

  13.   def process_character(c, text, pos)
  14.     case c
  15.     when "\r"  
  16.       return
  17.     when "\n"  
  18.       process_new_line(text, pos) if !@auto_n
  19.     when "\k"
  20.       @auto_n = false
  21.     when "\f"   
  22.       process_new_page(text, pos)
  23.     when "\e"   
  24.       process_escape_character(obtain_escape_code(text), text, pos)
  25.     else      
  26.       process_normal_character(c,text,pos)
  27.     end
  28.   end
  29.   
  30.   def process_normal_character(c,text,pos)
  31.     @auto_n = true
  32.     text_width = text_size(c).width
  33.     if real_width - pos[:x] > text_width
  34.       draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)
  35.       pos[:x] += text_width
  36.     else
  37.       process_new_line(text,pos)
  38.       process_normal_character(c,text,pos)
  39.     end
  40.   end
  41.   
  42.   def real_width
  43.     return self.width - 2 * standard_padding
  44.   end
  45.   
  46. end

  47. class Window_Message
  48.   
  49.   def process_normal_character(c,text,pos)
  50.     super
  51.     wait_for_one_character
  52.   end

  53. end
  54. #==============================================================================
  55. # 本腳本來自www.66RPG.com,使用和轉載請保留此信息
  56. #==============================================================================
复制代码

作者: 冰狼牙    时间: 2012-8-20 17:44
弱弱地问下,这个是个神马情况?怎么解决啊?

作者: 胡杜钊    时间: 2014-1-21 18:14
怎么会这样

P{WYRA78_)){7}PBTV{YV6P.jpg (22.29 KB, 下载次数: 43)

P{WYRA78_)){7}PBTV{YV6P.jpg

作者: 颜LOSE    时间: 2014-1-22 10:30
本帖最后由 颜LOSE 于 2014-1-22 01:43 编辑

@迷糊的安安挖坟= =
作者: 624183062    时间: 2014-2-7 17:51
lz,这个怎么回事啊!?!实在是不得已的挖坟、、、请原谅

QQ图片20140207174956.jpg (15.44 KB, 下载次数: 14)

QQ图片20140207174956.jpg

作者: b0070029    时间: 2014-3-2 11:09
请问这个是为什么……

1.PNG (7.96 KB, 下载次数: 15)

问题

问题

作者: ♞丝瓜☣daye    时间: 2014-8-30 17:25
LZ ,我不会用,给我QQ,我加你,你教我,或者叫我QQ412616821
作者: 朢瑏禾火氺    时间: 2014-9-18 13:16
紫菜豆腐煲 发表于 2012-7-30 04:40
@asd11000楼主,按3楼的方法做了,在主菜单上是多了“任务”但按下去没反应,召唤不出任务界面。

“任务”按钮按下去没反应你是怎么解决的?
作者: konechaos    时间: 2015-1-26 18:31
朢瑏禾火氺 发表于 2014-9-18 13:16
“任务”按钮按下去没反应你是怎么解决的?

完全不懂脚本的我研究了半天 总算发现了方法 =   =
还是在 Scene_Menu 里面
在25行左右 加入    @command_window.set_handler(:task,      method(:command_task)) 就可以了  
效果:

    @command_window = Window_MenuCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill,     method(:command_personal))
    @command_window.set_handler(:equip,     method(:command_personal))
    @command_window.set_handler(:status,    method(:command_personal))
    @command_window.set_handler(:task,      method(:command_task))
    @command_window.set_handler(:formation, method(:command_formation))
    @command_window.set_handler(:save,      method(:command_save))
    @command_window.set_handler(:game_end,  method(:command_game_end))
    @command_window.set_handler(:cancel,    method(:return_scene))
作者: konechaos    时间: 2015-1-26 19:27
我想知道怎么调整几个窗口的位置,任务描述的窗口太小了,而且还在最上边不太符合人们一般的习惯..但完全不知道脚本里哪里能改位置和大小....
作者: 向天攻柚子    时间: 2015-2-3 14:28
konechaos 发表于 2015-1-26 18:31
完全不懂脚本的我研究了半天 总算发现了方法 =   =
还是在 Scene_Menu 里面
在25行左右 加入    @comman ...

为什么我加了这一行还是没有效果。。大神求救
作者: konechaos    时间: 2015-2-3 14:59
向天攻柚子 发表于 2015-2-3 14:28
为什么我加了这一行还是没有效果。。大神求救

我也是脚本小白呢 你其他的都照做了么

楼主的代码-任务菜单呼出
3楼的代码-在界面上添加任务选项
我之前的代码-将任务选项和任务菜单呼出挂钩

记得我的代码和3楼的代码不是新建 而是添加插入到系统原有的代码中
(顺便说下因为不会改这个任务菜单的布局所以脸疼 准备物色其他大大的任务脚本中...)
作者: 2642609165    时间: 2015-2-6 12:09
有人吗?是不是这样填写啊?

任务系统.png (4.53 KB, 下载次数: 31)

任务系统.png

任务系统2.png (4.75 KB, 下载次数: 26)

任务系统2.png

作者: brackwind    时间: 2015-2-26 22:38
如果是那種自己不去,派夥伴去執行任務
例如採集、訓練等等,夥伴執行任務時會脫離隊伍,等到任務時間結束後才回來,然後帶回撿到的道具或賺到的經驗值
這種系統能做出來嗎?
作者: ConsoleWrite    时间: 2018-4-21 12:18
我理解能力差,楼主能不能说明一下这个脚本怎么用啊?不会用啊!!!
作者: ConsoleWrite    时间: 2018-4-21 13:10
向天攻柚子 发表于 2015-2-3 14:28
**** 作者被禁止或删除 内容自动屏蔽 ****

还要把3楼的东西加进去就可以了 ,但是楼主很懒 就不能告诉大家道地怎么用!
作者: ConsoleWrite    时间: 2018-4-21 13:20
无论换什么文字任务描述 都是  任务描述1  这几个字
作者: 霖茜rosie    时间: 2020-3-12 12:07
aaa.谢谢分享!!
作者: 千里草    时间: 2022-5-13 23:02
多谢分享,学习中。
作者: 若月真倚    时间: 2022-5-14 22:35
本帖最后由 若月真倚 于 2022-5-14 22:56 编辑

第一次用这个脚本的时候先按照3楼照改。
但是使用下来,只要用楼主第二个添加任务的方式可以直接成功。但是第一个怎么也不成功,脚本出现报错。

但运气好,也可能是那里有个注释的关系。误打误撞找到了解决办法,解决方法就是在这个脚本的64行原先的“false”改成“true”就行

注意:这个脚本底部的设定部分需要和你的事件任务名称、描述、序号一致
楼主给的第一个添加任务脚本主要改这几点:
删去空格
任务名称、任务介绍加英文双引号(翻阅相关帖子才发现这个问题,,属于是遗漏了……)
例如:$game_party.new_task(1,"XXX(任务名称)","XXXXXXX(任务描述)",true,-1)

(测试了下,这样两个添加方法都是可以的!本人不懂脚本,也许还有问题欢迎大佬指出!!)



修改为“true”.png (1.95 KB, 下载次数: 22)

修改为“true”.png

作者: swwetgirl018    时间: 2023-7-21 21:20
我改來改去 用了兩種版本,有時候感覺原本模式好用,又覺得腳本模式也很好
表示我在做的時候沒有更動得很仔細




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1