Френд чат
7 ответов232 просмотровСейчас просматривают: 1
· 02.10.2009, 12:01
Сборка: la2base
Краткое изложение СУТИ проблемы: Есть баг, работает почти на всех сборках, человек может написать в френд чат, хотя он не во френдах.. кто знает как юзается напишите please.
— Оо
0
· 02.10.2009, 15:38
Скорее всего через хлапу
В net.sf.l2j.gameserver.clientpackets.RequestSendFriendMsg нет никакой проверки на это
Если есть сурсы могу скинуть пофиксенный вариант
0
· 02.10.2009, 15:57
izen: Скорее всего через хлапу
В net.sf.l2j.gameserver.clientpackets.RequestSendFriendMsg нет никакой проверки на это
Если есть сурсы могу скинуть пофиксенный вариант
Хлапа отпадает, стоит защита хорошая
— Жадный...
0
· 02.10.2009, 16:13
А не пофиг на это? ну напишут во френд,что изменится? они же ничего через него не украдут и пишут под сваим ников,чар смотри что во френде такого нет и пшёл он лесом =\
0
· 02.10.2009, 16:37
Хорошая, нехорошая а проверки нет.
Раскрывающийся текст
Код
...
@Override
protected void runImpl()
{
L2PcInstance activeChar = getClient().getActiveChar();
if (activeChar == null) return;
L2PcInstance targetPlayer = L2World.getInstance().getPlayer(_reciever);
if (targetPlayer == null)
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME));
return;
}
Connection conn = null;
try
{
conn = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement pstm = conn.prepareStatement("SELECT `friend_id` FROM `character_friends` WHERE `char_id` = ? AND `friend_name` = ?");
pstm.setInt(1, activeChar.getObjectId());
pstm.setString(2, targetPlayer.getName());
if (!pstm.executeQuery().next())
{
SystemMessage sm = new SystemMessage(SystemMessageId.S1_NOT_ON_YOUR_FRIENDS_LIST);
sm.addString(_reciever);
activeChar.sendPacket(sm);
return;
}
}
catch (Exception e) {}
finally { try {conn.close();} catch (Exception e) {} }
if (Config.LOG_CHAT)
{
LogRecord record = new LogRecord(Level.INFO, _message);
record.setLoggerName("chat");
record.setParameters(new Object[]{"PRIV_MSG", "[" + activeChar.getName() + " to "+ _reciever +"]"});
_logChat.log(record);
}
FriendRecvMsg frm = new FriendRecvMsg(activeChar.getName(), _reciever, _message);
targetPlayer.sendPacket(frm);
}
...
@Override
protected void runImpl()
{
L2PcInstance activeChar = getClient().getActiveChar();
if (activeChar == null) return;
L2PcInstance targetPlayer = L2World.getInstance().getPlayer(_reciever);
if (targetPlayer == null)
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME));
return;
}
Connection conn = null;
try
{
conn = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement pstm = conn.prepareStatement("SELECT `friend_id` FROM `character_friends` WHERE `char_id` = ? AND `friend_name` = ?");
pstm.setInt(1, activeChar.getObjectId());
pstm.setString(2, targetPlayer.getName());
if (!pstm.executeQuery().next())
{
SystemMessage sm = new SystemMessage(SystemMessageId.S1_NOT_ON_YOUR_FRIENDS_LIST);
sm.addString(_reciever);
activeChar.sendPacket(sm);
return;
}
}
catch (Exception e) {}
finally { try {conn.close();} catch (Exception e) {} }
if (Config.LOG_CHAT)
{
LogRecord record = new LogRecord(Level.INFO, _message);
record.setLoggerName("chat");
record.setParameters(new Object[]{"PRIV_MSG", "[" + activeChar.getName() + " to "+ _reciever +"]"});
_logChat.log(record);
}
FriendRecvMsg frm = new FriendRecvMsg(activeChar.getName(), _reciever, _message);
targetPlayer.sendPacket(frm);
}
...
ЗЫ: Лучше повесить на коллекцию и там хранить
0
Войдите или зарегистрируйтесь чтобы ответить

![-=[BloodKill]=-](/uploads/fotos/av-39301.jpg)


