- Implemented jumping system client packets.

- Reworked friend / block manager to containg memo and show correct data.
 - Fixed throwing exception, on player login if 2 invisible GMs are next to each other.
This commit is contained in:
erlandys56
2015-01-25 01:07:05 +00:00
parent 093b3d3841
commit b35469b996
21 changed files with 636 additions and 226 deletions

View File

@ -461,7 +461,7 @@ public class EnterWorld extends L2GameClientPacket
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_FRIEND_S1_JUST_LOGGED_IN);
sm.addString(activeChar.getName());
for (int id : activeChar.getFriendList())
for (int id : activeChar.getFriendList().keySet())
{
L2Object obj = L2World.getInstance().findObject(id);
if (obj != null)

View File

@ -22,6 +22,7 @@ import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
import com.l2jserver.gameserver.model.BlockList;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.friend.BlockListPacket;
public final class RequestBlock extends L2GameClientPacket
{
@ -91,6 +92,7 @@ public final class RequestBlock extends L2GameClientPacket
{
BlockList.removeFromBlockList(activeChar, targetId);
}
activeChar.sendPacket(new BlockListPacket(activeChar));
break;
case BLOCKLIST:
BlockList.sendListToOwner(activeChar);

View File

@ -83,7 +83,7 @@ public final class RequestFriendInvite extends L2GameClientPacket
return;
}
// Target already in friend list.
if (activeChar.getFriendList().contains(friend.getObjectId()))
if (activeChar.getFriendList().containsKey(friend.getObjectId()))
{
sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_PLAYER_IS_ALREADY_REGISTERED_ON_YOUR_FRIENDS_LIST);
sm.addString(_name);

View File

@ -28,6 +28,7 @@ import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.network.serverpackets.friend.FriendAddRequestResult;
import com.l2jserver.gameserver.network.serverpackets.friend.FriendList;
public final class RequestAnswerFriendInvite extends L2GameClientPacket
{
@ -70,17 +71,19 @@ public final class RequestAnswerFriendInvite extends L2GameClientPacket
msg = SystemMessage.getSystemMessage(SystemMessageId.S1_HAS_BEEN_ADDED_TO_YOUR_FRIENDS_LIST);
msg.addString(player.getName());
requestor.sendPacket(msg);
requestor.getFriendList().add(player.getObjectId());
requestor.addFriend(player);
// has joined as friend.
msg = SystemMessage.getSystemMessage(SystemMessageId.S1_HAS_JOINED_AS_A_FRIEND);
msg.addString(requestor.getName());
player.sendPacket(msg);
player.getFriendList().add(requestor.getObjectId());
player.addFriend(requestor);
// Send notifications for both player in order to show them online
player.sendPacket(new FriendAddRequestResult(requestor, 1));
requestor.sendPacket(new FriendAddRequestResult(player, 1));
player.sendPacket(new FriendList(player));
requestor.sendPacket(new FriendList(requestor));
}
catch (Exception e)
{

View File

@ -29,6 +29,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.network.serverpackets.friend.FriendList;
import com.l2jserver.gameserver.network.serverpackets.friend.FriendRemove;
/**
@ -68,7 +69,7 @@ public final class RequestFriendDel extends L2GameClientPacket
return;
}
if (!activeChar.getFriendList().contains(id))
if (!activeChar.getFriendList().containsKey(id))
{
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_NOT_ON_YOUR_FRIEND_LIST);
sm.addString(_name);
@ -90,7 +91,7 @@ public final class RequestFriendDel extends L2GameClientPacket
sm.addString(_name);
activeChar.sendPacket(sm);
activeChar.getFriendList().remove(Integer.valueOf(id));
activeChar.getFriendList().remove(id);
activeChar.sendPacket(new FriendRemove(_name, 1));
L2PcInstance player = L2World.getInstance().getPlayer(_name);
@ -99,6 +100,8 @@ public final class RequestFriendDel extends L2GameClientPacket
player.getFriendList().remove(Integer.valueOf(activeChar.getObjectId()));
player.sendPacket(new FriendRemove(activeChar.getName(), 1));
}
player.sendPacket(new FriendList(player));
activeChar.sendPacket(new FriendList(activeChar));
}
catch (Exception e)
{

View File

@ -86,7 +86,7 @@ public final class RequestFriendInvite extends L2GameClientPacket
}
// Target already in friend list.
if (activeChar.getFriendList().contains(friend.getObjectId()))
if (activeChar.getFriendList().containsKey(friend.getObjectId()))
{
sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_PLAYER_IS_ALREADY_REGISTERED_ON_YOUR_FRIENDS_LIST);
sm.addString(_name);

View File

@ -55,7 +55,7 @@ public final class RequestFriendList extends L2GameClientPacket
activeChar.sendPacket(SystemMessageId.FRIENDS_LIST);
L2PcInstance friend = null;
for (int id : activeChar.getFriendList())
for (int id : activeChar.getFriendList().keySet())
{
// int friendId = rset.getInt("friendId");
String friendName = CharNameTable.getInstance().getNameById(id);

View File

@ -63,7 +63,7 @@ public final class RequestSendFriendMsg extends L2GameClientPacket
}
final L2PcInstance targetPlayer = L2World.getInstance().getPlayer(_reciever);
if ((targetPlayer == null) || !targetPlayer.getFriendList().contains(activeChar.getObjectId()))
if ((targetPlayer == null) || !targetPlayer.getFriendList().containsKey(activeChar.getObjectId()))
{
activeChar.sendPacket(SystemMessageId.THAT_PLAYER_IS_NOT_ONLINE);
return;

View File

@ -0,0 +1,54 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets.friend;
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.friend.BlockListPacket;
public final class RequestUpdateBlockMemo extends L2GameClientPacket
{
private static final String _C__D0_96_REQUESTUPDATEBLOCKMEMO = "[C] D0:96 RequestUpdateBlockMemo";
private String cName;
private String memo;
@Override
protected void readImpl()
{
cName = readS();
memo = readS();
}
@Override
protected void runImpl()
{
L2PcInstance player = getClient().getActiveChar();
player.getBlockList().setBlockMemo(CharNameTable.getInstance().getIdByName(cName), memo);
player.sendPacket(new BlockListPacket(player));
}
@Override
public String getType()
{
return _C__D0_96_REQUESTUPDATEBLOCKMEMO;
}
}

View File

@ -0,0 +1,52 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets.friend;
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
public final class RequestUpdateFriendMemo extends L2GameClientPacket
{
private static final String _C__D0_95_REQUESTUPDATEFRIENDMEMO = "[C] D0:95 RequestUpdateFriendMemo";
String cName;
String memo;
@Override
protected void readImpl()
{
cName = readS();
memo = readS();
}
@Override
protected void runImpl()
{
L2PcInstance player = getClient().getActiveChar();
int id = CharNameTable.getInstance().getIdByName(cName);
player.getFriend(id).setMemo(memo);
player.updateMemo(id);
}
@Override
public String getType()
{
return _C__D0_95_REQUESTUPDATEFRIENDMEMO;
}
}