upload successful

# 前言

在前面的 Switch 破解这篇文章中我有提到过:" 我研究 Switch 破解的初衷是因为我知道有人可以通过 DiscordDoDo 机器人实现宝可梦的魔法交换,这一点让我感到很新奇 ",但是网上关于宝可梦交换机器人的教程实在是太少了,自己也是四处碰壁才了解到一些皮毛,在这里我将自己所知道的关于宝可梦机器人知识都总结在此,希望可以帮助更多喜欢宝可梦的玩家

# 准备工作

  1. 一台已破解的 Switch 设备 (软硬破皆可)

如何破解 Switch 请参考这篇文章 Switch 破解

  1. 任天堂 online 会员账号 (宝可梦联机交换必须要加入任天堂会员)

众所周知,任天堂所有游戏联机功能都需要加入任天堂会员才能使用,淘宝拼个家庭会员一年 40 左右

  1. 正版宝可梦朱紫游戏 (卡带或数字版皆可)

这里有人可能会问,我 Switch 都破解了,为什么还要用正版宝可梦游戏?

你自己一个人单机玩盗版改存档这些不需要有正版游戏,但是你都要联网了和别人进行宝可梦交换了,你敢玩盗版?

  1. 注册 DoDo 开发者平台

需要 DoDo 开发者平台注册一个开发账号,通过输入自己的手机号码,然后获取验证码

注册地址: https://doker.imdodo.com/login

upload successful

  1. 一台安装 Windows 10 21H1 以上版本的电脑,下载并安装 .NET 8.0 Desktop Runtime

否则运行下面的项目会报错

upload successful

# 自动化机器人

# sys-botbase 介绍

据我了解,目前所有 Switch 自动化操作的机器人基本都是通过 sys-botbase 这个项目实现,sys-botbase 这个项目最初版本是叫 sys-netcheat, 是一个适用于 Switch 大气层系统的开源作弊器

其原理很简单,用户需要将 sys-netcheat 安装在一台已破解的 Switch 上并运行,然后在计算机上使用 nc telnet 与其进行端口通信,便可以在当前计算机中远程读取运行在这台 Switch 上的游戏内存数据,并且用户可以修改这些内存数据,如果你之前有在 Windows 上使用过 Cheat Engine, 那么我相信你会非常容易上手并理解它的运行原理

从该项目的发布历史来看,sys-netcheat 这个项目在 1.3.4 版本后停止更新了很长一段时间,后续作者直接发布了 1.7 版本,并改名为 sys-botbase,宣称已计划为该项目添加 模拟按键模拟屏幕触控 等其它功能,可以用于帮助用户创建有趣的自动化机器人,而不再是单纯的修改游戏数据

如果你需要了解该项目更多的信息,请跳转到 sys-botbase 项目地址:https://github.com/olliz0r/sys-botbase

# 安装 sys-botbase

sys-botbase 的安装灰常简单,你仅需要到该项目最后发布的地址 https://github.com/olliz0r/sys-botbase/releases 下载最新的 zip 压缩包即可

upload successful

解压后应该是一个名为 atmosphere 的文件夹目录,复制这个目录,拷贝到你的 SD 卡根目录,选择覆盖即可

upload successful

如果你是在 Switch 关机状态下,取出 SD 卡进行拷贝,拷贝完插入 SD 卡开机即可

如果你是在开机状态下,通过数据线拷贝到 Switch 的 SD 卡的话,那么请重启一下你的 Switch, 请选择进入大气层真实系统

如果 sys-botbase 正在运作的话,开机进入大气层系统后,右 Joycon Home 键闪烁蓝灯

upload successful

# sys-botbase 测试

接下来验证 sys-botbase 是否正常工作,先将 Switch 连接网络,连接后记录 Switch IP 地址

upload successful

用 python 模拟基本按键输入

n
import socket
import time
# Make sure to append "\r\n" to the end of every command to ensure arg are parsed correctly
def sendCommand(s, content):
    content += '\r\n'
    s.sendall(content.encode())
# sys-botbase port is compiled for 6000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.50.171", 6000))
# Analog inputs
sendCommand(s, "click B")
time.sleep(0.5)
sendCommand(s, "click Y")
time.sleep(1)
sendCommand(s, "click DDOWN")
time.sleep(0.5)
sendCommand(s, "click A")
time.sleep(1)
sendCommand(s, "click X")
time.sleep(0.5)
sendCommand(s, "click DUP")
time.sleep(1)
sendCommand(s, "click DLEFT")
time.sleep(0.5)
sendCommand(s, "click DRIGHT")
time.sleep(2)

进入 Switch 设置中 手柄与感应器,选择检查输入设备,然后选择检查按键,接下来运行脚本验证是否能够自动输入

upload successful

可以看到 sys-botbase 运行良好,那么现在我猜你应该可以想到一些基础的玩法了吧,像游戏中一些重复性的任务,我们就可以加个 while 循环让脚本重复执行,例如塞尔达传说刷道具又或者是宝可梦日常孵蛋刷步数

Okay,sys-botbase 就介绍到这样,后面我再介绍交换机器人寻坑机器人,这两个机器人都是在 sys-botbase 的基础上延伸其玩法,希望有能力的大佬可以开发更多好玩的机器人 ^_^

# 交换机器人

# SysBot.NET 介绍

SysBot.NET 这个项目是由 kwsch 大佬创建的,可能有人会不知道这位大佬的名字,但是玩宝可梦的玩家应该都知道 PKHex 这个宝可梦系列游戏存档编辑器工具吧,这个工具就是由 kwsch 大佬开发的,但是 PKHex 并不是本次讨论的主要重点,我接着说 SysBot.NET

SysBot.NET 主要是利用 sys-botbase Switch 主机进行通信,然后通过对接 Discord 机器人自定义的逻辑功能实现远程控制和自动化操作,下载项目后用 Visual Studio 打开,这里对其主要的类进行一个简单说明:

upload successful

  • SysBot.Base 提供了与 sys-botbase 的连接和交互功能,包括同步和异步的连接类。

  • SysBot.Pokemon 项目则构建在 SysBot.Base 之上,实现了针对特定游戏(例如宝可梦剑 / 盾)的自动化功能,包括魔法交换、在线交换、闪光蛋寻找等功能,目前已知朱紫可以实现自动开启太晶坑、宝可梦交换、创建集友圈刷任务等。

  • SysBot.Pokemon.WinForms 提供了一个简单的 GUI 界面,用于方便地启动和管理宝可梦机器人。

  • SysBot.Pokemon.Discord 提供了一个 Discord 接口,允许用户通过 Discord 与宝可梦机器人进行远程交互。

SysBot.NET 项目地址:https://github.com/kwsch/SysBot.NET
更多信息可以参考作者 Wiki: https://github.com/kwsch/SysBot.NET/wiki

# SysBot.NET 搭建

由于 kwsch 大佬的项目仅支持海外的社交软件,在国内不会翻墙根本用不了,这里我们用国内大佬 easyworldSysBot.NET 项目,easyworld 大佬在源项目中添加了 DoDo、BiliBili 和 QQ 这几款软件的支持,并且有详细的中文搭建指南

由于 easyworld 大佬提供的搭建文档已经非常完善了,所以我也不打算重复叙说,大家按照大佬的文档下载项目,然后下载并安装 Visual Studio,安装 .NET 桌面开发环境,最后打开项目按照文档要求修改一下项目设置,生成可执行程序即可

SysBot.NET 项目地址: https://github.com/easyworld/SysBot.NET
DoDo 机器人搭建官方指南: https://docs.qq.com/doc/DSVVZZk9saUNTeHNn

如果你按照大佬的文档在搭建中遇到问题无法解决可留言给我,我可以在该文章中加入对应问题的解决方案

# SysBot 测试

运行 SysBot.exe 主程序,会在当前目录生成一个 config.json 文件,用文本编辑器打开,开头的 "Mode": 4, 表示当前版本为朱紫,请根据你的游戏版本修改对应的数字

  • 1:剑盾
  • 2:晶灿钻石明亮珍珠
  • 3:传说阿尔宙斯
  • 4:朱紫

upload successful

在主程序的 Hub 菜单找到 Integration, 找到 Dodo, 填写你的 Dodo 机器人 ClientIdTokenChannelId 信息

upload successful

返回 Bots 主界面,填写你的 Switch IP 地址,设置模式选择 LinkTrader , 然后点 Add 添加即可

upload successful

最后点击 StartAll 启动机器人,如果一切正常,此时你的 Dodo 机器人会自动在你的频道发送消息提醒

upload successful

点击 Logs 查看程序是否正确获取到游戏相关信息,如果启动有问题,请根据 Logs 的报错信息进行排查

upload successful

启动成功后,我们就可以在 Dodo 频道中 @机器人 ,发送对应的指令进行宝可梦交换了,目前支持 3 种指令模式

  1. @机器人 中文 PS 代码
  2. @机器人 trade 标准 PS 代码
  3. 直接在群里发对应版本的 pk 文件(pk8、pa8、pb8、pk9)

upload successful

中文 PS 代码文档参考: https://docs.qq.com/doc/DSVlldkxMSW92VXZF

# 寻坑机器人

# RaidCrawler 简单介绍

RaidCrawler 是由 LegoFigure11 大佬开源的一个宝可梦朱紫太晶坑机器人,它可以读取地图上所有太晶坑的数据,并自动扫描符合用户设置的太晶坑数据,实现自动寻坑功能

项目地址:https://github.com/LegoFigure11/RaidCrawler/

# RaidCrawler 使用教程

下载最新版本的 RaidCrawlre.zip , 解压该文件,进入目录 net8.0-windows\win-x64 , 运行 RaidCrawler.WinForms.exe 主程序

点击 Edit Filters 过滤器,顺便输入一个名字,勾选 Shiny 表示只搜索闪光宝可梦,然后点击 Add Filter 保存即可

Stars 可以选择太晶坑的等级, Gender 选择宝可梦性别, Species 可以指定宝可梦,但是这样随机性太限制,可能需要刷很长时间

upload successful

添加完过滤条件后,输入你的 Switch IP, 点击 Connect 即可读取游戏数据

upload successful

你可以手动点击查看每一个太晶坑的属性

upload successful

点击 Advance Deta 便可以自动通过更改设备日期刷新地图中所有太晶坑的数据

upload successful

找到符合过滤器的宝可梦程序会自动停止

upload successful

点击 Open Map 查看对应宝可梦所在的太晶坑位置,前往指定位置挑战即可

upload successful

如果你没有购买 DLC,那么还需要在设置中取消北上村篮之圆盘的地图,避免扫描无效地图的太晶坑数据

upload successful

关于宝可梦机器人的总结到此为止,希望大家玩得开心,我目前基本是弃游状态,期待下一代 Pokemon Z-A 的表现