Project1

标题: 无聊的任务系统 [打印本页]

作者: 945127391    时间: 2011-6-24 23:21
标题: 无聊的任务系统
本帖最后由 945127391 于 2013-2-10 17:53 编辑

      好久没来啦,没办法啊,要考试了.
        最近写了一个任务系统,恩....看图吧...
     




新建 WinRAR 压缩文件 (2).rar (253.28 KB, 下载次数: 6945)         
范例里说的不太清楚,所以我再说一遍:
  1. #============================================================================
  2. # ** 任务系统
  3. #    基本:
  4. #      $scene = Scene_Task.new(返回的场景, 游标初始index)       召唤查看任务场景
  5. #    说明:
  6. #      $game_party.accept_task(id)                                  接受id号任务
  7. #      $game_party.delete_task(Game_Task.new(id))             删除(放弃)id号任务
  8. #      $game_party.completed_task(id)                               完成id号任务
  9. #      $game_party.accept_task?(id)                   判断角色是否接受了id号任务
  10. #    快捷手段:
  11. #      visible_ts(id, kind)
  12. #                   在地图画面上显示id号任务的状态.kind:0为接受任务时显示的信息;
  13. #                               1为完成任务时显示的信息;2为任务失败时显示的信息;
  14. #                           3为放弃任务时显示的信息;4为无法放弃任务时显示的信息;
  15. #      accept_task(id)            接受id号任务并在地图上显示接受任务时显示的信息
  16. #      complete_task(id)          删除id号任务并在地图上显示完成任务时显示的信息
  17. #      fali_task(id)              删除id号任务并在地图上显示任务失败时显示的信息
  18. #      abandonment_task(id)       删除id号任务并在地图上显示放弃任务时显示的信息
  19. #============================================================================
复制代码
第26~68行设置任务的选项;
任务资料的格式:
  1. Task[0] = { # 0是任务id
  2.   "Icon" => 0, # 图标id
  3.   "Name" => "村民的烦恼",# 任务名称
  4.   "Caption" => ["      最近海边来了一只大虾,时常骚扰村民,你能帮村民",
  5.                 "解决这只大虾吗?",
  6.                 "提示:大虾的属性为水,可以用火系魔法达到双倍伤害的效",
  7.                 "果."],  # 简介,一行24个字
  8.   "Reward" => {"Item" => [[1, 5]],       # 完成任务后奖励的物品
  9.                "Weapon" => [],           # 完成任务后奖励的武器
  10.                "Armor" => [],            # 完成任务后奖励的防具
  11.                "Gold" => 1000,           # 完成任务后奖励的金钱
  12.                "Level_Plus" => [[1, 5]], # 完成任务后奖励的等级
  13.                "Exp_Plus" => [[1, 100]]  # 完成任务后奖励的经验
  14.                },
  15.   "Can Abandonment?" => false, # 可否放弃此任务
  16.   "Level" => 5  # 任务等级
  17.   }
复制代码
其他的.....看看范例吧.......

----------------------------------------------------------------------2011.7.1---------------------------------------------------------------------------
更新:
  1.任务介绍可以自动换行;
  2.把介绍和奖励分成两页显示;
  3.修正了Scene_Task的两个BUG.
  图片:

范例:[attach]61991[/attach]
再更新:
  接受了前辈的建议
   任务系统范例(2011-7-1更新).rar (2.99 MB, 下载次数: 2221)
----------------------------------------------------------------------2011.7.2---------------------------------------------------------------------------
更新:
  同一个任务只能接一次(但是可以无视是否接了该任务,强制再接一次)
    建议再看多一遍注释,accept_task方法有变.
范例: 任务系统范例(2011-7-2更新).rar (2.99 MB, 下载次数: 5911)
---------------------------------------------------------------------2011.7.8----------------------------------------------------------------------------
更新:
  可以获取任务状态;
  修正了一些BUG。
  1. #    基本:
  2. #      $scene = Scene_Task.new(返回的场景, 游标初始index)       召唤查看任务场景
  3. #    说明:
  4. #      $game_party.accept_task(id)                                  接受id号任务
  5. #      $game_party.delete_task(Game_Task.new(id))             删除(放弃)id号任务
  6. #      $game_party.completed_task(id)                               完成id号任务
  7. #      $game_party.task_status(id)   获取任务状态,未接受返回nil;未完成返回false;(New!)
  8. #                                                                 已完成返回true
  9. #      $game_party.accepted_task?(id)                   判断角色是否接受了id号任务
  10. #      $game_party.completed_task?(id)                判断角色是否完成了id号任务;(New!)
  11. #    快捷手段:
  12. #      visible_ts(id, kind)
  13. #                   在地图画面上显示id号任务的状态.kind:0为接受任务时显示的信息;
  14. #                               1为完成任务时显示的信息;2为任务失败时显示的信息;
  15. #                           3为放弃任务时显示的信息;4为无法放弃任务时显示的信息;
  16. #                                                           5为已接此任务的提示.
  17. #      accept_task(id, enforcement)
  18. #               接受id号任务并在地图上显示接受任务时显示的信息,enforcement为是否
  19. #                                           强制接受,true为是,可不填,默认为false
  20. #      complete_task(id)          删除id号任务并在地图上显示完成任务时显示的信息
  21. #      fail_task(id)              删除id号任务并在地图上显示任务失败时显示的信息
  22. #      abandonment_task(id)       删除id号任务并在地图上显示放弃任务时显示的信息
  23. #============================================================================
复制代码
范例:(其实......这个范例..........有等于没有....) 任务系统范例(7-8更新).rar (2.99 MB, 下载次数: 13534)

2013.2.10 如果完成任务没有删除的话,请看这里:
   http://rpg.blue/forum.php?mod=vi ... p;extra=#pid2111660
这是脚本的一个BUG,十分抱歉。
作者: fangqing9    时间: 2011-6-25 00:03
就不能给个完整的范例吗?
作者: sim5053    时间: 2011-6-25 11:36
好好玩的说~~~~~~~~~
作者: 冰舞蝶恋    时间: 2011-6-25 13:31
支持~~很新颖~~果然咱和前辈不是一个档次的~~~> <


冰舞蝶恋于2011-6-25 13:43补充以下内容:
额,还是建议下前辈吧,任务界面,scene_task,刷新有问题,
可以选择在必要的时候才刷新1遍,否则,像这样不断的刷新会很卡。
另,推荐参考一下原版任务系统的自动换行,不然这样设置真的很累。
另外那个奖励经验和等级[1,5][1,100]的1是什么意思?为什么在报酬表里没有显示奖励的等级和经验呢??
作者: 945127391    时间: 2011-6-27 19:14
冰舞蝶恋 发表于 2011-6-25 13:31
支持~~很新颖~~果然咱和前辈不是一个档次的~~~> <

关于刷新:谢谢提意见.
关于自动换行:研究是研究过,不过不太懂.
关于奖励经验和等级:1是代表奖励的角色id
至于显示吗....其实我是想不到在哪里显示奖励的经验与等级......
作者: 冰舞蝶恋    时间: 2011-6-27 21:48
945127391 发表于 2011-6-27 19:14
关于刷新:谢谢提意见.
关于自动换行:研究是研究过,不过不太懂.
关于奖励经验和等级:1是代表奖励的角色id

哦哦~~那全队经验捏?怎么办?前辈的那个脚本貌似设置的1是数据库id吧!
建议改成队伍id ~
另外。经验等级什么的就像金钱物品装备之类的显示在报酬表中吧~~{:nm_4:}



冰舞蝶恋于2011-7-1 22:40补充以下内容:
再来报个错哦,呵呵,真的是很有爱的系统,不过,
希望改成同一个任务不能同时接多个,
像范例里的接受闹鬼的屋子,
如果不断的点选接受任务还是可以接到。。
应该改成提示已接会比较好。

另外,提两个不算BUG的BUG。
首先 物质报酬表和人物经验等级的那个表没完全对齐……呃,这个应该不算吧,
还有就是可放弃任务和不可放弃也没对齐,一个前一个后。。
嗯,另外就是希望把发光字X星任务给去掉,改成在星级前写“任务难度:XXXXX”这样的。
改起来应该很简单吧~咱懒得动了呢,还是得麻烦前辈。
如果前辈觉得咱的提议不恰当的话,就直接无视上面的话好了~

另:祝前辈脚本技术越来越好,生活一帆风顺~
作者: 絀神入化    时间: 2011-7-2 12:56
喵,自我认为可以通过事件来完成。就是需要比较多的变量
作者: 李光兆    时间: 2011-7-2 13:39
wow~我震惊了
这是随便做出来的吗?这是无聊的吗?
楼主你太谦虚了
作者: summer92    时间: 2011-7-2 15:49
非常不错,看看比原来的任务系统好用了~~~?
作者: 冰舞蝶恋    时间: 2011-7-2 16:09
于是乎再来找茬~~XDD
更新的7.2版完成任务此行会出错~
      return $game_party.members[@task["Reward"]["Level_Plus"][index][0]]


冰舞蝶恋于2011-7-2 16:12补充以下内容:
汗,再提一个建议哦,希望加入按下X键 ESC键 0键(VX里是B)返回$scene = Scene_Map.new之类。
作者: lianran123456    时间: 2011-7-2 18:27
火系克水系......也可以...
作者: Fengyunkkx    时间: 2011-7-3 18:34
汗死了,直接去按完成任务,结果出现错误了……
作者: lsu666666    时间: 2011-7-4 09:14
提交一下冲突点
1.当一进入范例之后 接受了任务(村民的烦恼)之后 再点选同一个白色npc再强制接受一次任务之后
  会出现两个相同任务
2.出现两个相同任务之后 如果往左走点选左边橘色npc 点选任务完成之后 会出现错误 后弹出

作者: 冰舞蝶恋    时间: 2011-7-8 22:32
哈……又更新了,下载试试~~~
作者: lsu666666    时间: 2011-7-9 02:28
好棒....马上更新了  拍拍手  T.T  :)
作者: 1035943701    时间: 2011-7-9 12:26
看起来不错啊
作者: 萧萧落絮    时间: 2011-7-9 15:01
好用呀~赞一个
作者: 一瞬间的幻觉    时间: 2011-7-23 17:07
有BUG啊。。。不能完成任务


一瞬间的幻觉于2011-7-23 18:27补充以下内容:
[url]http://rpg.blue/forum.php?mod=viewthread&tid=197997&page=1#pid1727116pid1727116[/url]

BUG已经解决
作者: poiuy12348609    时间: 2011-7-30 10:06
錯誤啦~
作者: 灵魂骑士    时间: 2011-10-2 11:18
我用物品连着公共事件 令使用该物品时触发LZ大大的脚本
可是没任何任务的情况下为什么会弹:
脚本 '任务' 的第 120 行发生了 NoMethodError . undefined method `[]' for nil:NilClass
如果有接任务就没事的说

(如果这就是挖坟的话请处罚:funk:(抖抖...))
作者: lcz123lk    时间: 2011-10-3 13:15
非常不错
作者: xbjinxilong    时间: 2011-10-10 13:01
楼主一个随便  无聊就能做出 一个 系统。。。。。新人收藏 研究下。。。
作者: 黎明之夜    时间: 2011-11-19 00:15
壞勒~
作者: a88953327    时间: 2011-11-21 20:38
比叶子的那个简单多了,叶子的我都看不懂
作者: 小伤    时间: 2011-11-27 15:25
很不错的说~~~~~~~~~
作者: 296394065    时间: 2012-5-9 17:06
怎么在菜单里
我放在菜单里老出错
作者: tang19990919    时间: 2012-5-10 00:45
改一下运用到VA上行不?
作者: robin10305    时间: 2012-5-14 09:45
想完成任務該怎麼放指令碼

我怎麼放都出錯!
作者: 945127391    时间: 2012-5-19 00:14
本帖最后由 945127391 于 2012-5-19 00:30 编辑
robin10305 发表于 2012-5-14 09:45
想完成任務該怎麼放指令碼

我怎麼放都出錯!


在“事件-脚本”中输入:
  1. $game_party.completed_task(id)
复制代码
注意id要是已经被接受了的任务。
如果依然出错,请把出错时的那个对活框截下来给我,谢谢。

296394065发表于 2012-5-9 17:06:01
怎么在菜单里
我放在菜单里老出错


在main前插入新脚本,输入:
  1. class Scene_Menu < Scene_Base
  2.    def create_command_window
  3.     s1 = Vocab::item
  4.     s2 = Vocab::skill
  5.     s3 = Vocab::equip
  6.     s4 = Vocab::status
  7.     s5 = Vocab::save
  8.     s6 = Vocab::game_end
  9.     s7 = "任务"
  10.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s7, s5, s6])
  11.     @command_window.index = @menu_index
  12.     if $game_party.members.size == 0          # 如果無人在隊
  13.       @command_window.draw_item(0, false)     # 禁用[用品]
  14.       @command_window.draw_item(1, false)     # 禁用[技能]
  15.       @command_window.draw_item(2, false)     # 禁用[整備]
  16.       @command_window.draw_item(3, false)     # 禁用[狀態]
  17.     end
  18.     if $game_system.save_disabled             # 如果禁止存檔
  19.       @command_window.draw_item(4, false)     # 禁用[存檔]
  20.     end
  21.   end
  22.    #--------------------------------------------------------------------------
  23.   # * 更新指令選擇輸入資訊
  24.   #--------------------------------------------------------------------------
  25.   def update_command_selection
  26.     if Input.trigger?(Input::B)
  27.       Sound.play_cancel
  28.       $scene = Scene_Map.new
  29.     elsif Input.trigger?(Input::C)
  30.       if $game_party.members.size == 0 and @command_window.index < 4
  31.         Sound.play_buzzer
  32.         return
  33.       elsif $game_system.save_disabled and @command_window.index == 4
  34.         Sound.play_buzzer
  35.         return
  36.       end
  37.       Sound.play_decision
  38.       case @command_window.index
  39.       when 0      # 用品
  40.         $scene = Scene_Item.new
  41.       when 1,2,3  # 技能,整備,狀態
  42.         start_actor_selection
  43.       when 4
  44.         $scene = Scene_Task.new(Scene_Menu.new(4))
  45.       when 5      # 存檔
  46.         $scene = Scene_File.new(true, false, false)
  47.       when 6      # 結束遊戲
  48.         $scene = Scene_End.new
  49.       end
  50.     end
  51.   end
  52. end
复制代码
大概就行了.
作者: 旺仔牛奶糖    时间: 2012-6-22 22:55
我觉得还是用事件做任务比较好吧.因为每个新任务都要重新加一次脚本,会比较麻烦.而且看得不是很清楚.这是个缺点..


‘‘──旺仔牛奶糖于2012-6-22 22:56补充以下内容:

楼主的系统很棒啊!{:4_149:}
’’
作者: 薇尔栖栖    时间: 2012-6-30 16:43
非常好,赞一个~
作者: 囧天使    时间: 2012-7-11 18:42
虽然是初学者,但是还是下载下来看看。
作者: 87727706    时间: 2012-7-16 11:00
怎么查看任务?

作者: 艾拉·贝尔    时间: 2012-7-16 11:56
不错 决定收入0.0
作者: 歌莉·萌露    时间: 2012-7-18 15:12
这个任务系统号华丽呀
现在纠结是用叶子的还是用楼主的
作者: ooxx_    时间: 2012-7-30 15:02
话说我为什么下载不了啊..老是提示下载失败..
作者: 黄濑凉太    时间: 2013-5-22 10:47
完成任务没有用。。。脚本输入完成任务,可是没有用,那个任务依然在那里。。。。
作者: oqvdi    时间: 2013-5-25 10:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: asd6    时间: 2015-5-23 14:02
为什么提交任务的时候会崩溃,说:脚本163行发生了 NoMethodError
                                             undefined method `[]' for nil:NilClass
作者: asd6    时间: 2015-5-23 14:05
asd6 发表于 2015-5-23 14:02
为什么提交任务的时候会崩溃,说:脚本163行发生了 NoMethodError
                                       ...

156  #----------------------------------------------------------------------
157  # * 获取任务奖赏等级/经验的受益人(le = level & exp)
158  #     kind:0为level;1为exp.
159  #----------------------------------------------------------------------
160  def reward_le_actor(kind, index)
161   case kind
162    when 0
163      return $game_actors[@task["Reward"]["Level_Plus"][index][0]]
164    when 1
165      return $game_actors[@task["Reward"]["Exp_Plus"][index][0]]
167    end
168  end

是起冲突了吗?
作者: 糯米_包子    时间: 2015-6-13 21:32
为什么我用的时候总显示32行Task_Abandonment_Task_Input = Input::Letters["E"] # 放弃任务按钮........[按键]出错?




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