7

PHPを使用して自分で楽しむためのパーサーを作成することに興味があります。何を知る必要がありますか?私にどんな提案がありますか?PHPを使用してStarcraft2リプレイを開くにはどうすればよいですか?

4

3 に答える 3

12

SC再生ファイルは実際にはMPQアーカイブファイルです。このMPQアーカイブには、いくつかの異なるファイル(.zipファイルなど)が含まれています。

このアーカイブ内には、MPQアーカイブ内のデータの種類ごとに個別のファイルがあります。(たとえば、ゲームイベント用のファイルとUIイベント用のファイルがあります)。

MPQファイルの処理方法については、オンラインでかなりの量のドキュメントがあります。現在、MPQ内の個々のファイルは少し注意が必要です。

リプレイから情報(プレーヤーが誰で、どのマップでプレイしたか)を取得したい場合は、これらのツールを使用できます。(私はWebサーバーのようなUnixを想定しています)。

1)libmpqとmpq-toolsをダウンロードしてビルドします(https://libmpq.org/) 。

2)次のスクリプトを実行します

これらをsystem()呼び出しから実行してから、いくつかの分割コマンドを実行して、プレーヤーとレースを取得できます。

これをinfo.shとして保存します。コマンドシェルのように実行し、再生ファイルを引数として渡します。

#!/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

これがルビースクリプトです。これを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)]

お役に立てれば!

于 2010-10-27T18:03:47.187 に答える
2

http://code.google.com/p/phpsc2replay/をご覧ください

まさにあなたが探しているものかもしれないと思います。確かに一ヶ月前に見つけていたらよかったのに。

于 2010-11-27T05:50:29.657 に答える
1

PHPを使用してStarcraft2リプレイを開くにはどうすればよいですか?

PHPのファイルシステム関数のいずれかを使用http://us.php.net/manual/en/ref.filesystem.php

file_get_contents()ほとんどのSC2リプレイはサイズがかなり小さいように見えるので、ファイル全体を文字列として取得することでおそらく逃げることができます。

于 2010-10-04T11:43:18.477 に答える