Project1

标题: 请问任务公会脚本的聊天进展任务怎么设置啊? [打印本页]

作者: qpzm1027    时间: 2018-2-7 13:12
标题: 请问任务公会脚本的聊天进展任务怎么设置啊?
比如,我i设置了完成方式为 聊天后通过任务。  这时候我添加一个NPC人物,在人物事件里添加什么才能够,使和他多话后,完成聊天,可以去交任务呢???
教教我谢谢啊

111.png (51.94 KB, 下载次数: 28)

111.png

22222.png (168.7 KB, 下载次数: 25)

22222.png

作者: WantMy蕙    时间: 2018-2-7 17:56
那你就设计成对话完成后打开开关,判断若开关打开就完成任务哇
作者: qpzm1027    时间: 2018-2-7 23:09
不会啊,我贴一下,脚本 ,我是想要,对话后不马上完成任务,而是只在任务界面显示谈话完成的步骤,然后我再去交任务

作者: qpzm1027    时间: 2018-2-7 23:10
#==============================================================================
# ■ VXAce-RGSS3-4-def 任务系统【定义】          by Claimh  汉化:疾风怒涛
#------------------------------------------------------------------------------
# 任务设定中可以使用编辑的类别
# 【设定】在上方的section中已经配置相关定义
#------------------------------------------------------------------------------
#各设定中可以使用的类别一览
# ● 等级 Rank.new
#   Rank类       : 任务Rank等级的相关情报
# ● 初期状态 StXX.new
#   Status类     : 详细设定向(不推荐)
#   StEv类       : 事件任务板
#   StGuild类    : 公会任务板
# ● 前提条件[CondXXX.new, …] 明确条件[CondXXX.new, …]
#   Condition类  : 详细设定向(不推荐)
#   CondItem类   : 物品
#   CondWeapon类 : 武器
#   CondArmor类  : 防具
#   CondMoney类  : 所持金
#   CondSw类     : 开关
#   CondVal类    : 变量
#   CondActor类  : 队伍中是否有某角色?
#   CondLevel类  : Level等级
#   CondEnemy类  : 击倒敌人数
#   CondQuestT类 : 任务结束(成功)是否保留记录?
#   CondQuestF类 : 任务结束(失败)是否保留记录?
#   CondSkill类  : 技能习得
#   CondClass类  : 职业判定
#   CondScript类 : 脚本判定(上级者向)
# ● 报酬[RsltXXX.new, …]
#   Result类     : 详细设定向(不推荐)
#   RsltItem类   : 成功時获得物品
#   RsltWeapon类 : 成功時获得武器
#   RsltArmor类  : 成功時获得防具
#   RsltMoney类  : 成功時获得金钱
#   RsltSkill类  : 成功時习得技能
#   RsltCmnEv类  : 成功時发动公共事件
#   RsltClass类  : 成功時职业升阶
#   RsltLevel类  : 成功時等级提升
#   RsltActor类  : 成功時角色加入
#   RsltQuestT类 : 成功時任务显示ON変更
#   RsltQuestF类 : 成功時任务显示OFF変更
#   RsltQuestS类 : 成功時连锁任务开始
#   RsltMoneyP类 : 失败時的惩罚(交付违约金)
#   RsltCmnEvP类 : 失败時发动公共事件
#   RsltLevelP里 : 失败時等级下降
#   RsltQuestTP类: 失败時任务显示ON変更
#   RsltQuestFP类: 失败時任务显示OFF変更
# ● 开关操作Sw.new(play_sw, clear_sw, fail_sw)
#   Sw类         : 任务开始・成功・失败時切换开关状态
#==============================================================================

module Quest
#-------------------------------------------------------------------------------
#【设定用固定定义】
#-------------------------------------------------------------------------------
  # 音声タイプ
  ME=0;SE=1
  # 任务列表中的种类
  PLAYING=0;CLEAR=1;FAIL=2;STAY=-1
  # 公会种类
  REPORT=3;SHOP=4;EXIT=5
  # 报酬・条件使用种类
  ITEM=0;WEAPON=1;ARMOR=2;MONEY=3
  ACTOR=5;LEVEL=6;ENEMY=7;SKILL=8;CLASS=9
  SW=10;VAL=11;EV=12
  QUEST_T=15;QUEST_F=16;QUEST_S=17
  SCRIPT=20

# ● 任务等级 Rank.new
  #=============================================================================
  # 任务Rank等级用的类    Rank.new(quest, r_next, r_down)
  #【说明】
  #   决定任务Rank等级的类。
  #【引数】
  #   quest   : 任务的Rank等级(nil或1~10) <缺省设定为nil>
  #             Rank等级设定为nil时将不显示Rank等级
  #   r_next  : 任务成功時的Rank操作 <缺省设定为nil>
  #               nil  : 没有变化
  #               0    : 现在的Rank等级 + 1
  #               1-10 : 指定Rank等级変更
  #                      (自己当前的Rank等级比指定的Rank等级高则无效)
  #   r_down  : 任务失败時的Rank操作 <缺省设定为nil>
  #               nil  : 没有变化
  #               0    : 现在的Rank等级 - 1
  #               1-10 : 指定Rank等级変更
  #                      (自己当前的Rank等级比指定的Rank等级低则无效)
  #=============================================================================
  class Rank
    attr_reader :quest
    attr_reader :r_next
    attr_reader :r_down
    def initialize(quest=nil, r_next=nil, r_down=nil)
      @quest = quest; @r_next = r_next; @r_down = r_down
    end
  end

# ● 初期状态 StXX.new
  #=============================================================================
  # 初期状态用super类    Status.new(enable, visible, v_cond, v_res)
  #【说明】
  #   决定任务初期状态的类。
  #【引数】
  #   enable    : 公会可接受任务
  #   visible   : 任务初期显示状态 <缺省设定为true>
  #   v_cond    : 进展状况画面初期显示状态 <缺省设定为true>
  #   v_res     : 报酬画面初期显示状态 <缺省设定为true>
  #=============================================================================
  class Status
    attr_reader :enable
    attr_reader :visible
    attr_reader :v_res
    attr_reader :v_cond
    attr_reader :chg_ev
    attr_reader :ids
    def initialize(enable, visible=true, v_cond=true, v_res=true, chg_ev=false, ids=[])
      @enable=enable; @visible=visible; @v_res=v_res
      @v_cond=v_cond; @chg_ev = chg_ev; @ids = ids
    end
  end
  #-----------------------------------------------------------------------------
  # 初期状态用的类(事件用)    StEv.new(v_res, v_cond)
  #【说明】
  #   可以用来在事件中简易设定任务。
  #【引数】
  #   v_cond    : 进展状況画面初期显示状态 <缺省设定为false>
  #   v_res     : 报酬画面初期显示状态 <缺省设定为false>
  #-----------------------------------------------------------------------------
  class StEv < Status
    def initialize(v_cond=false, v_res=false)
      super(false, true, v_cond, v_res)
    end
  end
  #-----------------------------------------------------------------------------
  # 初期状态用的类(公会用)    StGuild.new(visible, v_cond, v_res, ids)
  #【说明】
  #   可以用来在公会中简易设定任务。
  #【引数】
  #   visible   : 任务初期显示状态 <缺省设定为false>
  #   v_cond    : 进展状況画面初期显示状态 <缺省设定为true>
  #   v_res     : 报酬画面初期显示状态 <缺省设定为true>
  #   ids       : 自公会接受的任务ID <缺省设定为没有限制>
  #-----------------------------------------------------------------------------
  class StGuild < Status
    def initialize(visible=false, v_cond=true, v_res=true, ids=[])
      super(true, visible, v_cond, v_res)
      @ids = ids
    end
  end
  #-----------------------------------------------------------------------------
  # 初期状态用的类(公会用)    StGuildEv.new(visible, v_cond, v_res, ids)
  #【说明】
  #   可以简易设定一个公会任务
  #   当使用这个类时,遵循以下任务设定。
  #     任务开始 : 在公会接受任务
  #     任务结束 : 事件结束(不能在公会报告)
  #【引数】
  #   visible   : 任务初期显示状态 <缺省设定为false>
  #   v_cond    : 进展状況画面初期显示状态 <缺省设定为true>
  #   v_res     : 报酬画面初期显示状态 <缺省设定为true>
  #   ids       : 自公会接受的任务ID <缺省设定为没有限制>
  #-----------------------------------------------------------------------------
  class StGuildEv < Status
    def initialize(visible=false, v_cond=true, v_res=true, ids=[])
      super(true, visible, v_cond, v_res, true)
      @ids = ids
    end
  end


# ● 前提条件[CondXXX.new, …] 明确条件[CondXXX.new, …]
  #=============================================================================
  # 条件用super类    Condition.new(type, id, num, lose, view, name)
  #【引数】
  #  type : 种类
  #  id   : 各个ID (MONEY, EV don't care)
  #  num  : 任务开始or任务clear必要的个数 (SW, EV, ACTOR, QUEST don't care)
  #  lose : 任务开始or任务clear時是否消费(ITEM, WEAPON, ARMOR, MONEY)
  #           true:减少   false:不减少
  #  view : 进展表示栏的显示与否
  #           true:显示 false:不显示
  #  name : 进展显示使用的名称(SW, VAL, EV)
  #=============================================================================
  class Condition
    def initialize(type, id=0, num=0, lose=false, view=true, name="")
      @type = type; @id = id; @num = num; @lose = lose; @name = name
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : ITEM类     CondItem.new(id, num, lose, view)
  #【条件】
  #   物品[id]达到必要个数[num]吗?
  #【引数】
  #   id   : 物品ID
  #   num  : 任务开始or任务clear必要的个数
  #   lose : 任务开始or任务clear時是否消费相应物品 <缺省设定为消费(true)>
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #-----------------------------------------------------------------------------
  class CondItem < Condition
    def initialize(id, num=1, lose=true, view=true)
      super(ITEM, id, num, lose, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : WEAPON类   CondWeapon.new(id, num, lose, view)
  #【条件】
  #   武器[id]达到必要个数[num]吗?
  #【引数】
  #   id   : 武器ID
  #   num  : 任务开始or任务clear必要的个数
  #   lose : 任务开始or任务clear時是否消费该武器 <缺省设定为消费(true)>
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #-----------------------------------------------------------------------------
  class CondWeapon < Condition
    def initialize(id, num=1, lose=true, view=true)
      super(WEAPON, id, num, lose, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : ARMOR类   CondArmor.new(id, num, lose, view)
  #【条件】
  #   防具[id]达到必要个数[num]吗?
  #【引数】
  #   id   : 防具ID
  #   num  : 任务开始or任务clear必要的个数
  #   lose : 任务开始or任务clear時是否消费该防具 <缺省设定为消费(true)>
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #-----------------------------------------------------------------------------
  class CondArmor < Condition
    def initialize(id, num=1, lose=true, view=true)
      super(ARMOR, id, num, lose, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : MONEY类  CondMoney.new(num, lose, view)
  #【条件】
  #   金钱数达到必要的[num]了吗?
  #【引数】
  #   num  : 任务开始or任务clear必要的金钱数
  #   lose : 任务开始or任务clear時是否消费 <缺省设定为消费(true)>
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #   name : 进展状況栏显示的名称 <缺省设定为金钱>
  #-----------------------------------------------------------------------------
  class CondMoney < Condition
    def initialize(num=1, lose=true, view=true, name="金钱")
      super(MONEY, 0, num, lose, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : SW类     CondSw.new(id, name, view)
  #【条件】
  #   开关[id]为ON时任务clear
  #【引数】
  #   id   : 开关ID
  #   name : 进展状況栏显示的名称 <缺省设定为SW>
  #   view : 进展状況栏是否显示 <缺省设定为表示(true)>
  #-----------------------------------------------------------------------------
  class CondSw < Condition
    def initialize(id, name="SW", view=true)
      super(SW, id, 0, false, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : VAL类    CondVal.new(id, num, name, view)
  #【条件】
  #   如果変量[id]的值达到[num]以上则任务clear
  #【引数】
  #   id   : 変量ID
  #   num  : 任务clear必要的变量值 <缺省设定为1>
  #   name : 进展状況栏显示的名称 <缺省设定为VAL>
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #-----------------------------------------------------------------------------
  class CondVal < Condition
    def initialize(id, num=1, name="VAL", view=true)
      super(VAL, id, num, false, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : EV类     CondEv.new(name, view)
  #【条件】
  #   在事件中实行quest_clear / quest_fail(不需要满足前提条件)
  #【引数】
  #   name : 进展状況栏显示的名称 <缺省设定为EV>
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #-----------------------------------------------------------------------------
  class CondEv < Condition
    def initialize(name="EV", view=true)
      super(EV, 0, 0, false, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : ACTOR类  CondActor.new(id, num, lose, view)
  #【条件】
  #   角色ー[id]是否在队伍中?
  #【引数】
  #   id   : 角色ーID
  #   num  : 0=角色ー在队伍中? / 1=角色ー不在队伍中?
  #   lose : true=成功時角色离队 <缺省设定为不离队(false)>
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #   name : 进展状況栏显示的名称 <缺省设定为角色名>
  #-----------------------------------------------------------------------------
  class CondActor < Condition
    def initialize(id, num=0, lose=false, view=true, name="")
      super(ACTOR, id, num, lose, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : LEVEL类  CondLevel.new(id, num, view)
  #【条件】
  #   角色ー[id]的Level等级是否达到指定值[num]以上?
  #   ※id=0则指代平均Level
  #【引数】
  #   id   : 角色ーID
  #   num  : 任务开始or任务clear必要的Level <缺省设定为1>
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #   name : 进展状況栏显示的名称 <缺省设定为角色名或队伍平均Level>
  #-----------------------------------------------------------------------------
  class CondLevel < Condition
    def initialize(id=0, num=1, view=true, name="")
      super(LEVEL, id, num, false, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : ENEMY类  CondEnemy.new(id, num, view)
  #【条件】
  #   敌人ー[id]击破数是否达到指定数[num]以上?
  #   ※击破数需要配合击破数计算器脚本使用
  #【引数】
  #   id   : 敌人ーID
  #   num  : 任务开始or任务clear必要的击破数 <缺省设定为1>
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #   name : 进展状況栏显示的名称 <缺省设定为敌人名>
  #-----------------------------------------------------------------------------
  class CondEnemy < Condition
    def initialize(id=0, num=1, view=true, name="")
      super(ENEMY, id, num, false, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : QUEST类  CondQuestT.new(id, view)
  #【条件】
  #   任务[id]是否结束(成功)?
  #【引数】
  #   id   : 任务ID
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #   name : 进展状況栏显示的名称 <缺省设定为任务名>
  #-----------------------------------------------------------------------------
  class CondQuestT < Condition
    def initialize(id=0, view=true, name="")
      super(QUEST_T, id, 0, false, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : QUEST类  CondQuestF.new(id, view)
  #【条件】
  #   任务[id]是否结束(失败)?
  #【引数】
  #   id   : 任务ID
  #   view : 进展状況栏是否显示 <缺省设定为显示(true)>
  #   name : 进展状況栏显示的名称 <缺省设定为任务名>
  #-----------------------------------------------------------------------------
  class CondQuestF < Condition
    def initialize(id=0, view=true, name="")
      super(QUEST_F, id, 0, false, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : Skill类  CondSkill.new(skill_id, actor_id, view)
  #【条件】
  #   角色ー[actor_id]技能[skill_id]是否已习得?
  #   ※actor_id=0 判断队伍内是否有成员习得特定技能
  #【引数】
  #   skill_id  : 技能ID
  #   actor_id  : 角色ーID
  #   view      : 进展状況栏是否显示 <缺省设定为为显示(true)>
  #   name      : 进展状況栏显示的名称 <缺省设定为技能名>
  #-----------------------------------------------------------------------------
  class CondSkill < Condition
    def initialize(skill_id, actor_id=0, view=true, name="")
      super(SKILL, skill_id, actor_id, false, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : Class类  CondClass.new(class_id, actor_id view)
  #【条件】
  #   职业[id]-是否有成员是XX职业?
  #【引数】
  #   class_id  : 职业ID
  #   actor_id  : 角色ーID
  #   view      : 进展状况栏是否显示 <缺省设定为表示(true)>
  #   name      : 进展状况栏显示的名称 <缺省设定为职业名>(这里原文为“技能名”,应该是作者笔误)
  #-----------------------------------------------------------------------------
  class CondClass < Condition
    def initialize(class_id, actor_id=0, view=true, name="")
      super(CLASS, class_id, actor_id, false, view, name)
    end
  end
  #-----------------------------------------------------------------------------
  # 条件 : Script类  CondScript.new(id, num, view)
  #【条件】
  #   对脚本的判定(上级者向)
  #   【设定】内部的Condition#script_clear?可以自由记述
  #【引数】
  #   id   : ID情报(任意)
  #   num  : 数值情报(任意)
  #   view : 进展状况栏是否显示 <缺省设定为显示(true)>
  #   name : 进展状况栏显示的名称 <缺省设定为Script>
  #-----------------------------------------------------------------------------
  class CondScript < Condition
    def initialize(id=0, num=0, view=true, name="Script")
      super(SCRIPT, id, view, false, view, name)
    end
  end

# ● 报酬[RsltXXX.new, …]
  #=============================================================================
  # 报酬用super类   Result.new(type, id, num)
  #【引数】
  #  type     : 种类(ITEM / WEAPON / ARMOR / MONEY)
  #  id       : 物品 / 武器 / 防具 的ID
  #  num      : 获得个数 <缺省设定为1>
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #  penalty  : 任务失败時失去 <缺省设定为false>
  #=============================================================================
  class Result
    def initialize(type, id, num=1, view=true, penalty=false)
      @type = type; @id = id; @num = num; @view = view; @penalty = penalty
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : ITEM类    RsltItem.new(id, num)
  #【引数】
  #  id       : 物品ID
  #  num      : 获得个数 <缺省设定为1>
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #-----------------------------------------------------------------------------
  class RsltItem < Result
    def initialize(id, num=1, view=true)
      super(ITEM, id, num, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : WEAPON类  RsltWeapon.new(id, num)
  #【引数】
  #  id       : 武器ID
  #  num      : 获得个数 <缺省设定为1>
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #-----------------------------------------------------------------------------
  class RsltWeapon < Result
    def initialize(id, num=1, view=true)
      super(WEAPON, id, num, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : ARMOR类  RsltArmor.new(id, num)
  #  id       : 防具ID
  #  num      : 获得个数 <缺省设定为1>
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #-----------------------------------------------------------------------------
  class RsltArmor < Result
    def initialize(id, num=1, view=true)
      super(ARMOR, id, num, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : MONEY类  RsltMoney.new(id, num)
  #  num      : 报酬金
  #-----------------------------------------------------------------------------
  class RsltMoney < Result
    def initialize(num)
      super(MONEY, 0, num, false)
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : SKILL类  RsltSkill.new(skill_id, actor_id)
  #  skill_id : 技能ID
  #  actor_id : 角色ーID
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #-----------------------------------------------------------------------------
  class RsltSkill < Result
    def initialize(skill_id, actor_id, view=true)
      super(SKILL, skill_id, actor_id, view) ## @id = skill_id, @num = actor_id
    end
  end
  #-----------------------------------------------------------------------------
  # 報酬 : CommonEV类  RsltCmnEv.new(cmn_ev_id)
  #  cmn_ev_id : 公共事件ID
  #-----------------------------------------------------------------------------
  class RsltCmnEv < Result
    def initialize(cmn_ev_id)
      super(EV, cmn_ev_id)
    end
  end
  #-----------------------------------------------------------------------------
  # 報酬 : CLASS类  RsltClass.new(class_id, actor_id)
  #  class_id : 职业ID
  #  actor_id : 角色ーID
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #-----------------------------------------------------------------------------
  class RsltClass < Result
    def initialize(class_id, actor_id, view=true)
      super(CLASS, class_id, actor_id, view) ## @id = class_id, @num = actor_id
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : LEVEL类  RsltLevel.new(actor_id, level)
  #  actor_id : 角色ーID
  #  level    : Level等级上升
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #-----------------------------------------------------------------------------
  class RsltLevel < Result
    def initialize(actor_id, level, view=true)
      super(LEVEL, actor_id, level, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : ACTOR类  RsltActor.new(actor_id)
  #  actor_id : 角色ーID
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #-----------------------------------------------------------------------------
  class RsltActor < Result
    def initialize(actor_id, view=true)
      super(ACTOR, actor_id, 0, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : QUEST类  RsltQuestT.new(id)
  #  id       : 向任务ID传达ON指令
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #-----------------------------------------------------------------------------
  class RsltQuestT < Result
    def initialize(id, view=true)
      super(QUEST_T, id, 0, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : QUEST类  RsltQuestF.new(id)
  #  id       : 向任务ID传达OFF指令
  #  view     : 在报酬栏中显示 <缺省设定为true>
  #-----------------------------------------------------------------------------
  class RsltQuestF < Result
    def initialize(id, view=true)
      super(QUEST_F, id, 0, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 报酬 : QUEST类  RsltQuestS.new(id)
  #  id       : 开始的任务ID
  #  view     : 在报酬栏中显示 <缺省设定为false>
  #-----------------------------------------------------------------------------
  class RsltQuestS < Result
    def initialize(id, view=false)
      super(QUEST_S, id, 0, view)
    end
  end
  #-----------------------------------------------------------------------------
  # 惩罚 : MONEY类  RsltMoneyP.new(id, num)
  #  num  : 任务失败時损失金额
  #-----------------------------------------------------------------------------
  class RsltMoneyP < Result
    def initialize(num)
      super(MONEY, 0, num, false, true)
    end
  end
  #-----------------------------------------------------------------------------
  # 惩罚 : CommonEV类  RsltCmnEvP.new(cmn_ev_id)
  #  cmn_ev_id : 公共事件ID
  #-----------------------------------------------------------------------------
  class RsltCmnEvP < Result
    def initialize(cmn_ev_id)
      super(EV, cmn_ev_id, 0, false, true)
    end
  end
  #-----------------------------------------------------------------------------
  # 惩罚 : LEVEL类  RsltLevelP.new(actor_id, level)
  #  actor_id : 角色ID
  #  level    : Level等级下降
  #-----------------------------------------------------------------------------
  class RsltLevelP < Result
    def initialize(actor_id, level)
      super(LEVEL, actor_id, level, false, true)
    end
  end
  #-----------------------------------------------------------------------------
  # 惩罚 : QUEST类  RsltQuestTP.new(id)
  #  id       : 任务ID
  #-----------------------------------------------------------------------------
  class RsltQuestTP < Result
    def initialize(id)
      super(QUEST_T, id, 0, false, true)
    end
  end
  #-----------------------------------------------------------------------------
  # 惩罚 : QUEST类  RsltQuestFP.new(id)
  #  id       : 任务ID
  #-----------------------------------------------------------------------------
  class RsltQuestFP < Result
    def initialize(id)
      super(QUEST_F, id, 0, false, true)
    end
  end

# ● 开关操作Sw.new(play_sw, clear_sw, fail_sw)
  #=============================================================================
  # 开关操作用类    Sw.new(play, clr, fail)
  #【引数】
  #   play : 任务开始時切换到ON的ID (为0则不操作) <缺省设定为0>
  #   clr  : 任务成功時切换到ON的ID (为0则不操作) <缺省设定为0>
  #   fail : 任务失败時切换到ON的ID (为0则不操作) <缺省设定为0>
  #=============================================================================
  class Sw
    def initialize(play=0, clr=0, fail=0)
      @play = play; @clr = clr; @fail = fail
    end
  end
end



作者: qpzm1027    时间: 2018-2-7 23:14
#==============================================================================
# ■ VXAce-RGSS3-4 任务系统 [Ver.1.0.0]             by Claimh  汉化:疾风怒涛
#------------------------------------------------------------------------------
#・任务(委托)接受、任务进行系统的建立
#・任务自事件获得或从公会获取
#・任务列表确认内容
#     现在进行中的任务、已经clear的任务、失败的任务
#・任务的Rank等级分为10和阶段。初期Rank等级为1
#  当前Rank等级不足时无法接受公会的高阶任务
#・由公会接受的任务将通过在公会报告任务来完成
#  (也可通过事件完成)
#・当自公会获取的任务的显示状态为true时,可以接受
#・【定义】在下面的section中已经配置相关定义
#------------------------------------------------------------------------------
#【任务名、委托人、任务内容 用于控制的字符】
#   \\n[n]  : ID:n-角色ー名
#   \\e[n]  : ID:n-敌人ー名
#   \\j[n]  : ID:n-职业名
#   \\s[n]  : ID:n-技能名
#   \\t[n]  : ID:n-物品名
#   \\w[n]  : ID:n-武器名
#   \\a[n]  : ID:n-防具名
#   \\m[n]  : ID:n-地图名
#   \\q[n]  : ID:n-任务名
#【任务内容 用于控制的字符】
#   \\c[n]  : 文字色変更
#   \\+     : 加粗表示 开始/结束
#   \\-     : 斜体表示 开始/结束
#   \\x[n]  : X轴方向 n 的当前位置刻画
#   \\n     : 改行
#   \\p     : 改页面
#==============================================================================

module Quest
#==============================================================================
#【全局设定】
#==============================================================================
  # 可同時进行的任务数
  #  初期只计算在StGuild类(公会)中设定的任务
  #  除此之外的任务不能在公会接受
  #  可通过事件接取任务
  #  nil为没有限制
  MAX = nil

  # 任务成功時的音效(BGM停止,播放SE)
  CLR_A_FILE = RPG::ME.new("Victory1")
#  CLR_A_FILE = RPG::SE.new("Chime1")
  # 任务失败時的音效(BGM停止,播放SE)
  FAIL_A_FILE = RPG::ME.new("Gameover1")
#  FAIL_A_FILE = RPG::SE.new("Buzzer1")

  # Rank等级表示
  SHOW_RANK = true
  # 任务Rank等级名称
  RANK={1=>"G",2=>"F",3=>"E",4=>"D",5=>"C",6=>"B",7=>"A",8=>"A+",9=>"S",10=>"SS"}
  # 每级Rank的文字色
  RANK_CLR = {
    1  => Color.new(255, 255, 255, 128),
    2  => Color.new(255, 255, 255, 255),
    3  => Color.new(128, 255, 255, 255),
    4  => Color.new(128, 128, 255, 255),
    5  => Color.new(255, 255, 128, 255),
    6  => Color.new(128, 255, 128, 255),
    7  => Color.new(255, 128, 128, 255),
    8  => Color.new(255, 255,   0, 255),
    9  => Color.new(255,   0, 255, 255),
    10 => Color.new(255,   0,   0, 255)
  }
  # 职业变更发生后任务经验值的继承
  CLASS_EXP = true
  
  # 任务列表中的类別(3个种类可自由选择 & 顺序自由)
  #    PLAYING : 进行中任务
  #    CLEAR   : 已完成任务
  #    FAIL    : 失败任务
  QUEST_LIST = [PLAYING, CLEAR, FAIL] ## [PLAYING] -> 進捗中のみ表示
  # 任务列表中显示的名称
  LIST_NAME  = {
    PLAYING => "任务进展",
    CLEAR   => "完成的任务",
    FAIL    => "失败的任务"
  }

  # 任务公会操作的种类(3个种类可自由选择 & 顺序自由)
  #    REPORT  : 任务报告
  #    SHOP    : 接受任务
  #    EXIT    : 离开公会
  GUILD_LIST = [SHOP, REPORT, EXIT]   ## [SHOP] -> 表示接受任务
  # 任务公会操作种类的显示名称
  GUILD_NAME  = {
    REPORT  => "任务报告",
    SHOP    => "接受任务",
    EXIT    => "离开公会"
  }

#==============================================================================
#【任务设定】 ※任务ID不能为0
#==============================================================================
QUEST = {
=begin
[说明]
  每个任务的设定。
  Rank、StXXX、CondXXX、RsltXXX、Sw详细(具体参数的设定请参考对应脚本的说明)
  【定义】请仔细阅读以下部分的格式
[表述形式]
  任务ID => {
    # 任务名,
    # 委托人(""内显示),
    # Rank等级 Rank.new(quest, r_next, r_down),
    # 初期状态 StXXX.new,
    # 前提条件[CondXXX.new, …],
    # clear条件[CondXXX.new, …],
    # 报酬[RsltXXX.new, …],
    # 开关操作Sw.new(play_sw, clear_sw, fail_sw),
    # 任务内容
  },
=end
#=begin  ## 设定案例[START]
  #-----------------------------------------------------------------------------
  3  => [
    # 任务名
    "遗失的古琴",
    # 委托人(""内显示),
    "卡岚",
    # Rank等级 Rank.new(quest, r_next, r_down),
    Rank.new(1, 0),  # 成功時Rank等级上升【疾风:具体设定见定义脚本70行】
    # 初期状态 StXXX.new,
    StGuild.new(true), # 公会任务、初期表示ON(具体见定义脚本13行)
    # 前提条件[CondXXX.new, …],
    [], # 没有条件
    # clear条件[CondXXX.new, …],
    [CondItem.new(14)], # 去取得14号物品一个
    # 报酬[RsltXXX.new, …],
    [RsltMoney.new(800),  
     RsltItem.new(1, 3)],
       # 成功時:钱800,物品[1]×3
     
    # 开关操作Sw.new(play, clear, fail),
    Sw.new(1, 2, 3),  # 开始時SW[1]、成功時SW[2]、失敗時SW[3]
    # 任务内容
    "\\c[5]丁美塔内\\c[0]请去调查一下吧!
我曾经去过那里探险,但是遭遇了魔兽,
慌乱之下不小心把重要的古琴给遗失了!
丁美塔很危险,建议等级\\+\\c[2]10\\c[0]\\+级以上!"
  ],
  #-----------------------------------------------------------------------------
2  => [
    # 任务名,
    "神的记事本",
    # 委托人(""内显示),
    "剧情",
    # Rank等级 Rank.new(quest, r_next, r_down),
    Rank.new(1, 0),  # 成功時Rank等级上升
    # 初期状态 StXXX.new,
    StEv.new,  # 通过事件获取的任务
    # 前提条件[CondXXX.new, …],
    [],  # 任务[1]结束(成功)
    # clear条件[CondXXX.new, …],
    [],   # 没有条件
    [],
    # 开关操作Sw.new(play, clear, fail),
    Sw.new(4, 5, 6),  # 开始時SW[4]、成功時SW[5]、失败時SW[6]
    # 任务内容
    "\\c[5]世界各处\\c[0]寻找“落日”灾难的记录!
关于9世纪末,前所未有的最强自然灾难!
这场毁天灭地的灾害背后,可能有着不为
世人所知的惊天秘密......"
  ],
  #-----------------------------------------------------------------------------
  1  => [
    # クエスト名,
    "游戏指南书",
    # 委托人(""内显示),
    "系统",
    # Rank等级 Rank.new(quest, r_next, r_down),
    Rank.new(1, 0),  # 成功時Rank等级上升
    # 初期状态 StXXX.new,
    StEv.new,
    [],
    [],
    [],
    Sw.new, # SW操作无
    # 任务内容
    "
\\c[6]特技类;\\c[0]特殊的强化技能是装备附带的特技。\\c[6]
契约类;\\c[0]契约书的使用限制为每场战斗一次。\\c[6]
怪物类;\\c[0]不死族、恶魔族、昆虫类、人型怪。\\c[6]
Boss类;\\c[0]免疫任何形式的必杀和特定的状态。\\c[6]精英怪;\\c[0]能力值为普通怪的1.3倍,奖励1.3倍。\\c[6]场景类;\\c[0]按住Shift键可以加速移动速度。\\c[6]
状态类;\\c[0]部分状态对特定怪物几率降低或增加。\\c[6]特殊类;\\c[0]部分Boss拥有秒杀技能,请小心应对"
  ],
  #-----------------------------------------------------------------------------
  4  => [
    # 任务名,
    "情侣的信物",
    # 委托人(""内显示),
    "教会",
    # Rank等级 Rank.new(quest, r_next, r_down),
    Rank.new(1, 0), # 成功時Rank等级+1
    # 初期状态 StXXX.new,
    StGuild.new(true),  # 公会任务、初期表示ON
    # 前提条件[CondXXX.new, …],
    [CondQuestT.new(3)],  # 任务[3]结束(成功)
    # clear条件[CondXXX.new, …],
    [CondItem.new(1, 2),      # 物品[1]×2、clear時减少
     CondEv.new("谈话")], # 事件quest_clear/quest_fail二者有一、進展栏的显示名称"谈话"
    # 报酬[RsltXXX.new, …],
    [RsltMoney.new(1000)],  # 成功時:1000G
    # 开关操作Sw.new(play_sw, clear_sw, fail_sw),
    Sw.new, # SW操作无
    # 任务内容
    "\\c[5]世界地图的\\+丽罗\\+!\\c[0]将双子环送给她。
信物之上饱含了寄主的思念之意......   
"
  ],
  #-----------------------------------------------------------------------------
  5  => [
    # 任务名,
    "头号赏金手",
    # 委托人(""内显示),
    "系统",
    # Rank等级 Rank.new(quest, r_next, r_down),
    Rank.new(1, 0), # 成功時Rank等级+1
    # 初期状态 StXXX.new,
    StGuild.new(true), # 公会任务、初期表示ON
    # 前提条件[CondXXX.new, …],
    [],  # 任务[4]结束(成功)
    # clear条件[CondXXX.new, …],
    [CondEnemy.new(2, 1),
     CondEnemy.new(38, 1),
     CondEnemy.new(39, 1),
     CondEnemy.new(40, 1),
     CondEnemy.new(41, 1),
     CondEnemy.new(42, 1),
     CondEnemy.new(43, 1),
     CondEnemy.new(44, 1),],
    # 报酬[RsltXXX.new, …],
    [RsltMoney.new(36000)],    # 成功時:2500G
    # 开关操作Sw.new(play_sw, clear_sw, fail_sw),
    Sw.new, # SW操作无
    # 任务内容
    "\\c[5]\\+Boss怪物\\+!\\c[0]击杀8个通缉犯!
可以获得大量的金币奖励!   
"
  ],
  #-----------------------------------------------------------------------------
  6  => [
    # 任务名,
    "契约书狂人",
    # 委托人(""内显示),
    "教会",
    # Rank等级 Rank.new(quest, r_next, r_down),
    Rank.new(1, 0),
    # 初期状态 StXXX.new,
    StGuild.new(true), # 公会任务、初期表示ON
    # 前提条件[CondXXX.new, …],
    [CondQuestT.new(5)],
    # clear条件[CondXXX.new, …],
    [CondArmor.new(1, 2),
     CondEv.new("谈话")],
    # 报酬[RsltXXX.new, …],
    [RsltMoney.new(5000)],
    # 开关操作Sw.new(play_sw, clear_sw, fail_sw),
    Sw.new,
    # 任务内容
    "\\c[5]\\+契约书\\+!\\c[0]使用30次!
可以得到永久的随机对象契约书。   
"
  ],
  #-----------------------------------------------------------------------------
  7  => [
    # 任务名,
    "流星的碎片",
    # 委托人(""内显示),
    "教会",
    # Rank等级 Rank.new(quest, r_next, r_down),
    Rank.new(1, 0),
    # 初期状态 StXXX.new,
    StGuild.new(true), # 公会任务、初期表示ON,
    # 前提条件[CondXXX.new, …],
    [CondQuestT.new(6)],
    # clear条件[CondXXX.new, …],
    [CondMoney.new(50)],
    # 报酬[RsltXXX.new, …],
    [RsltMoney.new(10000)],
    # 开关操作Sw.new(play_sw, clear_sw, fail_sw),
    Sw.new,
    # 任务内容
    "\\c[5]\\+流星碎片\\+!\\c[0]收集9片交给教会!
可以得到强化杀伤力的特殊装备!   
"
  ],
  #-----------------------------------------------------------------------------
  8  => [
    # 任务名,
    "上级试炼@2",
    # 委托人(""内显示),
    "公会会长",
    # Rank等级 Rank.new(quest, r_next, r_down),
    Rank.new(8, 0),
    # 初期状态 StXXX.new,
    StGuild.new,
    # 前提条件[CondXXX.new, …],
    [CondQuestT.new(7)],
    # clear条件[CondXXX.new, …],
    [CondMoney.new(500),
     CondEv.new("谈话")],
    # 报酬[RsltXXX.new, …],
    [RsltMoney.new(25000)],
    # 开关操作Sw.new(play_sw, clear_sw, fail_sw),
    Sw.new,
    # 任务内容
    "同上的工作w"
  ],
  #-----------------------------------------------------------------------------
  9  => [
    # 任务名,
    "神之亵渎",
    # 委托人(""内显示),
    "马夫托",
    # ランク Rank.new(quest, r_next, r_down),
    Rank.new(9, 0, 0),  # 成功時:Rank等级+1、失败時:Rank等级-1
    # 初期状态 StXXX.new,
    StEv.new,
    # 前提条件[CondXXX.new, …],
    [],
    # clear条件[CondXXX.new, …],
    [],
    # 报酬[RsltXXX.new, …],
    [RsltMoney.new(50000)],
    # 开关操作Sw.new(play_sw, clear_sw, fail_sw),
    Sw.new(21, 22, 23),
    # 任务内容
    "神\\c[3]阿努比斯\\c[0]连接冥界的使徒、似乎准备攻击地上世界\\n"+
    "冥界的力量相当強大、到时候地上世界的崩溃只是时间问题・・・\\n\\n"+
    "阻止神\\c[3]阿努比斯\\c[0]的野望、守护地上世界!!"
  ],
  #-----------------------------------------------------------------------------
  10 => [
    # 任务名,
    "深红之魔王",
    # 委托人(""内显示),
    "水棲温蒂尼",
    # Rank等级 Rank.new(quest, r_next, r_down),
    Rank.new(10, nil, 1),  # 成功時:不变、失败時:Rank等级归1
    # 初期状态 StXXX.new,
    StEv.new,
    # 前提条件[CondXXX.new, …],
    [CondQuestT.new(9)],
    # クリア条件[CondXXX.new, …],
    [],
    # 报酬[RsltXXX.new, …],
    [RsltMoney.new(100000)],
    # 开关操作Sw.new(play_sw, clear_sw, fail_sw),
    Sw.new(24, 25, 26),
    # 任务内容
    "魔王\\c[3]大菠萝\\c[0]打倒"#(原文diablo无误,暗黑破坏神)
  ],
}
#==============================================================================
#【事件追记用 自由记述栏】
#  事件脚本可输入文字的控制字符
#  这里准备的是固定值,实际上长文本的输入也是可以的
#==============================================================================
#=begin  ## 設定サンプル[START]
  Q_1_CLEAR = "\\p\\c[1]【任务结果】\\c[0]\\n"+
              "我的女儿平安地回家了\\n非常感谢"
  Q_1_FAIL  = "\\p\\c[1]【任务结果】\\c[0]\\n"+
              "・・・我没有什么话可说了"
  Q_2_CLEAR = "\\p\\c[1]【任务结果】\\c[0]\\n"+
              "\\c[3]芬里尔\\c[0]被成功讨伐了、非常感谢\\n"+
              "我们的村子又能回归安稳和平的日常了"
  Q_2_FAIL  = "\\p\\c[1]【任务结果】\\c[0]\\n"+
              "村子・・・\\n呜、借助人类的力量果然是个错误吗・・・"
  Q_9_CLEAR = "\\p\\c[1]【任务结果】\\c[0]\\n"+
              "神\\c[3]阿努比斯\\c[0]虽然没有被彻底打倒、但已经阻止了冥界的入侵\\n"+
              "天界的代表一定会向你表示感谢的"
  Q_9_FAIL  = "\\p\\c[1]【任务结果】\\c[0]\\n"+
              "虽然心情沉重但不得不承认・・・\\n这个地上世界已经完结了"
#=end  ## 设定案例[END]

#==============================================================================
# ■ 脚本条件check(上级者向)
#  前提条件、clear条件CondScript类的场合有设定必要
#==============================================================================
  class Condition
    #--------------------------------------------------------------------------
    # ● 条件check
    #【说明】
    #  是否符合条件?
    #【引数】
    #  id     : 设定時导入id
    #  num    : 设定時导入num
    #【返回值】
    #  true   : 条件适合
    #  false  : 条件不适合
    #--------------------------------------------------------------------------
    def script_clear?(id, num)
=begin # 例
      case id
      when 0 # 队伍人数check
        return ($game_party.members.size >= num) # 人数在num以上时条件适合
      when 1 # 队伍人数check
        return ($game_party.members.size <= num) # 人数在num以下时条件适合
      end
=end
      return true
    end
    #--------------------------------------------------------------------------
    # ● 条件不适合時的message
    #【说明】
    #  当条件不符合时显示的信息
    #【引数】
    #  type   : 前提条件未适合(0) or clear条件未適合(1)
    #  id     : 设定時导入id
    #  num    : 设定時导入num
    #【返回值】
    #  Message要显示的文本
    #--------------------------------------------------------------------------
    def script_cause(type, id, num)
=begin # 例
      case id
      when 0 # 队伍人数check
        return "队伍人数\\n还差#{(num - $game_party.members.size)}人"
      when 1 # 队伍人数check
        return "队伍人数必须在\\n#{num}人以下"
      end
=end
      return (type==0 ? "开始" : "clear") + "条件不满足"
    end
  
  end
end







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