FF14脚本文件标签使用总结 · 基础篇

  • RB脚本文件说明
  • 标签说明
  • Demo实例

RB脚本文件说明

这里主要对RB脚本中50级以下的生产脚本标签进行总结,也是博主平时写脚本中的一些经验积累吧。主要包括了普通采集和限时采集脚本,生产脚本的话因为RB自带了CE工具啦~所以请大家自行生成(:з」∠)

下面我们来了解一下RB脚本是怎么构成的

<?xml version= "1.0" encoding = "UTF-8">  
<Human>  
      <Man>  
             <name>阿尔菲诺</title>  
             <age>19</author>  
             <address>田园郡</address>  
             <date>23:54:11</date>  
      </Man>
      <Woman>
             <name>阿莉赛</title>  
             <age>19</author>  
             <address>龙堡内陆低地</address>  
             <date>23:54:11</date>
      </Woman>  
</Human>  

这是一段儿非常简单的XML文件,包含了Human,Man,name...等标签。第一行指的是XML文件的版本和字符集编码声明,其中我们需要为encoding指定其字符集编码为UTF-8,以保证浏览器或解析器可以正常读取XML文件的文件结构。从第二行开始我们不难看出整个标签是已树形结构来展开的,这也正是XML文件的结构所在。在这里Human位于整个树形结构的顶部,同时也是树形结构的底部。他以Human开始又以Human结尾,所以我们称之为根标签

<Man>  
      <name>阿尔菲诺</title>  
      <age>19</author>  
      <address>田园郡</address>  
      <date>23:54:11</date>  
</Man>

Man标签位于根标签的下一级,这里我们通常一般把他叫做子标签,子标签通常是一些属性的合集,比如在这里子标签是Man代表男人,下一个子标签是Woman代表女人,他们是为了定义不同属性而产生的。在子标签之下我们还有属性标签,属性标签定义了子标签所拥有的属性nameageaddress等等。如上就是构建整个XML文件的主要组成部分。

标签说明

标签名称 解释 层次和说明
profile 脚本根标签 根标签
name 定义脚本名称 子标签
KillRadius 定义扫描半径 子标签 默认50
Order 采集序列 子标签 该标签有多个子标签
While 循环 子标签 Condition="True"则重复执行
If 逻辑判断 子标签 用来判断时间 Condition="IsTimeBetween(23,1)" 表示从23点到1点
CodeChunks 定义职业相关 子标签
Gather 采集次数 子标签 定义采集物品的相关信息
HotSpots 矿点坐标集合 子标签 标记矿点坐标集合
GatheringSkill 技能 子标签
LogMessage 向控制台打印日志 属性标签
WaitWhile 等待时间 属性标签
RunCode 切换职业 属性标签
TeleportTo 传送 属性标签
GatherObject 矿点名称 属性标签
Hotspot 矿点坐标 属性标签
Slot 采集目标 属性标签 挖取第几个格子的物品 第一个位置为0
CodeChunk 职业 属性标签

Demo实例

<Profile>
    <Name>测试第二版,主要加入IsTimeBetween检测和相关代码注释</Name>
    <KillRadius>50</KillRadius>
    <Order>
    <While Condition="True">
        <If Condition="IsTimeBetween(23,1)">
            <LogMessage Message="艾欧泽亚又过去了一天" />
            <WaitWhile Condition="IsTimeBetween(24,1)" />
        </If>
        <!--金矿-->
        <If Condition="IsTimeBetween(9,11)">                <!-- 时间区间 -->
            <If Condition="Core.Me.CurrentJob != ClassJobType.Miner">   <!-- 判断当前是否为当前职业 -->
                <WaitTimer WaitTime="3" />      <!-- 等待 -->
                <RunCode Name="MIN" />       <!-- 切换职业 -->
                <WaitTimer WaitTime="3" />      <!-- 等待 -->
            </If>
            <If Condition="not IsOnMap(145)">   <!-- 判断是否在当前地图 不在则传送-->
                <TeleportTo Name="Camp Drybone" AetheryteId="18" />   <!-- 传送 -->
            </If>
            <Gather Loops="1">  <!-- 循环次数 -->
                <GatherObject>Unspoiled Mineral Deposit</GatherObject>  <!-- 矿点名称为未知矿产 -->
                <HotSpots>
                    <Hotspot Z="-11.36177" Y="10.22671" X="306.1508" Radius="500"/> <!-- 矿点坐标 -->
                </HotSpots>
                <Slot>5</Slot>  <!-- 挖取第五个格子的物品 -->
                <GatheringSkillOrder>
                    <GatheringSkill SpellName="King's Yield II" TimesToCast="1" />  <!-- 使用技能 莫非王土2-->
                </GatheringSkillOrder>
            </Gather>
            <TeleportTo Name="New Gridania" AetheryteId="2" />  <!-- 采集完成后传送回格里达尼亚新街 -->
            <WaitTimer WaitTime="3" />
            <RunCode Name="BTN" />  <!-- 切换成园艺工-->
            <WaitTImer WaitTime="3" />
        </If>
    </While>
    </Order>
    <!-- 职业设置相关 -->
    <CodeChunks>
        <CodeChunk Name="MIN">             <!-- Change This Number 挖矿 -->
            <![CDATA[ ff14bot.Managers.ChatManager.SendChat("/gs change 22");
            ]]>
        </CodeChunk>
        <CodeChunk Name="BTN">             <!-- Change This Number 园艺 -->
            <![CDATA[ ff14bot.Managers.ChatManager.SendChat("/gs change 23");
            ]]>
        </CodeChunk>
        <CodeChunk Name="UseStealth">
            <![CDATA[ SpellData data;
            if (!Core.Me.HasAura("Stealth") && Actionmanager.CurrentActions.TryGetValue("Stealth", out data) && Actionmanager.CanCast(data, Core.Me)) Actionmanager.DoAction("Stealth", Core.Me);
            ]]>
        </CodeChunk>    
        <CodeChunk Name="BreakStealth">
            <![CDATA[ SpellData data;
            if (Core.Me.HasAura("Stealth") && Actionmanager.CurrentActions.TryGetValue("Stealth", out data) && Actionmanager.CanCast(data, Core.Me)) Actionmanager.DoAction("Stealth", Core.Me);
            ]]>     
        </CodeChunk>
        <CodeChunk Name="DisableMount">
            <![CDATA[ ff14bot.Settings.CharacterSettings.Instance.UseMount = false;
            ]]>
        </CodeChunk>
        <CodeChunk Name="EnableMount">
            <![CDATA[ ff14bot.Settings.CharacterSettings.Instance.UseMount = true;
            ]]>
        </CodeChunk>
        <CodeChunk Name="Dismount">
            <![CDATA[ ff14bot.Managers.Actionmanager.Dismount();
            ]]>
        </CodeChunk>
    </CodeChunks>
</Profile>

推荐阅读更多精彩内容