mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-10-10 00:13:05 -04:00
fix session handling
This commit is contained in:
@@ -87,7 +87,6 @@ public class CharacterService implements INetworkDispatch {
|
||||
|
||||
public void handlePacket(IoSession session, IoBuffer data) throws Exception {
|
||||
|
||||
Client client = core.getClient((Integer) session.getAttribute("connectionId"));
|
||||
ClientRandomNameRequest randomNameRequest = new ClientRandomNameRequest();
|
||||
ClientRandomNameResponse response;
|
||||
String name = null;
|
||||
@@ -96,16 +95,23 @@ public class CharacterService implements INetworkDispatch {
|
||||
data.position(0);
|
||||
randomNameRequest.deserialize(data);
|
||||
|
||||
|
||||
while (name == null) {
|
||||
|
||||
String firstName ="";
|
||||
String lastName = "";
|
||||
if (randomNameRequest.getSharedRaceTemplate().contains("wookie")) {
|
||||
name = nameGenerator.compose(4);
|
||||
firstName = nameGenerator.compose(4);
|
||||
|
||||
} else {
|
||||
name = nameGenerator.compose(2) + " " + nameGenerator.compose(3);
|
||||
firstName = nameGenerator.compose(2);
|
||||
lastName = nameGenerator.compose(3);
|
||||
}
|
||||
|
||||
try {
|
||||
if (checkForDuplicateName(getfirstName(name, randomNameRequest.getSharedRaceTemplate()), client.getAccountId())) {
|
||||
name = null;
|
||||
//it's fine here to just use 0 as accountId because we don't want reserved names to be random generated for anyone.
|
||||
if (!checkForDuplicateName(firstName, 0)) {
|
||||
name = firstName + ((lastName.length() > 0 ) ? " " + lastName : "");
|
||||
}
|
||||
} catch (SQLException e2) {
|
||||
e2.printStackTrace();
|
||||
@@ -132,7 +138,7 @@ public class CharacterService implements INetworkDispatch {
|
||||
boolean isDeclined = false;
|
||||
String firstName = getfirstName(message.getName(), message.getRaceTemplate());
|
||||
String lastName = getlastName(message.getName(), message.getRaceTemplate());
|
||||
if(message.getName() != null) System.out.println(message.getName());
|
||||
//if(message.getName() != null) System.out.println(message.getName());
|
||||
|
||||
int length = firstName.length();
|
||||
try {
|
||||
@@ -317,67 +323,66 @@ public class CharacterService implements INetworkDispatch {
|
||||
firstName = firstName.toLowerCase();
|
||||
PreparedStatement ps = databaseConnection.preparedStatement("SELECT id FROM characters WHERE LOWER(\"firstName\")=?");
|
||||
ps.setString(1, firstName);
|
||||
//System.out.println(ps.toString());
|
||||
ResultSet resultSet = ps.executeQuery();
|
||||
|
||||
boolean isDuplicate = resultSet.next();
|
||||
resultSet.getStatement().close();
|
||||
if (isDuplicate) { return true; }
|
||||
|
||||
//FIXME: this is a bit lazy... but it's only temporary :p
|
||||
PreparedStatement ps2 = databaseConnection.preparedStatement("SELECT id FROM temp_reserved_char_names WHERE \"accountId\"!=? AND LOWER(\"firstName\")=?");
|
||||
PreparedStatement psc = databaseConnection.preparedStatement("SELECT * FROM pg_tables WHERE \"tablename\"=?");
|
||||
psc.setString(1, "temp_reserved_char_names");
|
||||
ResultSet resultSetC = psc.executeQuery();
|
||||
boolean tableExists = resultSetC.next();
|
||||
resultSetC.getStatement().close();
|
||||
if (!tableExists) { return false; }
|
||||
|
||||
PreparedStatement ps2 = databaseConnection.preparedStatement("SELECT \"accountId\" FROM temp_reserved_char_names WHERE \"accountId\"!=? AND LOWER(\"firstName\")=?");
|
||||
ps2.setLong(1, accountId);
|
||||
ps2.setString(2, firstName);
|
||||
ResultSet resultSet2 = ps2.executeQuery();
|
||||
boolean isReserved = resultSet.next();
|
||||
boolean isReserved = resultSet2.next();
|
||||
resultSet2.getStatement().close();
|
||||
|
||||
return isDuplicate && isReserved;
|
||||
return isReserved;
|
||||
}
|
||||
|
||||
|
||||
private String getfirstName(String Name, String RaceTemplate)
|
||||
{
|
||||
String[] splitName;
|
||||
if (RaceTemplate != "object/creature/player/wookiee_male.iff" | RaceTemplate != "object/creature/player/wookiee_female.iff")
|
||||
if (RaceTemplate.contains("/wookiee_") ||
|
||||
!Name.contains(" "))
|
||||
{ // wookies don't have lastNames
|
||||
if (Name.contains(" "))
|
||||
{
|
||||
splitName = Name.split(" ", 2);
|
||||
return splitName[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
return Name;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return Name;
|
||||
}
|
||||
|
||||
return Name.split(" ", 2)[0];
|
||||
|
||||
}
|
||||
|
||||
private String getlastName(String Name, String RaceTemplate)
|
||||
{
|
||||
String[] splitName;
|
||||
if (RaceTemplate != "object/creature/player/wookiee_male.iff" && RaceTemplate != "object/creature/player/wookiee_female.iff")
|
||||
if (RaceTemplate.contains("/wookiee_") ||
|
||||
!Name.contains(" "))
|
||||
{ // wookies don't have lastNames
|
||||
if (Name.contains(" "))
|
||||
{
|
||||
splitName = Name.split(" ", 2);
|
||||
return splitName[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
return Name.split(" ", 2)[1];
|
||||
|
||||
}
|
||||
|
||||
private String checkForReservedName(String firstName, String lastName) throws SQLException
|
||||
{
|
||||
|
||||
PreparedStatement psc = databaseConnection.preparedStatement("SELECT * FROM pg_tables WHERE \"tablename\"=?");
|
||||
psc.setString(1, "reservednames");
|
||||
ResultSet rsc = psc.executeQuery();
|
||||
if (!rsc.next()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
firstName = firstName.toLowerCase();
|
||||
lastName = lastName.toLowerCase();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user