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

Project1

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

[已经解决] 任务系统如何添加自定义任务

[复制链接]

Lv1.梦旅人

梦石
0
星屑
241
在线时间
68 小时
注册时间
2008-12-15
帖子
143
跳转到指定楼层
1
发表于 2014-6-19 21:13:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 marco99168 于 2014-6-19 21:14 编辑

我在网站上面下的那个超级系统合成。

但是这个系统本身只有10个自带任务。

类似这样

  #-----------------------------------------------------------------------------
  3  => [
    # クエスト名,
    "初級試練@1",
    # 依頼主(""なら表示なし),
    "佣兵行会",
    # ランク Rank.new(quest, r_next, r_down),
    Rank.new(1, 0),  # 成功時にランク上昇
    # 初期状態 StXXX.new,
    StGuild.new(true), # ギルドのクエスト、初期表示ON
    # 前提条件[CondXXX.new, …],
    [],   # 条件なし
    # クリア条件[CondXXX.new, …],
    [CondItem.new(1, 2)], # アイテム[1]×2持っている
    # 報酬[RsltXXX.new, …],
    [RsltMoney.new(500),    # 成功時:500G
     RsltItem.new(2),       # 成功時:アイテム[2]
     RsltCmnEv.new(1),      # 成功時:コモンイベント[1]
     RsltLevel.new(0, 1, false)], # 成功時:全員Lv+1、報酬欄には表示しない
    # スイッチ操作Sw.new(play, clear, fail),
    Sw.new,  # SW操作しない
    # クエスト内容
    "簡単な仕事"
  ],
  #-----------------------------------------------------------------------------
  4  => [
    # クエスト名

这个能自己添加自创任务吗?比如通过事件往里面加主线任务。

我是一点也不会啊。

我的意思是不经过这个接受任务行会的面板。

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2014-6-20 09:31:39 | 只看该作者
本帖最后由 VIPArcher 于 2014-6-21 22:52 编辑

这个嘛,你得把所有任务写在这个脚本下面。ID记好。
然后这个是开始任务
  1. quest_start(id) #id为你要开始的任务ID
  2. #这句在原脚本里是这样的
  3. #--------------------------------------------------------------------------
  4.   # ◆任务开始
  5.   # id  : 任务ID
  6.   #--------------------------------------------------------------------------
  7.   def quest_start(id)
  8.     $game_system.quest[id].quest_start
  9.   end
复制代码
其他的例如直接完成任务也可以直接用事件脚本做参考如下
  1. #--------------------------------------------------------------------------
  2.   # ● 任务列表呼出
  3.   #--------------------------------------------------------------------------
  4.   def call_questlist
  5.     SceneManager.call(Scene_QuestList) if defined?(Scene_QuestList)
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 公会界面呼出
  9.   #--------------------------------------------------------------------------
  10.   def call_guild(id=0)
  11.     SceneManager.call(Scene_Guild) if defined?(Scene_Guild)
  12.     SceneManager.scene.prepare(id)
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 任务结果显示
  16.   #--------------------------------------------------------------------------
  17.   def call_questresult
  18.     if defined?(Window_QuestResult) and SceneManager.scene_is?(Scene_Map)
  19.       SceneManager.scene.exec_questresult
  20.     end
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ◆任务数据初期化
  24.   # id  : 任务ID(id=0 全任务初期化)
  25.   #--------------------------------------------------------------------------
  26.   def quest_reset(id=0)
  27.     id == 0 ? $game_system.quest.reset : $game_system.quest[id].reset
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ◆任务开始
  31.   # id  : 任务ID
  32.   #--------------------------------------------------------------------------
  33.   def quest_start(id)
  34.     $game_system.quest[id].quest_start
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ◆任务成功
  38.   # id    : 任务ID
  39.   # force : false=等到报告公会任务完成(只有公会任务)
  40.   #         true =公会任务完成(不等到报告任务)
  41.   # audio : 是否播放ME/SE
  42.   #--------------------------------------------------------------------------
  43.   def quest_clear(id, force=false, audio=true)
  44.     $game_system.quest[id].quest_clear(force, audio)
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ◆任务失败
  48.   # id    : 任务ID
  49.   # force : false=等到报告公会任务完成(只有公会任务)
  50.   #         true =公会任务完成(不等到报告任务)
  51.   # audio : 是否播放ME/SE
  52.   #--------------------------------------------------------------------------
  53.   def quest_fail(id, force=false, audio=true)
  54.     $game_system.quest[id].quest_fail(force, audio)
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ◆任务显示変更
  58.   # id    : 任务ID
  59.   # flag  : true=表示ON / false=表示OFF
  60.   #--------------------------------------------------------------------------
  61.   def quest_visible(id, flag=true)
  62.     $game_system.quest[id].visible = flag
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ◆任务内容変更
  66.   # id    : 任务ID
  67.   # text  : 任务内容
  68.   #--------------------------------------------------------------------------
  69.   def quest_change_text(id, text)
  70.     $game_system.quest[id].text = text.dup
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ◆任务委托内容追加
  74.   # id    : 任务ID
  75.   # text  : 追加内容
  76.   #--------------------------------------------------------------------------
  77.   def quest_add_text(id, text)
  78.     $game_system.quest[id].text += text.dup
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ◆任务报酬金额変更
  82.   # id    : 任务ID
  83.   # money : 报酬金额
  84.   #--------------------------------------------------------------------------
  85.   def quest_change_premium(id, money)
  86.     $game_system.quest[id].change_premium(money)
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ◆任务报酬金追加
  90.   # id    : 任务ID
  91.   # money : 追加报酬金
  92.   #--------------------------------------------------------------------------
  93.   def quest_add_premium(id, money)
  94.     $game_system.quest[id].add_premium(money)
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ◆任务报酬変更
  98.   # id      : 任务ID
  99.   # result  : 报酬[RsltXXX.new, …]
  100.   #--------------------------------------------------------------------------
  101.   def quest_change_result(id, result)
  102.     $game_system.quest[id].result = result.dup
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ◆任务报酬追加
  106.   # id      : 任务ID
  107.   # result  : 报酬 RsltXXX.new
  108.   #--------------------------------------------------------------------------
  109.   def quest_add_result(id, result)
  110.     $game_system.quest[id].result.push(result.dup)
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ◆任务报酬内容显示変更
  114.   # id    : 任务ID
  115.   # flag  : true=表示ON / false=表示OFF
  116.   #--------------------------------------------------------------------------
  117.   def quest_view_result(id, flag=true)
  118.     $game_system.quest[id].view_res = flag
  119.   end
复制代码
@taroxd  

点评

事件脚本里直接调用方法就行了。开始任务是quest_start(id)  发表于 2014-6-20 09:33

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
241
在线时间
68 小时
注册时间
2008-12-15
帖子
143
3
 楼主| 发表于 2014-6-20 21:42:39 | 只看该作者
本帖最后由 marco99168 于 2014-6-20 21:54 编辑

请问一下,我发这个算是任务吗?还是只是任务介绍?
如果是任务,那么任务ID是什么?就像是我这个貌似没出现过ID这种字眼吧。

点评

任务的写法你可以参照脚本里面 你复制这段的地方,配合谷歌翻译一下,大概就能懂了。  发表于 2014-6-21 01:55
你不用回复,我是不会及时看到的。  发表于 2014-6-21 01:53
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

4
发表于 2014-6-21 01:51:41 | 只看该作者
你发的就是任务范例,ID为3
  1. 3  => [                         #任务ID为3
  2.     # クエスト名,
  3.     "初級試練@1",              #任务名为<初級試練@1>
  4.     # 依頼主(""なら表示なし),
  5.     "佣兵行会",                  #求助者为<佣兵行会>
  6.     # ランク Rank.new(quest, r_next, r_down),
  7.     Rank.new(1, 0),              # 成功時公会评级+1
  8.     # 初期状態 StXXX.new,
  9.     StGuild.new(true),           # 可以在公会告示板接收
  10.     # 前提条件[CondXXX.new, …],
  11.     [],                          # 可以接受任务的前提条件[他这里为空]
  12.     # クリア条件[CondXXX.new, …],
  13.     [CondItem.new(1, 2)],        # 完成任务的条件物品ID为[1]×2个以上
  14.     # 報酬[RsltXXX.new, …],
  15.     [RsltMoney.new(500),    # 成功時:+500G
  16.      RsltItem.new(2),       # 成功時:アイテム[2]
  17.      RsltCmnEv.new(1),      # 成功時:コモンイベント[1]
  18.      RsltLevel.new(0, 1, false)], # 成功時:全員Lv+1、報酬欄には表示しない
  19.     # スイッチ操作Sw.new(play, clear, fail),
  20.     Sw.new,  # SW操作しない
  21.     # クエスト内容
  22.     "簡単な仕事"                 #任务介绍
  23.   ],
  24.   #-----------------------------------------------------------------------------
  25.   4  => [               # 这是下一个ID为4的任务

  26.     # クエスト名        #里面貌似有不少写法可以用,好好琢磨琢磨哈
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
241
在线时间
68 小时
注册时间
2008-12-15
帖子
143
5
 楼主| 发表于 2014-6-21 21:35:27 | 只看该作者
再感谢之余,请不用在意,我也只是没事才玩玩的。

继续……

那么我在触发上面点开了一个剧本然后这么复制到上面,这么写道

def quest_start(1)

$game_system.quest[id].quest_start

end

然后就给我蹦出来(当然,个人以为在下面写也是一样的……)

点评

只要这一句quest_start(1)   发表于 2014-6-21 21:38
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

6
发表于 2014-6-21 21:40:58 | 只看该作者
marco99168 发表于 2014-6-21 21:35
再感谢之余,请不用在意,我也只是没事才玩玩的。

继续……

那个是在脚本里面那么写定义方法的,你用的时候只需要用到def 后面那句就行了
你没看看沙发点评?在好好琢磨一下呗

点评

楼主又来提问啦啦啦~~~  发表于 2014-6-22 12:56
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
241
在线时间
68 小时
注册时间
2008-12-15
帖子
143
7
 楼主| 发表于 2014-6-21 22:48:35 | 只看该作者
本帖最后由 marco99168 于 2014-6-21 23:02 编辑

嗯……


原来如此……感谢了……

那么再一次小白的问道,物品ID照猫画虎能懂了

但是万一类似于送信任务

这种需要玩变量该怎么写

……

嗯,你别嫌麻烦啊……

我写的任务无论怎么样,最后都会被公会那个所显示。

能不能不显示啊……(说的是,任务报告……这个无视也可以……有办法能告诉我最好。)

还是干脆把公会给删了……

点评

你去参照一下任务系统定义那一页脚本。还是不懂再问吧,问新问题最好开新帖问。你这样在下面改别人不一定能看到。  发表于 2014-6-22 13:04
回复 支持 反对

使用道具 举报

Lv4.逐梦者

运否天赋

梦石
10
星屑
5243
在线时间
3567 小时
注册时间
2014-5-15
帖子
1599

开拓者

8
发表于 2014-6-22 13:05:13 | 只看该作者
本帖最后由 喵kano 于 2014-6-22 13:09 编辑

https://rpg.blue/thread-358534-1-2.html
楼主用的是这个脚本吗?需要变量的任务可以利用SW开关操作,在任务开始时启动开关,然后并行公共事件调用变量。
想让公会任务初期不显示的话,可以设置初期状态StGuild.new(false)。
调用脚本命令'quest_visible(任务编号, flag=true)'就可以显示该任务了。
土猫三国开发完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
241
在线时间
68 小时
注册时间
2008-12-15
帖子
143
9
 楼主| 发表于 2014-6-22 16:34:52 | 只看该作者
  11 => [
    # クエスト名,
    "死亡的药水",
    # 依頼主(""なら表示なし),
    "某个家伙",
    # ランク Rank.new(quest, r_next, r_down),
    Rank.new(10, nil, 1),  # 成功時:変動なし、失敗時:ランク1へダウン
    # 初期状態 StXXX.new,
    StGuild.new(false),  其实就是设定了这样,在公会任务报告里面该有的话,还是会有的。    # 前提条件[CondXXX.new, …],
    [],
    # クリア条件[CondXXX.new, …],
    [CondItem.new(10, 2)],
    # 報酬[RsltXXX.new, …],
    [RsltMoney.new(100000)],
    # スイッチ操作Sw.new(play_sw, clear_sw, fail_sw),
    Sw.new,       这个地方是打开某某开关吗?
   # クエスト内容
    "魔王倒下自然会爆出来。"

点评

各种错误.....ORZ  发表于 2014-6-22 16:40
你知道吗?使用论坛的【回复】功能可以让对方看到提醒哦  发表于 2014-6-22 16:38
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

10
发表于 2014-6-22 19:57:39 | 只看该作者
本帖最后由 VIPArcher 于 2014-6-22 20:02 编辑
marco99168 发表于 2014-6-22 16:34
11 => [
    # クエスト名,
    "死亡的药水",


不在公共板出现是  初期状態那里这样写StEv.new,
开关操作是Sw.new(1, 2, 3),意思是任务成功打开1号开关,失败打开2号开关,放弃打开3号开关。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 09:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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