- 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
代表女人,他们是为了定义不同属性而产生的。在子标签之下我们还有属性标签,属性标签定义了子标签所拥有的属性name
、age
、address
等等。如上就是构建整个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>