bool init();
初始化运行环境。
true
表示初始化完毕。当前处在 已初始化 状态。false
表示初始化失败。当前处在 未初始化 状态。
部分函数需要初始化后才能调用,具体见 函数手册 其它函数。
经过简单测试,初始化的过程大概会持续1-10秒,内存占用峰值约为 1 GB,之后稳定在 270 MB 左右。
已经处在 已初始化 状态则不会进行任何操作。
bool uninit();
卸载初始化时所占用的内存。
true
表示卸载成功,所有需要初始化后才能调用的函数此时不能再被调用。当前处在 未初始化 状态。false
表示卸载失败。当前处在 已初始化 状态。
已经处在 未初始化 状态则不会进行任何操作。
int GetGpuCount();
获取本机可用GPU设备数。
返回一个整数,表示本机可用的GPU设备数量。
已经处在 未初始化 状态则不会进行任何操作。
bool SetGpuDevice(
int deviceId = 0
);
设置启用GPU设备。
deviceId
GPU设备Id。如果提供0
,则自动获取。
true
表示GPU已启用。false
表示GPU未能启用,检查错误码以查找原因。
设置开启GPU设备以便加速图像计算。如果deviceId超过GPU设备数,则默认选择第一个GPU,如果没有GPU则使用无效。
int GetLastErr();
获取最后设置的错误码。
返回一个整数,表示错误码。错误码含义如下:
错误码 | 含义 | 可能的原因 |
---|---|---|
0 |
执行成功/正常退出。 | |
1 |
未初始化(当前处在 未初始化 状态)。 | |
2 |
未能找到原神窗口句柄。 | |
3 |
窗口画面为空。 | |
4 |
未能匹配到特征点。 | |
5 |
原神小地图区域为空或者区域长宽小于60px。 | |
6 |
未能匹配到派蒙。 | |
7 |
特征点数组访问越界,是个bug。 | |
8 |
未能在UID区域检测到有效UID。 | |
9 |
提取小箭头特征误差过大。 | |
10 |
无效句柄或指定句柄所指向窗口不存在。 | |
11 |
未能取到小箭头区域。 | |
12 |
窗口句柄失效。 | |
13 |
窗口大小小于480px * 360px。 |
由于函数成功执行后可能不会将错误码设为 0
,以及一些函数不会设置错误码,因此取出的错误码不一定代表前一条函数产生/引发的错误。
bool SetHandle(
long long int handle = 0
);
设置原神客户端的窗口句柄。
handle
原神客户端的窗口句柄。如果提供非零值,则程序不再自动获取窗口句柄,如果提供0
,则自动获取。
true
表示提供的值是窗口句柄。false
表示提供的值并不是窗口句柄。
某些原神数据的获取是基于原神客户端的,因此需要一个客户端的窗口句柄。默认情况下此句柄由程序自动获取,但有可能会因为编码问题或其它未知的原因而获取不到,此时就需要手动指定客户端的窗口句柄。
注意,不论本函数返回何值,handle
只要不是 0
,就会被设置为窗口句柄,并禁止自动获取窗口句柄。
bool SetWorldCenter(
double x,
double y
);
设置映射目标地图坐标系的原点中心所在天理坐标模型中的坐标。
x
原点在天理坐标模型的横坐标。y
原点在天理坐标模型的纵坐标。
true
表示设置成功。false
表示程序出现预料之外的异常(理论上永不出现)。
要从天理坐标模型映射至目标地图模型时,将目标地图模型的原点在天理坐标模型的对应坐标传入函数,输出即被转换为该坐标为中心。
bool SetWorldScale(
double scale
);
设置映射目标地图坐标系缩放系数与所在天理坐标模型缩放系数的的比值。
scale
放大scale倍即为天理坐标模型缩放系数。
true
表示设置成功。false
表示程序出现预料之外的异常(理论上永不出现)。
映射目标地图坐标系缩放系数与所在天理坐标模型缩放系数的的比值。
bool GetTransform(
float &x,
float &y,
float &a
);
获取当前人物所在位置以及角度(箭头朝向)。
x
获取到的人物的x轴坐标位置。y
获取到的人物的y轴坐标位置。a
获取到的角度。
true
表示获取成功。false
表示获取失败,此时三个参数均不会被改变。
无论成功与否都会设置 LastErr
值。调用 GetLastErr()
可以获取错误码。
bool GetPosition(
double &x,
double &y
);
获取当前人物所在位置。
x
获取到的人物的x轴坐标位置。y
获取到的人物的y轴坐标位置。
true
表示坐标位置获取成功。false
表示坐标位置获取失败,此时两个参数均不会被改变。
输出结果前进行了卡尔曼滤波,提高了定位精度。
无论成功与否都会设置 LastErr
值。调用 GetLastErr()
可以获取错误码。
调用本函数前,如果没有初始化过,或最后一次初始化返回失败,则需要调用 init()
函数进行初始化。
bool GetPositionOfMap(
double &x,
double &y,
int &mapId
);
获取所在位置的所在地图区域并重映射坐标区域。
x
获取到的人物的x轴坐标位置。y
获取到的人物的y轴坐标位置。mapId
获取到的人物的所在地图区域。
true
表示坐标位置获取成功。false
表示坐标位置获取失败,此时三个参数均不会被改变。
地图区域的值的解释
地图编号 | 含义 |
---|---|
0 |
提瓦特大陆。 |
1 |
渊下宫 |
2 |
地下层岩 |
无论成功与否都会设置 LastErr
值。调用 GetLastErr()
可以获取错误码。
调用本函数前,如果没有初始化过,或最后一次初始化返回失败,则需要调用 init()
函数进行初始化。
bool GetDirection(
double &a
);
获取当前角度(箭头朝向)。
a
获取到的角度。
true
表示获取成功。false
表示获取失败,此时参数不会被改变。
无论成功与否都会设置 LastErr
值。调用 GetLastErr()
可以获取错误码。
bool GetRotation(
double &a
);
获取当前视角方位(视角朝向)。
a
获取到的角度。
true
表示获取成功。false
表示获取失败,此时参数不会被改变。
无论成功与否都会设置 LastErr
值。调用 GetLastErr()
可以获取错误码。
bool GetUID(
int &uid
);
获取在屏幕右下角显示的玩家的UID。
uid
获取到的玩家UID。
true
表示获取成功。false
表示获取失败,此时参数不会被改变。
无论成功与否都会设置 LastErr
值。调用 GetLastErr()
可以获取错误码。
bool GetInfoLoadPicture(
char* path,
int &uid,
double &x,
double &y,
double &a
);
获取本地图片中的UID、当前人物所在位置以及角度(箭头朝向)。
path
输入图片文件路径uid
获取到的玩家UID。x
获取到的人物的x轴坐标位置。y
获取到的人物的y轴坐标位置。a
获取到的角度。
true
表示获取成功。false
表示获取失败,此时四个输出参数均不会被改变。
无论成功与否都会设置 LastErr
值。调用 GetLastErr()
可以获取错误码。
bool GetInfoLoadVideo(
char* path,
char * pathOutFile
);
获取本地视频中的UID、当前人物所在位置以及角度(箭头朝向)并保存至文本中。
path
输入视频文件路径pathOutFile
输出的路径数据保存文件路径
true
表示写入成功。false
表示写入失败。
写入文本格式如下:
| int Time | int uid | double x | double y| double a |
无论成功与否都会设置 LastErr
值。调用 GetLastErr()
可以获取错误码。
bool startSever();
开始服务,开启循环检测线程。
bool stopSever();
停止服务,停止循环检测线程