【问题标题】:Accessing a memory-mapped file using Python使用 Python 访问内存映射文件
【发布时间】:2014-01-02 00:40:45
【问题描述】:

我希望使用激战 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

任何帮助将不胜感激。

干杯, 编。

【问题讨论】:

    标签: python struct mmap memory-mapped-files


    【解决方案1】:

    您可以尝试在 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]
    

    【讨论】:

      【解决方案2】:

      对于名称,在游戏中创建一个角色名称并确保将其写入磁盘 - 可能通过退出游戏。

      然后使用二进制文件编辑器搜索名称。我偏爱http://sourceforge.net/projects/bpe/,但其中有很多。

      寻找摄像头位置可能会更加困难。我可能会从查找角色名称开始,然后在附近搜索可能是相机位置的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-09
        • 2019-01-18
        • 1970-01-01
        • 1970-01-01
        • 2013-06-19
        • 2016-01-14
        • 1970-01-01
        相关资源
        最近更新 更多