Reformat and clean up "net" package
This commit is contained in:
@@ -30,7 +30,7 @@ public class CustomPacketHandler implements PacketHandler {
|
||||
@Override
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
if (p.available() > 0 && c.getGMLevel() == 4) {//w/e
|
||||
c.sendPacket(PacketCreator.customPacket(p.readBytes((int) p.available())));
|
||||
c.sendPacket(PacketCreator.customPacket(p.readBytes(p.available())));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ import net.PacketHandler;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public final class LoginRequiringNoOpHandler implements PacketHandler {
|
||||
private static LoginRequiringNoOpHandler instance = new LoginRequiringNoOpHandler();
|
||||
private static final LoginRequiringNoOpHandler instance = new LoginRequiringNoOpHandler();
|
||||
|
||||
public static LoginRequiringNoOpHandler getInstance() {
|
||||
return instance;
|
||||
|
||||
@@ -6,7 +6,6 @@ import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author kevintjuh93
|
||||
*/
|
||||
public final class AcceptToSHandler extends AbstractPacketHandler {
|
||||
|
||||
@@ -38,7 +38,7 @@ import java.net.UnknownHostException;
|
||||
|
||||
public final class CharSelectedHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(CharSelectedHandler.class);
|
||||
|
||||
|
||||
private static int parseAntiMulticlientError(AntiMulticlientResult res) {
|
||||
return switch (res) {
|
||||
case REMOTE_PROCESSING -> 10;
|
||||
@@ -48,11 +48,11 @@ public final class CharSelectedHandler extends AbstractPacketHandler {
|
||||
default -> 9;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
int charId = p.readInt();
|
||||
|
||||
|
||||
String macs = p.readString();
|
||||
String hostString = p.readString();
|
||||
|
||||
@@ -64,7 +64,7 @@ public final class CharSelectedHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(17));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.updateMacs(macs);
|
||||
c.updateHwid(hwid);
|
||||
|
||||
@@ -73,34 +73,34 @@ public final class CharSelectedHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (c.hasBannedMac() || c.hasBannedHWID()) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
Server server = Server.getInstance();
|
||||
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.setWorld(server.getCharacterWorld(charId));
|
||||
World wserv = c.getWorldServer();
|
||||
if(wserv == null || wserv.isWorldCapacityFull()) {
|
||||
if (wserv == null || wserv.isWorldCapacityFull()) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
|
||||
if(socket == null) {
|
||||
if (socket == null) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
server.unregisterLoginState(c);
|
||||
c.setCharacterOnSessionTransitionState(charId);
|
||||
|
||||
|
||||
try {
|
||||
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
|
||||
} catch (UnknownHostException | NumberFormatException e) {
|
||||
|
||||
@@ -27,12 +27,12 @@ public class CharSelectedWithPicHandler extends AbstractPacketHandler {
|
||||
default -> 9;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
String pic = p.readString();
|
||||
int charId = p.readInt();
|
||||
|
||||
|
||||
String macs = p.readString();
|
||||
String hostString = p.readString();
|
||||
|
||||
@@ -44,7 +44,7 @@ public class CharSelectedWithPicHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(17));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.updateMacs(macs);
|
||||
c.updateHwid(hwid);
|
||||
|
||||
@@ -52,36 +52,36 @@ public class CharSelectedWithPicHandler extends AbstractPacketHandler {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Server server = Server.getInstance();
|
||||
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (c.checkPic(pic)) {
|
||||
c.setWorld(server.getCharacterWorld(charId));
|
||||
World wserv = c.getWorldServer();
|
||||
if(wserv == null || wserv.isWorldCapacityFull()) {
|
||||
if (wserv == null || wserv.isWorldCapacityFull()) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
|
||||
if(socket == null) {
|
||||
if (socket == null) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid);
|
||||
if (res != AntiMulticlientResult.SUCCESS) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
server.unregisterLoginState(c);
|
||||
c.setCharacterOnSessionTransitionState(charId);
|
||||
|
||||
|
||||
try {
|
||||
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
|
||||
} catch (UnknownHostException | NumberFormatException e) {
|
||||
|
||||
@@ -35,20 +35,20 @@ public final class CharlistRequestHandler extends AbstractPacketHandler {
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
p.readByte();
|
||||
int world = p.readByte();
|
||||
|
||||
|
||||
World wserv = Server.getInstance().getWorld(world);
|
||||
if(wserv == null || wserv.isWorldCapacityFull()) {
|
||||
if (wserv == null || wserv.isWorldCapacityFull()) {
|
||||
c.sendPacket(PacketCreator.getServerStatus(2));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int channel = p.readByte() + 1;
|
||||
Channel ch = wserv.getChannel(channel);
|
||||
if(ch == null) {
|
||||
if (ch == null) {
|
||||
c.sendPacket(PacketCreator.getServerStatus(2));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.setWorld(world);
|
||||
c.setChannel(channel);
|
||||
c.sendCharList(world);
|
||||
|
||||
@@ -35,61 +35,60 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public final class CreateCharHandler extends AbstractPacketHandler {
|
||||
|
||||
private final static Set<Integer> IDs = new HashSet<>(Arrays.asList(new Integer[]{
|
||||
1302000, 1312004, 1322005, 1442079,// weapons
|
||||
1040002, 1040006, 1040010, 1041002, 1041006, 1041010, 1041011, 1042167,// bottom
|
||||
1060002, 1060006, 1061002, 1061008, 1062115, // top
|
||||
1072001, 1072005, 1072037, 1072038, 1072383,// shoes
|
||||
30000, 30010,30020, 30030, 31000, 31040, 31050,// hair
|
||||
20000, 20001, 20002, 21000, 21001, 21002, 21201, 20401, 20402, 21700, 20100 //face
|
||||
//#NeverTrustStevenCode
|
||||
}));
|
||||
|
||||
private static boolean isLegal(Integer toCompare) {
|
||||
return IDs.contains(toCompare);
|
||||
}
|
||||
private final static Set<Integer> IDs = new HashSet<>(Arrays.asList(1302000, 1312004, 1322005, 1442079,// weapons
|
||||
1040002, 1040006, 1040010, 1041002, 1041006, 1041010, 1041011, 1042167,// bottom
|
||||
1060002, 1060006, 1061002, 1061008, 1062115, // top
|
||||
1072001, 1072005, 1072037, 1072038, 1072383,// shoes
|
||||
30000, 30010, 30020, 30030, 31000, 31040, 31050,// hair
|
||||
20000, 20001, 20002, 21000, 21001, 21002, 21201, 20401, 20402, 21700, 20100 //face
|
||||
//#NeverTrustStevenCode
|
||||
));
|
||||
|
||||
private static boolean isLegal(Integer toCompare) {
|
||||
return IDs.contains(toCompare);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
String name = p.readString();
|
||||
int job = p.readInt();
|
||||
int face = p.readInt();
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
String name = p.readString();
|
||||
int job = p.readInt();
|
||||
int face = p.readInt();
|
||||
|
||||
int hair = p.readInt();
|
||||
int haircolor = p.readInt();
|
||||
int skincolor = p.readInt();
|
||||
int hair = p.readInt();
|
||||
int haircolor = p.readInt();
|
||||
int skincolor = p.readInt();
|
||||
|
||||
int top = p.readInt();
|
||||
int bottom = p.readInt();
|
||||
int shoes = p.readInt();
|
||||
int weapon = p.readInt();
|
||||
int gender = p.readByte();
|
||||
|
||||
int [] items = new int [] {weapon, top, bottom, shoes, hair, face};
|
||||
for (int item : items) {
|
||||
if (!isLegal(item)) {
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + name + ".txt", "Owner from account '" + c.getAccountName() + "' tried to packet edit in char creation.");
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int status;
|
||||
if (job == 0) { // Knights of Cygnus
|
||||
status = NoblesseCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
|
||||
} else if (job == 1) { // Adventurer
|
||||
status = BeginnerCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
|
||||
} else if (job == 2) { // Aran
|
||||
status = LegendCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
|
||||
} else {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
|
||||
return;
|
||||
}
|
||||
|
||||
if (status == -2) {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
|
||||
}
|
||||
}
|
||||
int top = p.readInt();
|
||||
int bottom = p.readInt();
|
||||
int shoes = p.readInt();
|
||||
int weapon = p.readInt();
|
||||
int gender = p.readByte();
|
||||
|
||||
int[] items = new int[]{weapon, top, bottom, shoes, hair, face};
|
||||
for (int item : items) {
|
||||
if (!isLegal(item)) {
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + name + ".txt", "Owner from account '" + c.getAccountName() + "' tried to packet edit in char creation.");
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int status;
|
||||
if (job == 0) { // Knights of Cygnus
|
||||
status = NoblesseCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
|
||||
} else if (job == 1) { // Adventurer
|
||||
status = BeginnerCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
|
||||
} else if (job == 2) { // Aran
|
||||
status = LegendCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
|
||||
} else {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
|
||||
return;
|
||||
}
|
||||
|
||||
if (status == -2) {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,56 +39,56 @@ public final class DeleteCharHandler extends AbstractPacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
String pic = p.readString();
|
||||
int cid = p.readInt();
|
||||
if (c.checkPic(pic)) {
|
||||
//check for family, guild leader, pending marriage, world transfer
|
||||
try (Connection con = DatabaseConnection.getConnection();
|
||||
PreparedStatement ps = con.prepareStatement("SELECT `world`, `guildid`, `guildrank`, `familyId` FROM characters WHERE id = ?");
|
||||
PreparedStatement ps2 = con.prepareStatement("SELECT COUNT(*) as rowcount FROM worldtransfers WHERE `characterid` = ? AND completionTime IS NULL")) {
|
||||
ps.setInt(1, cid);
|
||||
String pic = p.readString();
|
||||
int cid = p.readInt();
|
||||
if (c.checkPic(pic)) {
|
||||
//check for family, guild leader, pending marriage, world transfer
|
||||
try (Connection con = DatabaseConnection.getConnection();
|
||||
PreparedStatement ps = con.prepareStatement("SELECT `world`, `guildid`, `guildrank`, `familyId` FROM characters WHERE id = ?");
|
||||
PreparedStatement ps2 = con.prepareStatement("SELECT COUNT(*) as rowcount FROM worldtransfers WHERE `characterid` = ? AND completionTime IS NULL")) {
|
||||
ps.setInt(1, cid);
|
||||
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (!rs.next()) {
|
||||
throw new SQLException("Character record does not exist.");
|
||||
}
|
||||
int world = rs.getInt("world");
|
||||
int guildId = rs.getInt("guildid");
|
||||
int guildRank = rs.getInt("guildrank");
|
||||
int familyId = rs.getInt("familyId");
|
||||
if (guildId != 0 && guildRank <= 1) {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x16));
|
||||
return;
|
||||
} else if (familyId != -1) {
|
||||
Family family = Server.getInstance().getWorld(world).getFamily(familyId);
|
||||
if (family != null && family.getTotalMembers() > 1) {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1D));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (!rs.next()) {
|
||||
throw new SQLException("Character record does not exist.");
|
||||
}
|
||||
int world = rs.getInt("world");
|
||||
int guildId = rs.getInt("guildid");
|
||||
int guildRank = rs.getInt("guildrank");
|
||||
int familyId = rs.getInt("familyId");
|
||||
if (guildId != 0 && guildRank <= 1) {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x16));
|
||||
return;
|
||||
} else if (familyId != -1) {
|
||||
Family family = Server.getInstance().getWorld(world).getFamily(familyId);
|
||||
if (family != null && family.getTotalMembers() > 1) {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1D));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ps2.setInt(1, cid);
|
||||
try (ResultSet rs = ps2.executeQuery()) {
|
||||
rs.next();
|
||||
if (rs.getInt("rowcount") > 0) {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1A));
|
||||
return;
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09));
|
||||
return;
|
||||
}
|
||||
if (c.deleteCharacter(cid, c.getAccID())) {
|
||||
FilePrinter.print(FilePrinter.DELETED_CHAR + c.getAccountName() + ".txt", c.getAccountName() + " deleted CID: " + cid);
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0));
|
||||
} else {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09));
|
||||
}
|
||||
} else {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x14));
|
||||
}
|
||||
}
|
||||
ps2.setInt(1, cid);
|
||||
try (ResultSet rs = ps2.executeQuery()) {
|
||||
rs.next();
|
||||
if (rs.getInt("rowcount") > 0) {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1A));
|
||||
return;
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09));
|
||||
return;
|
||||
}
|
||||
if (c.deleteCharacter(cid, c.getAccID())) {
|
||||
FilePrinter.print(FilePrinter.DELETED_CHAR + c.getAccountName() + ".txt", c.getAccountName() + " deleted CID: " + cid);
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0));
|
||||
} else {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09));
|
||||
}
|
||||
} else {
|
||||
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x14));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,12 +27,12 @@ public final class RegisterPicHandler extends AbstractPacketHandler {
|
||||
default -> 9;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
p.readByte();
|
||||
int charId = p.readInt();
|
||||
|
||||
|
||||
String macs = p.readString();
|
||||
String hostString = p.readString();
|
||||
|
||||
@@ -44,47 +44,47 @@ public final class RegisterPicHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(17));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.updateMacs(macs);
|
||||
c.updateHwid(hwid);
|
||||
|
||||
|
||||
AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid);
|
||||
if (res != AntiMulticlientResult.SUCCESS) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (c.hasBannedMac() || c.hasBannedHWID()) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Server server = Server.getInstance();
|
||||
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
String pic = p.readString();
|
||||
if (c.getPic() == null || c.getPic().equals("")) {
|
||||
c.setPic(pic);
|
||||
|
||||
|
||||
c.setWorld(server.getCharacterWorld(charId));
|
||||
World wserv = c.getWorldServer();
|
||||
if(wserv == null || wserv.isWorldCapacityFull()) {
|
||||
if (wserv == null || wserv.isWorldCapacityFull()) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
|
||||
if(socket == null) {
|
||||
if (socket == null) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
server.unregisterLoginState(c);
|
||||
c.setCharacterOnSessionTransitionState(charId);
|
||||
|
||||
|
||||
try {
|
||||
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
|
||||
} catch (UnknownHostException e) {
|
||||
|
||||
@@ -42,7 +42,7 @@ public final class RegisterPinHandler extends AbstractPacketHandler {
|
||||
if (pin != null) {
|
||||
c.setPin(pin);
|
||||
c.sendPacket(PacketCreator.pinRegistered());
|
||||
|
||||
|
||||
SessionCoordinator.getInstance().closeSession(c, null);
|
||||
c.updateLoginState(Client.LOGIN_NOTLOGGEDIN);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public final class ServerStatusRequestHandler extends AbstractPacketHandler {
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
byte world = (byte) p.readShort();
|
||||
World wserv = Server.getInstance().getWorld(world);
|
||||
if(wserv != null) {
|
||||
if (wserv != null) {
|
||||
int status = wserv.getWorldCapacityStatus();
|
||||
c.sendPacket(PacketCreator.getServerStatus(status));
|
||||
} else {
|
||||
|
||||
@@ -35,10 +35,10 @@ public final class ServerlistRequestHandler extends AbstractPacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
Server server = Server.getInstance();
|
||||
Server server = Server.getInstance();
|
||||
List<World> worlds = server.getWorlds();
|
||||
c.requestedServerlist(worlds.size());
|
||||
|
||||
|
||||
for (World world : worlds) {
|
||||
c.sendPacket(PacketCreator.getServerList(world.getId(), GameConstants.WORLD_NAMES[world.getId()], world.getFlag(), world.getEventMessage(), world.getChannels()));
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import net.server.coordinator.session.SessionCoordinator;
|
||||
import tools.PacketCreator;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author kevintjuh93
|
||||
*/
|
||||
public class SetGenderHandler extends AbstractPacketHandler {
|
||||
|
||||
@@ -36,34 +36,34 @@ public final class ViewAllCharHandler extends AbstractPacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
try {
|
||||
if(!c.canRequestCharlist()) { // client breaks if the charlist request pops too soon
|
||||
if (!c.canRequestCharlist()) { // client breaks if the charlist request pops too soon
|
||||
c.sendPacket(PacketCreator.showAllCharacter(0, 0));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int accountId = c.getAccID();
|
||||
Pair<Pair<Integer, List<Character>>, List<Pair<Integer, List<Character>>>> loginBlob = Server.getInstance().loadAccountCharlist(accountId, c.getVisibleWorlds());
|
||||
|
||||
|
||||
List<Pair<Integer, List<Character>>> worldChars = loginBlob.getRight();
|
||||
int chrTotal = loginBlob.getLeft().getLeft();
|
||||
List<Character> lastwchars = loginBlob.getLeft().getRight();
|
||||
|
||||
|
||||
if (chrTotal > 9) {
|
||||
int padRight = chrTotal % 3;
|
||||
if (padRight > 0 && lastwchars != null) {
|
||||
Character chr = lastwchars.get(lastwchars.size() - 1);
|
||||
|
||||
for(int i = padRight; i < 3; i++) { // filling the remaining slots with the last character loaded
|
||||
|
||||
for (int i = padRight; i < 3; i++) { // filling the remaining slots with the last character loaded
|
||||
chrTotal++;
|
||||
lastwchars.add(chr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int charsSize = chrTotal;
|
||||
int unk = charsSize + (3 - charsSize % 3); //rowSize?
|
||||
c.sendPacket(PacketCreator.showAllCharacter(charsSize, unk));
|
||||
|
||||
|
||||
for (Pair<Integer, List<Character>> wchars : worldChars) {
|
||||
c.sendPacket(PacketCreator.showAllCharacterInfo(wchars.getLeft(), wchars.getRight(), YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic()));
|
||||
}
|
||||
|
||||
@@ -28,13 +28,13 @@ public final class ViewAllCharRegisterPicHandler extends AbstractPacketHandler {
|
||||
default -> 9;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
p.readByte();
|
||||
int charId = p.readInt();
|
||||
p.readInt(); // please don't let the client choose which world they should login
|
||||
|
||||
|
||||
String mac = p.readString();
|
||||
String hostString = p.readString();
|
||||
|
||||
@@ -46,10 +46,10 @@ public final class ViewAllCharRegisterPicHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(17));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.updateMacs(mac);
|
||||
c.updateHwid(hwid);
|
||||
|
||||
|
||||
if (c.hasBannedMac() || c.hasBannedHWID()) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
@@ -60,35 +60,35 @@ public final class ViewAllCharRegisterPicHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Server server = Server.getInstance();
|
||||
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.setWorld(server.getCharacterWorld(charId));
|
||||
World wserv = c.getWorldServer();
|
||||
if(wserv == null || wserv.isWorldCapacityFull()) {
|
||||
if (wserv == null || wserv.isWorldCapacityFull()) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int channel = Randomizer.rand(1, server.getWorld(c.getWorld()).getChannelsSize());
|
||||
c.setChannel(channel);
|
||||
|
||||
|
||||
String pic = p.readString();
|
||||
c.setPic(pic);
|
||||
|
||||
|
||||
String[] socket = server.getInetSocket(c, c.getWorld(), channel);
|
||||
if (socket == null) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
server.unregisterLoginState(c);
|
||||
c.setCharacterOnSessionTransitionState(charId);
|
||||
|
||||
|
||||
try {
|
||||
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
|
||||
} catch (UnknownHostException e) {
|
||||
|
||||
@@ -49,12 +49,12 @@ public final class ViewAllCharSelectedHandler extends AbstractPacketHandler {
|
||||
default -> 9;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
int charId = p.readInt();
|
||||
p.readInt(); // please don't let the client choose which world they should login
|
||||
|
||||
|
||||
String macs = p.readString();
|
||||
String hostString = p.readString();
|
||||
|
||||
@@ -66,10 +66,10 @@ public final class ViewAllCharSelectedHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(17));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.updateMacs(macs);
|
||||
c.updateHwid(hwid);
|
||||
|
||||
|
||||
if (c.hasBannedMac() || c.hasBannedHWID()) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
@@ -80,21 +80,21 @@ public final class ViewAllCharSelectedHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Server server = Server.getInstance();
|
||||
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.setWorld(server.getCharacterWorld(charId));
|
||||
|
||||
|
||||
World wserv = c.getWorldServer();
|
||||
if(wserv == null || wserv.isWorldCapacityFull()) {
|
||||
if (wserv == null || wserv.isWorldCapacityFull()) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
int channel = Randomizer.rand(1, wserv.getChannelsSize());
|
||||
c.setChannel(channel);
|
||||
@@ -102,16 +102,16 @@ public final class ViewAllCharSelectedHandler extends AbstractPacketHandler {
|
||||
e.printStackTrace();
|
||||
c.setChannel(1);
|
||||
}
|
||||
|
||||
|
||||
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
|
||||
if(socket == null) {
|
||||
if (socket == null) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
server.unregisterLoginState(c);
|
||||
c.setCharacterOnSessionTransitionState(charId);
|
||||
|
||||
|
||||
try {
|
||||
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
|
||||
} catch (UnknownHostException e) {
|
||||
|
||||
@@ -28,14 +28,14 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractPacketHandler {
|
||||
default -> 9;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
|
||||
String pic = p.readString();
|
||||
int charId = p.readInt();
|
||||
p.readInt(); // please don't let the client choose which world they should login
|
||||
|
||||
|
||||
String macs = p.readString();
|
||||
String hostString = p.readString();
|
||||
|
||||
@@ -47,47 +47,47 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(17));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.updateMacs(macs);
|
||||
c.updateHwid(hwid);
|
||||
|
||||
|
||||
if (c.hasBannedMac() || c.hasBannedHWID()) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
Server server = Server.getInstance();
|
||||
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
|
||||
SessionCoordinator.getInstance().closeSession(c, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.setWorld(server.getCharacterWorld(charId));
|
||||
World wserv = c.getWorldServer();
|
||||
if(wserv == null || wserv.isWorldCapacityFull()) {
|
||||
if (wserv == null || wserv.isWorldCapacityFull()) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int channel = Randomizer.rand(1, wserv.getChannelsSize());
|
||||
c.setChannel(channel);
|
||||
|
||||
|
||||
if (c.checkPic(pic)) {
|
||||
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
|
||||
if(socket == null) {
|
||||
if (socket == null) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(10));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid);
|
||||
if (res != AntiMulticlientResult.SUCCESS) {
|
||||
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
server.unregisterLoginState(c);
|
||||
c.setCharacterOnSessionTransitionState(charId);
|
||||
|
||||
|
||||
try {
|
||||
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
|
||||
} catch (UnknownHostException e) {
|
||||
|
||||
Reference in New Issue
Block a user