Сообщений: 38
Тем: 1
Зарегистрирован: Aug 2011
Репутация:
446
PHP код: <?php
public class RequestCharacterNameCreatable extends L2GameClientPacket
{
private static final String _C__D0_B0_REQUESTCHARACTERNAMECREATABLE = "[C] D0:B0 RequestCharacterNameCreatable";
String _name;
@Override
protected void readImpl()
{
_name = readS();
}
@Override
protected void runImpl()
{
if ((_name.length() < 1) || (_name.length() > 16))
{
sendPacket(new ExIsCharNameCreatable(ExIsCharNameCreatable.REASON_16_ENG_CHARS));
return;
}
if(Config.FORBIDDEN_NAMES.length > 1)
{
for(String st : Config.FORBIDDEN_NAMES)
{
if(_name.toLowerCase().contains(st.toLowerCase()))
{
sendPacket(new ExIsCharNameCreatable(ExIsCharNameCreatable.REASON_INCORRECT_NAME));
return;
}
}
}
if (!Util.isAlphaNumeric(_name) || !isValidName(_name))
{
sendPacket(new ExIsCharNameCreatable(ExIsCharNameCreatable.REASON_INCORRECT_NAME));
return;
}
int _code = CharNameTable.getInstance().getIdByName(_name) != -1 ? 2 : -1;
sendPacket(new ExIsCharNameCreatable(_code));
}
private boolean isValidName(String text)
{
boolean result = true;
String test = text;
Pattern pattern;
try
{
pattern = Pattern.compile(Config.CNAME_TEMPLATE);
}
catch (PatternSyntaxException e) // case of illegal pattern
{
pattern = Pattern.compile(".*");
}
Matcher regexp = pattern.matcher(test);
if (!regexp.matches())
{
result = false;
}
return result;
}
@Override
public String getType()
{
return _C__D0_B0_REQUESTCHARACTERNAMECREATABLE;
}
}
Пробуй
Сообщений: 885
Тем: 73
Зарегистрирован: Dec 2009
Репутация:
2,022
я уже думал про это, но если дописать Код: int _code = CharNameTable.getInstance().getIdByName(_name) != -1 ? 2 : -1;
, то вылазит ошибка при компиле, что нет метода,
Код: sendPacket(new ExIsCharNameCreatable(_code));
[javac] symbol : method getIdByName(java.lang.String)
[javac] location: class l2open.gameserver.tables.CharNameTable
[javac] int _code = CharNameTable.getInstance().getIdByName(_name) !
= -1 ? 2 : -1;
[javac] ^
[javac] 1 error
дописав метод в CharNameTable, вылазит еше 100 ошибок, что опять чего то нет
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Имя метода getIdByName в ваших исходниках может отличатся.
Web программист\разработчик
— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Сообщений: 885
Тем: 73
Зарегистрирован: Dec 2009
Репутация:
2,022
его там нет Думал отличаеться, но как бы не было прискорбно нет его там...
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Какие исходники у вас?
Web программист\разработчик
— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Сообщений: 885
Тем: 73
Зарегистрирован: Dec 2009
Репутация:
2,022
11-11-2011, 04:06 PM
(Сообщение последний раз редактировалось: 11-11-2011, 04:08 PM SkyWard.)
open-team 18++ чо то как кто так
Добавлено через 1 минуту
package l2open.gameserver.tables;
import l2open.database.DatabaseUtils;
import l2open.database.FiltredPreparedStatement;
import l2open.database.L2DatabaseFactory;
import l2open.database.ThreadConnection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Logger;
@SuppressWarnings( { "nls", "unqualified-field-access", "boxing" })
public class CharNameTable
{
private static final Logger _log = Logger.getLogger(CharNameTable.class.getName());
private static CharNameTable _instance;
public static CharNameTable getInstance()
{
if(_instance == null)
_instance = new CharNameTable();
return _instance;
}
public boolean doesCharNameExist(String name)
{
boolean result = true;
ThreadConnection con = null;
FiltredPreparedStatement statement = null;
ResultSet rset = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("SELECT account_name FROM characters WHERE char_name=?");
statement.setString(1, name);
rset = statement.executeQuery();
result = rset.next();
}
catch(SQLException e)
{
_log.warning("could not check existing charname:" + e.getMessage());
}
finally
{
DatabaseUtils.closeDatabaseCSR(con, statement, rset);
}
return result;
}
public int accountCharNumber(String account)
{
ThreadConnection con = null;
FiltredPreparedStatement statement = null;
ResultSet rset = null;
int number = 0;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("SELECT COUNT(char_name) FROM characters WHERE account_name=?");
statement.setString(1, account);
rset = statement.executeQuery();
while(rset.next())
number = rset.getInt(1);
}
catch(SQLException e)
{
_log.warning("could not check existing char number:" + e.getMessage());
}
finally
{
DatabaseUtils.closeDatabaseCSR(con, statement, rset);
}
return number;
}
}
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Метод doesCharNameExist проверяет занято имя или нет, юзайте его.
Web программист\разработчик
— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Сообщений: 885
Тем: 73
Зарегистрирован: Dec 2009
Репутация:
2,022
11-11-2011, 04:14 PM
(Сообщение последний раз редактировалось: 11-11-2011, 04:17 PM SkyWard.)
оп оп не катит, пробывал уже)
Есть еше какие то методы побороть уже пакасть?
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Плохо пробывали.
Код: int _code = CharNameTable.getInstance().doesCharNameExist(_name) ? 0 : -1;
sendPacket(new ExIsCharNameCreatable(_code));
Web программист\разработчик
— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Сообщений: 885
Тем: 73
Зарегистрирован: Dec 2009
Репутация:
2,022
11-11-2011, 04:23 PM
(Сообщение последний раз редактировалось: 11-11-2011, 04:43 PM SkyWard.)
оп оп опять та же ошибка
Код: RequestCharacterNameCreatable.java:59: incomparable types: boolean and int
[javac] int _code = CharNameTable.getInstance().doesCharNameExist(_n
ame) ? 0 : -1;
[javac]
^
[javac] 1 error
то что Вы написали уже делал....
Добавлено через 10 минут
хоть что не делай все ровно не создается, мб дело в протоколе?оО
Добавлено через 20 минут
[STIGMATED];147691 Написал:Плохо пробывали.
Код: int _code = CharNameTable.getInstance().doesCharNameExist(_name) ? 0 : -1;
sendPacket(new ExIsCharNameCreatable(_code));
с этим решил проблему, но все ровно мертво с созданием...
|