我有兴趣用php为自己的乐趣构建一个解析器。我需要知道什么?你对我有什么建议?如何使用php打开星际争霸2重播?

最佳答案

SC重播文件实际上是一个MPQ存档文件。这个mpq存档包含几个不同的文件(比如.zip文件)。
在这个存档中,MPQ存档中的每种数据类型都有单独的文件。
(例如,有一个文件用于游戏事件,另一个文件用于ui事件)。
网上有大量关于如何处理mpq文件的文档。现在,mpq中的单个文件有点棘手。
如果你想从重播中获得信息(玩家是谁,他们在什么地图上玩),你可以使用这些工具。(我假设是一个类似unix的web服务器)。
1)下载并构建libmpq和mpq工具(https://libmpq.org/
2)运行以下脚本
您可以通过system()调用运行这些命令,然后运行几个split命令来获取玩家和比赛。
将其另存为info.sh。像命令shell一样运行它,并将重播文件作为参数传入。

#!/bin/bash

# Save this file as info.sh

# This extracts the individual files from the MPQ archive (the replay
# file)


mpq-extract -e $1 > /dev/null
cat file000000.xxx | strings | ruby info.rb

这是一个ruby脚本。将此另存为info.rb
# This *kinda* extracts the file info from a header file.  I don't
# really know how it works yet, so I'm just extracting strings.
#
# Save this file as info.rb

lines = STDIN.readlines
puts "%s:%s|%s:%s" % [(lines[0].strip), (lines[1].strip), (lines[2].strip), (lines[3].strip)]

希望这有帮助!

07-24 15:46