View Javadoc

1   package net.sourceforge.queried.gametypes;
2   
3   /**
4    * Game Modes, for future reference: DM 1 TDM 2 DOM 3 CTF 4 RUNE 5
5    * 
6    * @author mcrandello
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  }