我如何看待星际2重播?

时间:2010-10-04 08:18:00

标签: php parsing replay

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

3 个答案:

答案 0 :(得分:12)

SC重放文件实际上是一个MPQ存档文件。此MPQ存档包含一些不同的文件(如.zip文件)。

此存档内部是MPQ存档中每种数据类型的单独文件。 (例如,有一个用于游戏事件的文件和另一个用于UI事件的文件)。

网上有大量关于如何处理MPQ文件的文档。现在,MPQ中的各个文件有点棘手。

如果您想从重播中获取信息(玩家是谁以及他们玩过什么地图),您可以使用这些工具。 (我假设像Web服务器这样的Unix)。

1)下载并构建libmpq和mpq-tools(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)]

希望这有帮助!

答案 1 :(得分:2)

查看http://code.google.com/p/phpsc2replay/

我认为这可能正是您所寻找的。我当然希望我一个月前找到它。

答案 2 :(得分:1)

  

如何使用PHP打开星际2重播?

使用PHP的任何文件系统函数http://us.php.net/manual/en/ref.filesystem.php

由于大多数SC2重放的大小似乎相当小,因此您可能会使用file_get_contents()来取回整个文件作为字符串。

相关问题