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