Как посмотреть на повтор Starcraft 2?

Я заинтересован в создании парсера для собственного удовольствия с помощью PHP. Что мне нужно знать? Какие у вас есть предложения? Как даже открыть воспроизведение Starcraft 2 с помощью PHP?

3 ответов


файл воспроизведения SC на самом деле является архивным файлом MPQ. Этот архив MPQ содержит несколько разных файлов (например, a .сжатый файл.)

внутри этого архива находятся отдельные файлы для каждого из типов данных в архиве MPQ. (Например есть один файл для игровых событий и другой для событий пользовательского интерфейса).

существует достаточное количество документации в интернете о том, как иметь дело с файлами MPQ. Теперь отдельные файлы в MPQ немного сложнее.

Если вы хотите получить информацию из повтора (кто были игроки и на какой карте они играли), вы можете использовать эти инструменты. (Я предполагаю, что Unix, как веб-сервер).

1) Скачать и построить libmpq и mpq-tools (https://libmpq.org/ )

2) запустите следующие скрипты

вы можете запустить их из вызова system (), а затем выполнить несколько команд разделения, чтобы получить игроков и гонку.

сохраните это как 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  > /dev/null
cat file000000.xxx | strings | ruby info.rb

вот сценарий ruby. Сохраните это как информацию.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)]

надеюсь, что это помогает!


взгляните на http://code.google.com/p/phpsc2replay/

Я думаю, что это может быть именно то, что вы ищете. Жаль, что я не нашел его месяц назад.


как даже открыть воспроизведение Starcraft 2 с помощью PHP?

С любой из функций файловой системы PHPhttp://us.php.net/manual/en/ref.filesystem.php

поскольку большинство повторов SC2 кажутся довольно маленькими по размеру, вы, вероятно, могли бы уйти с file_get_contents() чтобы получить весь файл в виде строки.