FFDraw: 一个针对FFxiv的悬浮窗图形显示框架
此处应有介绍
需求 python3.10 或以上的x64版本作为运行环境
下载专案后在专案目录运行 python -m pip install -r requirements.txt 安装依赖
如果遇到安装依赖问题请自行搜索 pip换源 相关
执行 main.py
去 release 下载带exe的发布
双击 FFDraw.exe 运行
注:exe版本未必属于最新版本,也未必适应你的运行环境,请尽量使用python版本或从其他人获取最新版本的build (安装 pyinstaller 并运行 pack.py)
如果遇到编码问题 utf8 cant decode 之类,请修改 config.json 中的 path_encoding 为 gbk 并重启程序
本程序基础的使用基于 http rpc api, 运行后将json指令传送到 http://127.0.0.1:8001/rpc 即可
一个基础的 json payload 例子:
{
"cmd" : " add_omen" ,
"color" : " enemy" ,
"shape_scale" : {
"key" : " circle" ,
"range" : 5
},
"pos" : {
"key" : " actor_pos" ,
"id" : 269567252
},
"duration" : 10
}
在本接口中,关键字和其他参数在同一层,请注意
更多例子参阅 这里
参数
类型
描述
shape
number
图形的形状,高十六位为类型,低十六位为参数(后详)
scale
number[3]
图形的比例,对应[东西刻度,上下刻度,南北刻度]
shape_scale
(number, number[3])
一般用于使用特殊值(后详),为形状、比例的二元组,当存在时忽略 shape 和 scale 参数
surface
number[3]/number[4]
填充颜色的rgba值,如果输入长度为3,默认alpha为1
line
number[3]/number[4]
线条颜色的rgba值,如果输入长度为3,默认alpha为1
color
string/number[3]/number[4]
输入为 string 时会套用预设配色(后详),否则等同于surface参数,当存在时忽略 surface 和 line 参数
pos
number[3]
图像在游戏3d空间里面的位置,对应 [东西刻度,上下刻度,南北刻度]
facing
number
图像沿着y轴的旋转量,以rad为单位
duration
number
图像的存活时间,空则一直存在需要手动清除
label
string
在指定位置显示的文字
label_color
number[3]
显示文字的颜色
label_scale
number
显示文字的比例
label_at
number
显示文字的相对坐标的位置(参见这里 )
参数
类型
描述
id
number
图形的omen_id,如果为-1则全部删除
描述:foreach(values as name)func()
参数
类型
描述
values
any[]
变量的列表
name
string
变量赋值的名字
func
指令
执行的指令
参数
类型
描述
args
map[str,any]
变量的列表
func
指令
执行的指令
关键字
描述
enemy
珊瑚色
g_enemy
橘色
friend
海水蓝
g_friend
天蓝色
图形类型
参数
描述
0x1
内圈比例 * 0xffff
参数为空是普通圆形,否则月环,如果需要描述外圈 20 内圈 10 的月环,图形值为 0x10000|int((10/20)*0xffff)(scale为 [20,1,20])
0x2
特殊值
矩形,参数为1时前后镜像,参数为2时,在1的基础上另外绘画一个90度旋转的矩形(交叉)
0x5
角度(单位deg)
扇形,如果需要角度为20的扇形,图形值为 0x50000|20
类型: any
描述:设为创建时的数值,而不是即时数值
类型: any
描述:获取foreach赋值的变量
参数
类型
描述
name
string
获取变量的名字
类型: number
描述:当前图形的进度,为 0-1 之间的值
类型: 1/0
描述:当前图形是否在xz轴上覆盖某个坐标
参数
类型
描述
pos
number[3]
查询坐标
类型: any
描述:输入python表达式并获取返回 (本特殊值未来可能因为安全原因弃用,请避免使用)
参数
类型
描述
code
string
python表达式
args
map[str,any]
表达式用到的变量
类型: number[3]
描述:返回对应实体的位置
参数
类型
描述
id
number
实体id
status_id
number
状态id
source_id
number
来源id,可选
类型: number
描述:返回角色某状态的剩余时间,无则为0
参数
类型
描述
id
number
实体id
status_id
number
状态id
source_id
number
来源id,可选
类型: number
描述:返回角色某状态的参数,无则为0
参数
类型
描述
id
number
实体id
status_id
number
状态id
source_id
number
来源id,可选
类型: number
描述:返回角色某状态的来源id,无则为0
参数
类型
描述
id
number
实体id
status_id
number
状态id
类型: 1/0
描述:该id对应的实体是否能被选中
参数
类型
描述
a1
number
实体a的id
a2
number
实体b的id
关键字:player_by_distance_idx
类型: number
描述:根据与某实体的距离排序所有玩家并返回指定index的角色id(可能造成性能负担,谨慎使用)
参数
类型
描述
src
number
指定实体的id
idx
number
查询index
关键字:actor_relative_facing
类型: number
描述:src实体看向dst实体时的面向
参数
类型
描述
src
number
来源实体的id
dst
number
目标实体的id
类型: any
描述:尝试返回 expr值,如果出现任意错误则返回 default值
参数
类型
描述
expr
any
表达式
default
any
默认值
类型: any
描述:如果 cond!=0,返回true,否则返回false
参数
类型
描述
cond
any
判断式
true
any
真值
false
any
假值
参数
类型
描述
v1
any
数值1
v2
any
数值2
参数
类型
描述
v1
any
数值1
v2
any
数值2
参数
类型
描述
v1
any
数值1
v2
any
数值2
参数
类型
描述
v1
any
数值1
v2
any
数值2
类型: number
描述:返回 values 的总和(可以用于相加2/3/4元组)
参数
类型
描述
values
number[]
数值
类型: number
描述:返回 values 的总乘
参数
类型
描述
values
number[]
数值
类型: number
描述:返回 values 的总除
参数
类型
描述
values
number[]
数值
类型: number
描述:返回 values 的最小值
参数
类型
描述
values
number[]
数值
类型: number
描述:返回 values 的最大值
参数
类型
描述
values
number[]
数值
类型: (number, number[3])
描述:用于 shape_scale 的特殊值,表述圆形
类型: (number, number[3])
描述:用于 shape_scale 的特殊值,表述扇形
参数
类型
描述
deg
number
扇形角度
range
number
半径
类型: (number, number[3])
描述:用于 shape_scale 的特殊值,表述环形
参数
类型
描述
inner
number
内圈半径
range
number
外圈半径
类型: (number, number[3])
描述:用于 shape_scale 的特殊值,表述矩形
参数
类型
描述
width
number
宽度
range
number
长度
类型: (number, number[3])
描述:用于 shape_scale 的特殊值,表述十字
参数
类型
描述
width
number
宽度
range
number
长度
类型: (number, number[3])
描述:用于 shape_scale 的特殊值,表述某技能的形状(本接口无法判断扇形角度及月环内圈,统一输出90度扇形和50%月环)
类型: None
描述:用于 shape_scale 或 shape 的特殊值,会返回0并将omen销毁
类型: number[]
描述:返回符合 actor_type 的 id 列表
参数
类型
描述
type
number
1:玩家,2:战斗npc,3:事件npc
类型: number[]
描述:返回符合 base_id 的 id 列表
参数
类型
描述
id
number
base_id
类型: number[]
描述:返回队伍中所有人的id
编写python模块置于plugins文件夹中,会自动导入
update(main:FFDraw)->any 每帧调用,一般用于直接调用gui进行绘制
process_command(command:dict)->bool httpapi在找不到指令cmd时调用,返回true为已处理