Доступ к файлу, сопоставленному с памятью, с помощью Python
Я ищу, чтобы использовать сопоставленный файл памяти из 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
Ура!, Эд.
2 ответа:
Вы можете попытаться сопоставить более 20 байт из файла в вызове mmap, скажем, использовать 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]
Для имен создайте имя персонажа в игре и убедитесь, что оно записано на диск - возможно, выйдя из игры.
Затем используйте редактор двоичных файлов для поиска имени. Я неравнодушен к http://sourceforge.net/projects/bpe/, но их много.
Найти положение камеры может оказаться сложнее. Я, вероятно, начну с поиска имен персонажей, а затем поищу поблизости вещи, которые могут быть позициями камер.