Alright, so a lot of project insanity sources have really messy commands that look like this..
Code:
if (playerCommand.startsWith("xteletome")) {
String name = playerCommand.substring(10);
for (int i = 0; i < Config.MAX_PLAYERS; i++) {
if (Server.playerHandler.players[i] != null) {
if (Server.playerHandler.players[i].playerName.equalsIgnoreCase(name)) {
Client other = (Client) Server.playerHandler.players[i];
other.getPA().movePlayer(c.getX(), c.getY(), c.heightLevel);
}
}
}
}
if (playerCommand.startsWith("alltome")) {
String name = playerCommand.substring(10);
for (int i = 0; i < Config.MAX_PLAYERS; i++) {
if (Server.playerHandler.players[i] != null) {
Client other = (Client) Server.playerHandler.players[i];
other.getPA().movePlayer(c.getX(), c.getY(), c.heightLevel);
}
}
}
These small snippets i made will clean that up and will make making player based commands easier :]
add this into your Client.java somewhere:
Code:
// By Robgob
public Client getClient(String name) {
name = name.toLowerCase();
for(int i = 0; i < Config.MAX_PLAYERS; i++) {
if(validClient(i)) {
Client client = getClient(i);
if(client.playerName.toLowerCase().equalsIgnoreCase(name)) {
return client;
}
}
}
return null;
}
public Client getClient(int id) {
return (Client) Server.playerHandler.players[id];
}
public boolean validClient(int id) {
if (id < 0 || id > Config.MAX_PLAYERS) {
return false;
}
return validClient(getClient(id));
}
public boolean validClient(String name) {
return validClient(getClient(name));
}
public boolean validClient(Client client) {
return (client != null && !client.disconnected);
}
Now your commands look nice, short, and neat :]]
Code:
if (playerCommand.startsWith("xteletome")) {
String name = playerCommand.substring(10);
if (c.validClient(name)) {
c.getClient(name).getPA().movePlayer(c.getX(), c.getY(), c.heightLevel);
}
}
if (playerCommand.startsWith("alltome")) {
String name = playerCommand.substring(10);
for (int i = 0; i < Config.MAX_PLAYERS; i++) {
if(c.validClient(i))
c.getClient(i).getPA().movePlayer(c.getX(), c.getY(), c.heightLevel);
}
}
//I'll throw in my heal command :]]
if (playerCommand.startsWith("heal")) { // ::heal || ::heal name
if (playerCommand.indexOf(" ") > -1) {
String name = playerCommand.substring(5);
if (c.validClient(name)) {
Client p = c.getClient(name);
for (int i = 0; i < 20; i++) {
p.playerLevel[i] = p.getLevelForXP(p.playerXP[i]);
p.getPA().refreshSkill(i);
}
p.sendMessage("You have been healed by " + c.playerName + ".");
} else {
c.sendMessage("Player must be offline.");
}
} else {
for (int i = 0; i < 20; i++) {
c.playerLevel[i] = c.getLevelForXP(c.playerXP[i]);
c.getPA().refreshSkill(i);
}
c.sendMessage("You have been healed.");
}
}
Not that big of a difference, but still..