Skip to content

简介(Introduction)

本动作主要用于角色技能释放

我们先来考虑一下如何在游戏内释放一个角色的技能?

  1. 通过 auto 游戏会帮助我们自动释放技能
  2. 通过点击技能槽, 我们可以选中技能, 再次点击一个位置(技能目标), 我们可以向这个位置释放技能
  3. 通过观测费用条的下降, 我们可以监测技能是否释放成功(释放检查)

note:

  1. 总而言之, 我们需要确定释放技能的技能槽, 技能释放的坐标, 以及技能完成释放的标志
    • skill_nl_rel_idx 用于确定释放技能的技能槽
    • target 用于确定释放技能的坐标
    • check 用于检查技能是否被正确释放
  2. auto 释放技能并不需要我们指定技能槽和目标位置, 游戏会自动帮我们做决定, 但是我们需要知道cost下降了多少时, 认定技能被成功释放, 也就是说我们需要设置check

额外参数

op

  • description: 释放一个技能的方式
  • type: string
  • constrains:
  • 含义必须设置的额外参数
    auto开启auto释放check
    name通过技能名查找槽中对应技能target skill_n
    l_rel_p上一个释放的技能的所在技能槽会被选择
    (不需要通过技能名确定技能槽)
    target l_rel_idx

note:

  1. 方式 auto 需要设置check
  2. 方式 name, l_rel_p 需要设置target
  3. 方法 l_rel_p 是专门为反手拐设计的

skill_n

  • description: 需要释放的技能的名称
  • type: string
  • note: 技能名称必须在/formation/all_appeared_skills中出现
  • example:
json
{
  "formation": {
    "all_appeared_skills": [
      "Himari",
      "Kayoko",
      "Fuuka (New Year)",
      "Mika",
      "Koharu",
      "Eimi"
    ]
  },
  
  "actions": {
    
    "释放风香(新年)的技能": [
      {
        "p": "skill",
        "op": "name",
        "skill_n": "Fuuka (New Year)"
      }
    ]
  }
}

l_rel_idx

  • description: 设前三个释放技能的技能槽分别为0, 1, 2, 注意0是最近释放的技能, 假设本配置的数值为0, 则会选择槽0的技能释放, 如果数值为2, 则会选择槽2的技能释放
  • note:
  1. 设计这个技能释放方式的初衷是允许跳过技能检测, 当你已知某个技能释放完后下一个技能就是你所需要释放的技能, 可以跳过技能名称检测这一步骤, 直接释放技能
  2. 举一个现实的例子, 你刚刚释放完女仆爱丽丝技能, 按照轴流程可以确定这个技能的下一个技能必定是亚子, 此时你可以设置值为0跳过技能检测, 直接释放女仆爱丽丝技能释放完毕后对应槽出现的下一个技能
  • type: int
  • range: [0, 2]
  • example:
    • 释放 爱丽丝 (女仆) 的技能后立即释放 亚子 技能到 爱丽丝 (女仆)
    json
    {
      "actions": {
        
        "释放 爱丽丝 (女仆) 的技能后立即释放 亚子 技能到 爱丽丝 (女仆) ": [
          {
            "p": "skill",
            "op": "name",
            "skill_n": "Aris (Maid)",
            "target": {
            
            }
          }
        ]
      }
    }

target

/target/op

  • description: 技能释放的目标类型, 固定位置 / yolo检测位置
  • type: string
  • constrains:
  • examples:
  1. 释放 风香 (新年) 技能至 固定坐标(1180, 360)

    json
    {
      "actions": {
        
        "释放**风香 (新年)** 的技能到固定点位(1180, 360)": [
          {
            "p": "skill",
            "op": "name",
            "skill_n": "Fuuka (New Year)",
            "target": {
              "op": "fixed",
              "x": 1180,
              "y": 360
            }
          }
        ]
      }
    }
  2. 释放 风香 (新年) 技能至yolo检测到的 未花 位置的 矩形中心

    json
    {
      "actions": {
        
        "释放风香 (新年) 技能至yolo检测到的未花位置的中心": [
          {
            "p": "skill",
            "op": "name",
            "skill_n": "Fuuka (New Year)",
            "target": {
              "op": "yolo_c_p",
              "obj": ["Mika"]
            }
          }
        ]
      }
    }
  3. 释放 小春 技能至yolo检测到的 未花艾米底部连线 的中心

    json
    {
       "释放 小春 技能至yolo检测到的 未花 和 艾米 位置的底部连线的中心": [
         {
           "t": "skill",
           "op": "name",
           "skill_n": "Koharu",
           "target": {
             "op": "yolo_g_p",
             "obj": ["Mika", "Eimi"]
           }
         }
       ]
    }

/target/x

  • description: 释放技能到固定位置的x坐标
  • type: int
  • range: [0, 1280]

/target/y

  • description: 释放技能到固定位置的y坐标
  • type: int
  • range: [0, 720]

/target/obj

check

  • description: 检查技能是否被释放的方式
  • type: dict
  • note: dict中的参数
    1. op
    2. value
    3. timeout
  • examples: 一个增加了check的动作
    • 这个动作的含义是, 使用auto 释放技能, 当cost下降2.5时认定技能释放成功
    • 5000ms内没有检测到cost下降, 认定技能释放失败
json
{
  "actions": {
    
    "释放技能1": [
      {
        "p": "skill",
        "op": "auto",
        "check": {
          "op": "C_decrease",
          "value": 2.5,
          "timeout": 5000
        }
      }
    ]
  }
}

note:

  1. 如果技能原始的释放费用为x, 推荐设置检查费用下降值为x - 0.5, 原因是虽然技能实际使用了x的费用, 但是费用在截图中的每一帧都会增长, BAAS实际能监测到的费用下降约为x - 0.1(略小于x), 这也是上文例子设置为2.5的原因

/check/op

  • description:技能释放检查的方式
  • type: string
  • constrains:
  • 含义必须设置的额外参数
    C_decrese通过cost下降监测技能是否被释放value

/check/value

  • description: 当opC_decrease时, 含义为cost下降的值
  • type: double

/check/timeout

  • description: 技能释放检测的超时时间, 单位为ms
  • type: int
  • default value: 5000