1 package net.sourceforge.queried.gametypes;
2
3
4
5
6
7
8
9 import java.util.ArrayList;
10 import java.util.Collections;
11
12 import net.sourceforge.queried.PlayerInfo;
13 import net.sourceforge.queried.ScoreComparator;
14 import net.sourceforge.queried.ServerInfo;
15 import net.sourceforge.queried.Util;
16
17 public class NEXServerInfo {
18
19 public static ServerInfo getDetails(int localPort, String ipStr, int port, int infoType,
20 int queryType, int gameType) {
21
22 String queryResult = Util.getInfo(localPort, ipStr, port, "getstatus", infoType, queryType, gameType);
23
24 ServerInfo serverInfo = null;
25 if (queryResult != null && queryResult.length() > 0) {
26 queryResult = queryResult.substring(queryResult.indexOf("\\"));
27 queryResult = queryResult.replaceAll("\\^([0-9a-wyzA-WYZ]|x[0-9a-fA-F]{6})", "");
28 serverInfo = new ServerInfo();
29 serverInfo.setGame(Util.getPart(queryResult, "gamename"));
30 serverInfo.setIp(ipStr);
31 serverInfo.setPort(port + "");
32 serverInfo.setName(Util.getPart(queryResult, "hostname"));
33 serverInfo.setPlayerCount(Util.getPart(queryResult, "clients"));
34 serverInfo.setMaxPlayers(Util.getPart(queryResult, "sv_maxclients"));
35 serverInfo.setMap(Util.getPart(queryResult, "mapname"));
36 serverInfo.setFullResponse(queryResult);
37 }
38
39 return serverInfo;
40 }
41
42 public static ArrayList getPlayers(int localPort, String ipStr, int port, int infoType,
43 int queryType, int gameType) {
44
45 ArrayList playerInfo = new ArrayList();
46 String queryResult = Util.getInfo(localPort, ipStr, port, "getstatus", infoType, queryType, gameType);
47 if (queryResult == null || queryResult.length() < 1) {
48 return playerInfo;
49 }
50
51 queryResult = queryResult.substring(queryResult.indexOf("\\"));
52 queryResult = queryResult.replaceAll("\\^([0-9a-wyzA-WYZ]|x[0-9a-fA-F]{6})", "");
53
54 if (queryResult != null || queryResult.length() > 0) {
55 String[] plyrs = queryResult.split("\n");
56 for (int x = 1; x < plyrs.length; x++) {
57 String plyr = plyrs[x];
58 String score = plyr.substring(0, plyr.indexOf(" "));
59 String name = plyr.substring(plyr.lastIndexOf(" "));
60
61 PlayerInfo player = new PlayerInfo();
62 player.setDeaths(-9999);
63 player.setKills(Integer.valueOf(score).intValue());
64 player.setName(name);
65 player.setScore(-9999);
66 playerInfo.add(player);
67 }
68 Collections.sort(playerInfo, new ScoreComparator());
69 }
70
71 return playerInfo;
72 }
73
74 }