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
)
注2:cn版本与正常版本差异为默认值适配国内网络、国服默认路径编码,无需手动设置,两个版本均能适用与国服与国际服
如果遇到报错 failed to set hardware filter to promiscuous mode
之类,请修改 config.json
中的 sniffer/sniff_promisc
为 false
并重启程序
如果遇到报错 Npcap/Winpcap is not installed
之类,请下载 npcap 安装后重启
如果遇到编码问题 utf8 cant decode
之类,请修改 config.json
中的 path_encoding
为 gbk
并重启程序
关于跨域:设置 web_server/enable_cors
,另外如果你不打算给链接设置ssl, chrome 请在 chrome://flags/ 中设置 Block insecure private network requests
为 disable
(ref)
本程序基础的使用基于 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
显示文字的相对坐标的位置(参见这里 )
参数
类型
描述
src
number[3]
线条的来源
dst
number[3]
线条的目标
width
number
线条粗幼,默认3
color
string
/number[3]
/number[4]
线条颜色,输入为 string
时会套用预设配色
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]
查询坐标
类型: number
描述:当前图形覆盖了多少个actor
参数
类型
描述
ids
number[]
actor id 列表
类型: 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[]
数值
类型: string
描述:format
.format(*args
)
参数
类型
描述
format
string
格式
args
any[]
数值
类型: (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
参数
类型
描述
val
number
返回的倍数
类型: number
描述:在rad和deg间转换
参数
类型
描述
rad
number
优先判断,将rad转换为deg
deg
number
如果rad为空,将deg转换为rad
编写python模块置于plugins文件夹中,会自动导入
update(main:FFDraw)->any
每帧调用,一般用于直接调用gui进行绘制
process_command(command:dict)->bool
httpapi在找不到指令cmd时调用,返回true为已处理