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

Project1

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

[已经过期] VA合集中的任务系统使用方法

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
144 小时
注册时间
2011-7-18
帖子
169
跳转到指定楼层
1
发表于 2013-10-29 13:37:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Xnan 于 2013-11-12 20:14 编辑

VA脚本合集 中有个任务系统 始终没法弄懂,又找不到其他任务脚本,所以拿出本人所有VIP悬赏,望各位大侠指点迷津。。。。
http://rpg.blue/thread-247817-1-1.html
其实我要求的功能很简单,只需要触发NPC接受了任务,在菜单的任务中可以看到已经接受的任务,以及完成了哪些任务。

点评

那么加我QQ,我教你  发表于 2013-11-18 14:35
有其他任务脚本  发表于 2013-11-2 08:58

Lv1.梦旅人

梦石
0
星屑
50
在线时间
378 小时
注册时间
2013-10-14
帖子
215
2
发表于 2013-10-29 13:57:03 | 只看该作者
本帖最后由 batfjtn 于 2013-10-29 17:49 编辑

脚本:任务系统设定

QUEST = {之下
[说明]
  我每个任务设置。
  更多的排名,StXXX,CondXXX,RsltXXX瑞士法郎(或者使用的东西,如参数)
  请参阅节以及定义]
[格式]
  任务ID=>{
    #任务名称,
    #(如果没有显示“)的主要要求,
    #排名Rank.new(追求,r_next r_down)的,
    #初始状态StXXX.new的,
    先决条件[CondXXX.new,...]
RUBY 代码复制
  1. #QUEST = {
  2.   1 => [
  3.     # 任务名称(格式:"任务名",)
  4.     # 委托人(格式:"我给你任务",)
  5.     # 排行升级设置 Rank.new(quest, r_next, r_down),
  6.  
  7.     # 任务获得方式 StGuild.new或者为StEv.new二选一...
  8.     #            StGuild.new为(True)时会直接在列表中显示
  9.     #            如果没有定义的话需要在脚本事件中使用quest_start(任务ID)来接受任务
  10.     #             StEv.new
  11.     #            还没有找到这个任务的使用方式......
  12.  
  13.     # 获取条件[CondXXX.new, …],
  14.     # 完成条件[CondXXX.new, …],
  15.     # 完成报仇[RsltXXX.new, …],
  16.     # 开关操作Sw.new(play_sw, clear_sw, fail_sw),
  17.     # "任务内容"
  18.  
  19.     #以上内容不能修改顺序..说明我都做了很大的表示~!应该能看懂了
  20.   ],
  21.   2 => [-----------],
  22.   3 => [-----------],
  23.   4 => [-----------],
  24.   5 => [-----------],
  25. }
  26.  
  27.     # ---------代表1里面的东西

    #清除条件[CondXXX.new,...]
    #悬赏[RsltXXX.new,...]
    #切换:操作Sw.new(play_sw,clear_sw,fail_sw),
    #任务内容
  }

原本帖子就有写的~~!!

点评

你这个翻译的看不懂,求详细点,最好有范列  发表于 2013-10-29 14:03
最简单的学习方法就是努力回答别人的问题...
任何教程都没有实践来的重要...
XP小问题都能自己解决了,剩下的就是脚本了...
╰⋛⋋⊱⋋๑角⊱☠c色๑⋌⊰⋌⋚╯
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
367
在线时间
1292 小时
注册时间
2013-1-12
帖子
3590

贵宾

3
发表于 2013-10-30 10:34:54 | 只看该作者

点评

可是我不会用 啊  发表于 2013-10-30 22:38

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
4
发表于 2013-11-10 20:07:44 | 只看该作者
RUBY 代码复制
  1. =begin
  2. 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
  3. 完成任务:$game_party.finish_task(领取任务时设定的数字)
  4. 对已有任务追加说明:$game_party.add_task(任务编号,任务追加描述)
  5.  
  6. 如:
  7. 前面有事件$game_party.get_task(1,"测试","只是测试")
  8.  
  9. 此时任务1的说明为
  10.  
  11. >只是测试
  12.  
  13. 后面完成任务的脚本就是$game_party.finish_task(1)
  14.  
  15. 追加说明$game_party.add_task(1,"真的只是测试哦")
  16.  
  17. 此时任务1的说明为:
  18. >只是测试
  19. >真的只是测试哦
  20.  
  21. 召唤任务界面:SceneManager.call(Scene_Task)
  22.  
  23. 该脚本来自66rpg,发布者:韩云溪
  24. 改进:工藤由纪(论坛ID:zyyczp)
  25. =end
  26.  
  27. #===========================================================
  28. #●任务系统
  29. #===========================================================
  30. class Task
  31.   attr_reader :desc
  32.   attr_reader :finished
  33.   def initialize(origin_name,desc)
  34.     @origin_name = origin_name
  35.     @desc = desc
  36.     @finished = false
  37.   end
  38.   def name
  39.     if @finished
  40.       return @origin_name + "★"
  41.     else
  42.       return @origin_name
  43.     end
  44.   end
  45.   def desc=(desc)
  46.     @desc = desc
  47.   end
  48.  
  49.   def finish
  50.     @finished = true
  51.   end
  52.  
  53. end
  54.  
  55. class Game_Party < Game_Unit
  56.   alias old_init initialize
  57.   def initialize
  58.     old_init
  59.     @tasks = {}
  60.   end
  61.   def add_task(i,desc)
  62.     @tasks[i].desc = @tasks[i].desc + "\n" + desc
  63.   end
  64.   def get_task(i,name,desc)
  65.     @tasks[i]=Task.new(name,desc)
  66.   end
  67.   def have_task?(i)
  68.     @tasks[i] != nil
  69.   end
  70.   def finish_task(i)
  71.     @tasks[i].finish if have_task?(i)
  72.   end
  73.   def unfinished_tasks
  74.     n = []
  75.     for i in @tasks.values
  76.       next if i.finished
  77.       n.push(i)
  78.     end
  79.     return n
  80.   end
  81.   def finished_tasks
  82.     n = []
  83.     for i in @tasks.values
  84.       next unless i.finished
  85.       n.push(i)
  86.     end
  87.     return n
  88.   end
  89. end
  90.  
  91. class Window_Task_Type < Window_HorzCommand
  92.   #--------------------------------------------------------------------------
  93.   # ● オブジェクト初期化
  94.   #--------------------------------------------------------------------------
  95.   def initialize
  96.     super(0, 0)
  97.     activate
  98.   end
  99.   def window_width
  100.     return Graphics.width
  101.   end
  102.   def col_max
  103.     return 3
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● コマンドリストの作成
  107.   #--------------------------------------------------------------------------
  108.   def make_command_list
  109.     add_command("未完成任务",  :unfinished_task)
  110.     add_command("已完成任务", :finished_task)
  111.     add_command("取消", :cancel)
  112.   end
  113. end
  114.  
  115. class Window_TaskLeft < Window_Selectable
  116.   attr_reader :finished
  117.   def initialize
  118.     super(0,48,160,Graphics.height - 48)
  119.     create_contents
  120.     @finished = false
  121.     [url=home.php?mod=space&uid=370741]@Index[/url] = 0
  122.     refresh
  123.     deactivate
  124.   end
  125.   def set_finish(finish)
  126.     @finished = finish
  127.     set_item_max
  128.   end
  129.   def item_max
  130.     return @item_max != nil ? @item_max : 0
  131.   end
  132.   def set_item_max
  133.     if @finished
  134.       @item_max = $game_party.finished_tasks.size
  135.     else
  136.       @item_max = $game_party.unfinished_tasks.size
  137.     end
  138.   end
  139.  
  140.   def refresh
  141.     set_item_max
  142.     super
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 項目の描画
  146.   #--------------------------------------------------------------------------
  147.   def draw_item(index)
  148.     text = ""
  149.     unless @finished
  150.       if $game_party.unfinished_tasks[index] != nil
  151.         text = $game_party.unfinished_tasks[index].name
  152.       end
  153.     else
  154.       if $game_party.finished_tasks[index] != nil
  155.         text = $game_party.finished_tasks[index].name  
  156.       end
  157.     end
  158.     draw_text(item_rect_for_text(index), text)
  159.   end
  160.  
  161. end
  162.  
  163. class Window_TaskRight < Window_Base
  164.   attr_reader :left_index
  165.   def initialize
  166.     super(160,48,Graphics.width - 160,Graphics.height - 48)
  167.     create_contents
  168.     @left_index = 0
  169.     @finished = false
  170.     refresh
  171.   end
  172.   def set_index(i)
  173.     @left_index = i
  174.     refresh
  175.   end
  176.   def set_finish(i)
  177.     @finished = i
  178.   end
  179.  
  180.   def refresh
  181.     contents.clear
  182.     draw_desc
  183.   end
  184.   def draw_desc
  185.     if @finished
  186.       if $game_party.finished_tasks[@left_index] != nil
  187.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  188.       end
  189.     else
  190.       if $game_party.unfinished_tasks[@left_index] != nil
  191.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  192.       end
  193.     end
  194.   end
  195.  
  196. end
  197.  
  198. class Scene_Task < Scene_Base
  199.   def start
  200.     super
  201.     create_task_type_window
  202.     create_left_window
  203.     create_right_window
  204.   end
  205.   def update
  206.     super
  207.     if @left_window.active
  208.       if Input.trigger?(:B)
  209.         @left_window.deactivate
  210.         @task_type_window.activate
  211.       end
  212.       if Input.press?(:UP) || Input.press?(:DOWN)
  213.         @right_window.set_finish(@left_window.finished)
  214.         @right_window.set_index(@left_window.index)
  215.       end
  216.     end
  217.   end
  218.  
  219.   def terminate
  220.     super
  221.   end
  222.   def create_task_type_window
  223.     @task_type_window = Window_Task_Type.new
  224.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  225.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  226.     @task_type_window.set_handler(:cancel,method(:return_scene))
  227.   end
  228.   def create_left_window
  229.     @left_window = Window_TaskLeft.new
  230.     @left_window.set_finish(false)
  231.     @left_window.refresh
  232.   end
  233.   def create_right_window
  234.     @right_window = Window_TaskRight.new
  235.     @right_window.refresh
  236.   end
  237.   def view_unfinished_task
  238.     @left_window.set_finish(false)
  239.     @left_window.refresh
  240.     @left_window.activate
  241.     @task_type_window.deactivate
  242.     @right_window.set_finish(false)
  243.     @right_window.set_index(@left_window.index)
  244.   end
  245.   def view_finished_task
  246.     @left_window.set_finish(true)
  247.     @left_window.refresh
  248.     @left_window.activate
  249.     @task_type_window.deactivate
  250.     @right_window.set_finish(true)
  251.     @right_window.set_index(@left_window.index)
  252.   end
  253.  
  254. end

点评

把121行改成@Index = 0  发表于 2013-11-12 21:58
121行显示错误。。。  发表于 2013-11-12 20:06
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
144 小时
注册时间
2011-7-18
帖子
169
5
 楼主| 发表于 2013-11-12 20:06:39 | 只看该作者
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
144 小时
注册时间
2011-7-18
帖子
169
6
 楼主| 发表于 2013-11-15 14:58:50 | 只看该作者
{:4_147:}没人回答 悬赏可以取消吗
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
40
在线时间
90 小时
注册时间
2013-6-26
帖子
92
7
发表于 2013-11-15 17:31:30 | 只看该作者
同脚本盲,表示这一大串脚本还真不知道怎么用
我没有耐心也没收藏癖,搞了半天的蛋少年就点下吧



回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
758
在线时间
2064 小时
注册时间
2011-10-3
帖子
1686
8
发表于 2013-11-15 18:42:44 | 只看该作者
{:2_276:}需要人来加QQ手把手教你么

点评

需要!!  发表于 2013-11-18 11:27
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
51
在线时间
133 小时
注册时间
2010-9-23
帖子
137
9
发表于 2013-11-15 21:32:05 | 只看该作者
哇土豪我们做朋友吧...
这里事件党(其实是因为脚本盲的原因)。。
可以用简单的事件做就是麻烦= =
我是用物品纸条【任务名称】代替的,然后要用到公共事件显示文字(任务内容)什么的。
就可以变成【伪·任务系统】了》。。

点评

不需要这个  发表于 2013-11-18 11:27
麻烦叫我栗子吧!
虽然ID是字母君....

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
117 小时
注册时间
2008-7-18
帖子
43
10
发表于 2013-12-4 23:09:42 | 只看该作者
正好我在用这个脚本,可以和你分享下用法
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-30 02:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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