# jw3gparser
Java解析《魔兽争霸3》游戏录像工具,可解析w3g、nwg(网易对战平台录像)格式录像。
## 使用方法
``` java
public class Test {
public static void main(String[] args) throws IOException, W3GException, DataFormatException {
Replay replay = new Replay(new File("d:/wucao/Desktop/151020_[UD]LuciferLNMS_VS_[NE]checkuncle_Amazonia_RN.w3g"));
Header header = replay.getHeader();
System.out.println("版本:1." + header.getVersionNumber() + "." + header.getBuildNumber());
long duration = header.getDuration();
System.out.println("时长:" + convertMillisecondToString(duration));
UncompressedData uncompressedData = replay.getUncompressedData();
System.out.println("游戏名称:" + uncompressedData.getGameName());
System.out.println("游戏创建者:" + uncompressedData.getCreaterName());
System.out.println("游戏地图:" + uncompressedData.getMap());
List<Player> list = uncompressedData.getPlayerList();
for(Player player : list) {
System.out.println("---玩家" + player.getPlayerId() + "---");
System.out.println("玩家名称:" + player.getPlayerName());
if(player.isHost()) {
System.out.println("是否主机:主机");
} else {
System.out.println("是否主机:否");
}
System.out.println("游戏时间:" + convertMillisecondToString(player.getPlayTime()));
System.out.println("操作次数:" + player.getAction());
System.out.println("APM:" + player.getAction() * 60000 / player.getPlayTime());
if(!player.isObserverOrReferee()) {
System.out.println("玩家队伍:" + (player.getTeamNumber() + 1));
switch(player.getRace()) {
case HUMAN:
System.out.println("玩家种族:人族");
break;
case ORC:
System.out.println("玩家种族:兽族");
break;
case NIGHT_ELF:
System.out.println("玩家种族:暗夜精灵");
break;
case UNDEAD:
System.out.println("玩家种族:不死族");
break;
case RANDOM:
System.out.println("玩家种族:随机");
break;
}
switch(player.getColor()) {
case RED:
System.out.println("玩家颜色:红");
break;
case BLUE:
System.out.println("玩家颜色:蓝");
break;
case CYAN:
System.out.println("玩家颜色:青");
break;
case PURPLE:
System.out.println("玩家颜色:紫");
break;
case YELLOW:
System.out.println("玩家颜色:黄");
break;
case ORANGE:
System.out.println("玩家颜色:橘");
break;
case GREEN:
System.out.println("玩家颜色:绿");
break;
case PINK:
System.out.println("玩家颜色:粉");
break;
case GRAY:
System.out.println("玩家颜色:灰");
break;
case LIGHT_BLUE:
System.out.println("玩家颜色:浅蓝");
break;
case DARK_GREEN:
System.out.println("玩家颜色:深绿");
break;
case BROWN:
System.out.println("玩家颜色:棕");
break;
}
System.out.println("障碍(血量):" + player.getHandicap() + "%");
if(player.isComputer()) {
System.out.println("是否电脑玩家:电脑玩家");
switch (player.getAiStrength())
{
case EASY:
System.out.println("电脑难度:简单的");
break;
case NORMAL:
System.out.println("电脑难度:中等难度的");
break;
case INSANE:
System.out.println("电脑难度:令人发狂的");
break;
}
} else {
System.out.println("是否电脑玩家:否");
}
} else {
System.out.println("玩家队伍:裁判或观看者");
}
}
List<ChatMessage> chatList = uncompressedData.getReplayData().getChatList();
for(ChatMessage chatMessage : chatList) {
String chatString = "[" + convertMillisecondToString(chatMessage.getTime()) + "]";
chatString += chatMessage.getFrom().getPlayerName() + " 对 ";
switch ((int)chatMessage.getMode()) {
case 0:
chatString += "所有人";
break;
case 1:
chatString += "队伍";
break;
case 2:
chatString += "裁判或观看者";
break;
default:
chatString += chatMessage.getTo().getPlayerName();
}
chatString += " 说:" + chatMessage.getMessage();
System.out.println(chatString);
}
}
private static String convertMillisecondToString(long millisecond) {
long second = (millisecond / 1000) % 60;
long minite = (millisecond / 1000) / 60;
if (second < 10) {
return minite + ":0" + second;
} else {
return minite + ":" + second;
}
}
}
```
输出DEMO:
```
版本:1.26.6059
时长:24:53
游戏名称:WCA01
游戏创建者:A.1st_LawLiet
游戏地图:Maps\Download\(2)Amazonia.w3x
---玩家1---
玩家名称:A.1st_LawLiet
是否主机:主机
游戏时间:24:32
操作次数:0
APM:0
玩家队伍:裁判或观看者
---玩家2---
玩家名称:checkuncle
是否主机:否
游戏时间:24:31
操作次数:5831
APM:237
玩家队伍:2
玩家种族:暗夜精灵
玩家颜色:红
障碍(血量):100%
是否电脑玩家:否
---玩家3---
玩家名称:LuciferLNMS
是否主机:否
游戏时间:24:31
操作次数:7816
APM:318
玩家队伍:1
玩家种族:不死族
玩家颜色:灰
障碍(血量):100%
是否电脑玩家:否
---玩家4---
玩家名称:WCA_SEA_OB2
是否主机:否
游戏时间:24:53
操作次数:0
APM:0
玩家队伍:裁判或观看者
---玩家5---
玩家名称:wca_sea_ob1
是否主机:否
游戏时间:24:32
操作次数:0
APM:0
玩家队伍:裁判或观看者
[0:09]checkuncle 对 所有人 说:All rights reserved by Blizzard
[0:10]checkuncle 对 所有人 说:w3g files released by www.Replays.Net.
[0:36]LuciferLNMS 对 所有人 说:gl
[0:38]checkuncle 对 所有人 说:gl
[24:30]checkuncle 对 所有人 说:gg
[24:43]checkuncle 对 所有人 说:For more replays, plz visit www.Replays.Net
```
## 参考文档
http://w3g.deepnode.de/files/w3g_format.txt
http://w3g.deepnode.de/files/w3g_actions.txt
## Change Log
### V1.1.0
1. 支持网易对战平台录像格式nwg解析;
### V1.1.1
1. 修复部分录像没有玩家离开�
没有合适的资源?快使用搜索试试~ 我知道了~
Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip
共17个文件
java:12个
txt:2个
xml:1个
需积分: 5 0 下载量 178 浏览量
2024-03-28
23:02:11
上传
评论
收藏 49KB ZIP 举报
温馨提示
Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip Java
资源推荐
资源详情
资源评论
收起资源包目录
Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具).zip (17个子文件)
code_20105
pom.xml 783B
doc
w3g_format.txt 57KB
w3g_actions.txt 76KB
src
main
java
com
xxg
jw3gparser
W3GException.java 148B
ChatMessage.java 1KB
PlayerColor.java 153B
PlayerRace.java 98B
CompressedDataBlock.java 1KB
PlayAiStrength.java 87B
Header.java 3KB
LittleEndianTool.java 2KB
Replay.java 3KB
Player.java 3KB
UncompressedData.java 7KB
ReplayData.java 9KB
.gitignore 21B
README.md 8KB
共 17 条
- 1
资源评论
土豆片片
- 粉丝: 1517
- 资源: 5643
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功