我希望使用Guild Wars 2中的内存映射文件,该文件旨在链接到Mumble以获取位置音频。该文件包含有关字符坐标和其他有用信息的信息。
我已经能够使用这个脚本访问坐标信息,
import mmap
import struct
last=[]
while True:
shmem = mmap.mmap(0, 20, "MumbleLink", mmap.ACCESS_READ)
coord=struct.unpack("IL3f", shmem)[2:5]
shmem.close()
if last!=coord:
print(coord)
last = coord
X = coord[2]
Y = coord[0]
Z = coord[1])
我的问题是我无法弄清楚如何从文件中获取更多信息。如何访问存储的其他信息,如角色名称和摄像机位置。
此处有关于该文件的信息:
https://forum-en.guildwars2.com/forum/community/api/Map-API-Mumble-Mashup
http://mumble.sourceforge.net/Link
非常感谢任何帮助。
干杯, 编
答案 0 :(得分:2)
您可以尝试在mmap调用中映射超过20个字节的文件,比如使用1024,根据http://mumble.sourceforge.net/Link解压缩整个内容,然后提取名称和摄像头位置:
s = struct.unpack('IL3f3f3f512s3f')
name = s[11].decode('utf-16')
camera_pos_x,camera_pos_y,camera_pos_z = s[12:15]
答案 1 :(得分:0)
对于名称,在游戏中创建一个角色名称,并确保将其写入磁盘 - 也许是退出游戏。
然后使用二进制文件编辑器搜索名称。我偏爱http://sourceforge.net/projects/bpe/,但其中有很多。
找到相机位置可能会更加困难。我可能首先找到角色名称,然后在附近搜索可能是摄像机位置的东西。