- 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:
@@ -21,20 +21,19 @@ package com.l2jserver.gameserver.model;
|
|||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import javolution.util.FastMap;
|
|
||||||
|
|
||||||
import com.l2jserver.L2DatabaseFactory;
|
import com.l2jserver.L2DatabaseFactory;
|
||||||
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.BlockListPacket;
|
|
||||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||||
|
import com.l2jserver.gameserver.network.serverpackets.friend.BlockListPacket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class ...
|
* This class ...
|
||||||
@@ -43,10 +42,11 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
|||||||
public class BlockList
|
public class BlockList
|
||||||
{
|
{
|
||||||
private static Logger _log = Logger.getLogger(BlockList.class.getName());
|
private static Logger _log = Logger.getLogger(BlockList.class.getName());
|
||||||
private static Map<Integer, List<Integer>> _offlineList = new FastMap<Integer, List<Integer>>().shared();
|
private static Map<Integer, HashMap<Integer, String>> _offlineList = new HashMap<>();
|
||||||
|
|
||||||
private final L2PcInstance _owner;
|
private final L2PcInstance _owner;
|
||||||
private List<Integer> _blockList;
|
private HashMap<Integer, String> _blockList;
|
||||||
|
private final ArrayList<Integer> _updateMemos = new ArrayList<>();
|
||||||
|
|
||||||
public BlockList(L2PcInstance owner)
|
public BlockList(L2PcInstance owner)
|
||||||
{
|
{
|
||||||
@@ -60,26 +60,62 @@ public class BlockList
|
|||||||
|
|
||||||
private void addToBlockList(int target)
|
private void addToBlockList(int target)
|
||||||
{
|
{
|
||||||
_blockList.add(target);
|
_blockList.put(target, "");
|
||||||
updateInDB(target, true);
|
updateInDB(target, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeFromBlockList(int target)
|
private void removeFromBlockList(int target)
|
||||||
{
|
{
|
||||||
_blockList.remove(Integer.valueOf(target));
|
_blockList.remove(Integer.valueOf(target));
|
||||||
|
if (_updateMemos.contains(target))
|
||||||
|
{
|
||||||
|
_updateMemos.remove(Integer.valueOf(target));
|
||||||
|
}
|
||||||
updateInDB(target, false);
|
updateInDB(target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBlockMemo(int target, String memo)
|
||||||
|
{
|
||||||
|
if (_blockList.containsKey(target))
|
||||||
|
{
|
||||||
|
_blockList.put(target, memo);
|
||||||
|
_updateMemos.add(target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateBlockMemos()
|
||||||
|
{
|
||||||
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
|
||||||
|
{
|
||||||
|
for (int target : _updateMemos)
|
||||||
|
{
|
||||||
|
try (PreparedStatement statement = con.prepareStatement("UPDATE character_friends SET memo=? WHERE charId=? AND friendId=? AND relation=1"))
|
||||||
|
{
|
||||||
|
statement.setString(1, _blockList.get(target));
|
||||||
|
statement.setInt(2, _owner.getObjectId());
|
||||||
|
statement.setInt(3, target);
|
||||||
|
statement.execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SQLException e)
|
||||||
|
{
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
_blockList.clear();
|
||||||
|
}
|
||||||
|
|
||||||
public void playerLogout()
|
public void playerLogout()
|
||||||
{
|
{
|
||||||
_offlineList.put(_owner.getObjectId(), _blockList);
|
_offlineList.put(_owner.getObjectId(), _blockList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Integer> loadList(int ObjId)
|
private static HashMap<Integer, String> loadList(int ObjId)
|
||||||
{
|
{
|
||||||
List<Integer> list = new ArrayList<>();
|
HashMap<Integer, String> list = new HashMap<>();
|
||||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||||
PreparedStatement statement = con.prepareStatement("SELECT friendId FROM character_friends WHERE charId=? AND relation=1"))
|
PreparedStatement statement = con.prepareStatement("SELECT friendId, memo FROM character_friends WHERE charId=? AND relation=1"))
|
||||||
{
|
{
|
||||||
statement.setInt(1, ObjId);
|
statement.setInt(1, ObjId);
|
||||||
try (ResultSet rset = statement.executeQuery())
|
try (ResultSet rset = statement.executeQuery())
|
||||||
@@ -92,7 +128,8 @@ public class BlockList
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
list.add(friendId);
|
String memo = rset.getString("memo");
|
||||||
|
list.put(friendId, memo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,12 +172,12 @@ public class BlockList
|
|||||||
|
|
||||||
public boolean isInBlockList(L2PcInstance target)
|
public boolean isInBlockList(L2PcInstance target)
|
||||||
{
|
{
|
||||||
return _blockList.contains(target.getObjectId());
|
return _blockList.containsKey(target.getObjectId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isInBlockList(int targetId)
|
public boolean isInBlockList(int targetId)
|
||||||
{
|
{
|
||||||
return _blockList.contains(targetId);
|
return _blockList.containsKey(targetId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isBlockAll()
|
public boolean isBlockAll()
|
||||||
@@ -165,7 +202,7 @@ public class BlockList
|
|||||||
_owner.setMessageRefusal(state);
|
_owner.setMessageRefusal(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Integer> getBlockList()
|
public HashMap<Integer, String> getBlockList()
|
||||||
{
|
{
|
||||||
return _blockList;
|
return _blockList;
|
||||||
}
|
}
|
||||||
@@ -179,7 +216,7 @@ public class BlockList
|
|||||||
|
|
||||||
String charName = CharNameTable.getInstance().getNameById(targetId);
|
String charName = CharNameTable.getInstance().getNameById(targetId);
|
||||||
|
|
||||||
if (listOwner.getFriendList().contains(targetId))
|
if (listOwner.getFriendList().containsKey(targetId))
|
||||||
{
|
{
|
||||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_PLAYER_IS_ALREADY_REGISTERED_ON_YOUR_FRIENDS_LIST);
|
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_PLAYER_IS_ALREADY_REGISTERED_ON_YOUR_FRIENDS_LIST);
|
||||||
sm.addString(charName);
|
sm.addString(charName);
|
||||||
@@ -187,7 +224,7 @@ public class BlockList
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (listOwner.getBlockList().getBlockList().contains(targetId))
|
if (listOwner.getBlockList().getBlockList().containsKey(targetId))
|
||||||
{
|
{
|
||||||
listOwner.sendMessage("Already in ignore list.");
|
listOwner.sendMessage("Already in ignore list.");
|
||||||
return;
|
return;
|
||||||
@@ -220,7 +257,7 @@ public class BlockList
|
|||||||
|
|
||||||
String charName = CharNameTable.getInstance().getNameById(targetId);
|
String charName = CharNameTable.getInstance().getNameById(targetId);
|
||||||
|
|
||||||
if (!listOwner.getBlockList().getBlockList().contains(targetId))
|
if (!listOwner.getBlockList().getBlockList().containsKey(targetId))
|
||||||
{
|
{
|
||||||
sm = SystemMessage.getSystemMessage(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
sm = SystemMessage.getSystemMessage(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
|
||||||
listOwner.sendPacket(sm);
|
listOwner.sendPacket(sm);
|
||||||
@@ -251,7 +288,7 @@ public class BlockList
|
|||||||
|
|
||||||
public static void sendListToOwner(L2PcInstance listOwner)
|
public static void sendListToOwner(L2PcInstance listOwner)
|
||||||
{
|
{
|
||||||
listOwner.sendPacket(new BlockListPacket(listOwner.getBlockList().getBlockList()));
|
listOwner.sendPacket(new BlockListPacket(listOwner));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -270,6 +307,6 @@ public class BlockList
|
|||||||
{
|
{
|
||||||
_offlineList.put(ownerId, loadList(ownerId));
|
_offlineList.put(ownerId, loadList(ownerId));
|
||||||
}
|
}
|
||||||
return _offlineList.get(ownerId).contains(targetId);
|
return _offlineList.get(ownerId).containsKey(targetId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -190,6 +190,7 @@ import com.l2jserver.gameserver.model.effects.L2EffectType;
|
|||||||
import com.l2jserver.gameserver.model.entity.Castle;
|
import com.l2jserver.gameserver.model.entity.Castle;
|
||||||
import com.l2jserver.gameserver.model.entity.Duel;
|
import com.l2jserver.gameserver.model.entity.Duel;
|
||||||
import com.l2jserver.gameserver.model.entity.Fort;
|
import com.l2jserver.gameserver.model.entity.Fort;
|
||||||
|
import com.l2jserver.gameserver.model.entity.Friend;
|
||||||
import com.l2jserver.gameserver.model.entity.Hero;
|
import com.l2jserver.gameserver.model.entity.Hero;
|
||||||
import com.l2jserver.gameserver.model.entity.Instance;
|
import com.l2jserver.gameserver.model.entity.Instance;
|
||||||
import com.l2jserver.gameserver.model.entity.L2Event;
|
import com.l2jserver.gameserver.model.entity.L2Event;
|
||||||
@@ -7580,6 +7581,8 @@ public final class L2PcInstance extends L2Playable
|
|||||||
{
|
{
|
||||||
storeUISettings();
|
storeUISettings();
|
||||||
}
|
}
|
||||||
|
getBlockList().updateBlockMemos();
|
||||||
|
updateMemos();
|
||||||
|
|
||||||
final PlayerVariables vars = getScript(PlayerVariables.class);
|
final PlayerVariables vars = getScript(PlayerVariables.class);
|
||||||
if (vars != null)
|
if (vars != null)
|
||||||
@@ -11530,6 +11533,16 @@ public final class L2PcInstance extends L2Playable
|
|||||||
{
|
{
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this);
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this);
|
||||||
|
|
||||||
|
for (Friend friend : _friendList.values())
|
||||||
|
{
|
||||||
|
L2PcInstance player = friend.getFriend();
|
||||||
|
if (player == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
player.putFriendDetailInfo(this);
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
for (L2ZoneType zone : ZoneManager.getInstance().getZones(this))
|
for (L2ZoneType zone : ZoneManager.getInstance().getZones(this))
|
||||||
@@ -13593,18 +13606,66 @@ public final class L2PcInstance extends L2Playable
|
|||||||
/**
|
/**
|
||||||
* list of character friends
|
* list of character friends
|
||||||
*/
|
*/
|
||||||
private final List<Integer> _friendList = new FastList<>();
|
private final HashMap<Integer, Friend> _friendList = new HashMap<>();
|
||||||
|
private final ArrayList<Integer> _updateMemos = new ArrayList<>();
|
||||||
|
|
||||||
public List<Integer> getFriendList()
|
public HashMap<Integer, Friend> getFriendList()
|
||||||
{
|
{
|
||||||
return _friendList;
|
return _friendList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Friend getFriend(int friendOID)
|
||||||
|
{
|
||||||
|
if (getFriendList().containsKey(friendOID))
|
||||||
|
{
|
||||||
|
return getFriendList().get(friendOID);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateMemo(int friendOID)
|
||||||
|
{
|
||||||
|
if (!_updateMemos.contains(friendOID))
|
||||||
|
{
|
||||||
|
_updateMemos.add(friendOID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateMemos()
|
||||||
|
{
|
||||||
|
final String sqlQuery = "UPDATE character_friends SET memo=? WHERE charId=? AND friendId=? AND relation=0";
|
||||||
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
|
||||||
|
{
|
||||||
|
for (int target : _updateMemos)
|
||||||
|
{
|
||||||
|
try (PreparedStatement statement = con.prepareStatement(sqlQuery))
|
||||||
|
{
|
||||||
|
Friend friend = _friendList.get(target);
|
||||||
|
statement.setString(1, friend.getMemo());
|
||||||
|
statement.setInt(2, getObjectId());
|
||||||
|
statement.setInt(3, target);
|
||||||
|
statement.executeUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_log.log(Level.WARNING, "Error found in " + getName() + "'s FriendList: " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
_updateMemos.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addFriend(L2PcInstance player)
|
||||||
|
{
|
||||||
|
_friendList.put(player.getObjectId(), new Friend(0, player.getObjectId(), ""));
|
||||||
|
putFriendDetailInfo(player);
|
||||||
|
}
|
||||||
|
|
||||||
public void restoreFriendList()
|
public void restoreFriendList()
|
||||||
{
|
{
|
||||||
_friendList.clear();
|
_friendList.clear();
|
||||||
|
|
||||||
final String sqlQuery = "SELECT friendId FROM character_friends WHERE charId=? AND relation=0";
|
final String sqlQuery = "SELECT friendId, memo FROM character_friends WHERE charId=? AND relation=0";
|
||||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||||
PreparedStatement statement = con.prepareStatement(sqlQuery))
|
PreparedStatement statement = con.prepareStatement(sqlQuery))
|
||||||
{
|
{
|
||||||
@@ -13618,7 +13679,9 @@ public final class L2PcInstance extends L2Playable
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
_friendList.add(friendId);
|
String memo = rset.getString("memo");
|
||||||
|
_friendList.put(friendId, new Friend(0, friendId, memo));
|
||||||
|
putFriendDetailInfo(friendId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13628,10 +13691,105 @@ public final class L2PcInstance extends L2Playable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void putFriendDetailInfo(L2PcInstance player)
|
||||||
|
{
|
||||||
|
Friend friend = _friendList.get(player.getObjectId());
|
||||||
|
friend.setLevel(player.getLevel());
|
||||||
|
friend.setClassId(player.getClassId().getId());
|
||||||
|
if (player.getClan() != null)
|
||||||
|
{
|
||||||
|
friend.setClanId(player.getClan().getId());
|
||||||
|
friend.setClanName(player.getClan().getName());
|
||||||
|
friend.setClanCrestId(player.getClan().getCrestId());
|
||||||
|
friend.setAllyId(player.getClan().getAllyId());
|
||||||
|
friend.setAllyName(player.getClan().getAllyName());
|
||||||
|
friend.setAllyCrestId(player.getClan().getAllyCrestId());
|
||||||
|
}
|
||||||
|
friend.setLastLogin(System.currentTimeMillis());
|
||||||
|
friend.setCreateDate(player.getCreateDate().getTimeInMillis());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void putFriendDetailInfo(int friendId)
|
||||||
|
{
|
||||||
|
Friend friend = _friendList.get(friendId);
|
||||||
|
int bClassId = 0;
|
||||||
|
|
||||||
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||||
|
PreparedStatement statement = con.prepareStatement("SELECT * FROM characters WHERE charId=?");)
|
||||||
|
{
|
||||||
|
statement.setInt(1, friendId);
|
||||||
|
ResultSet rset = statement.executeQuery();
|
||||||
|
while (rset.next())
|
||||||
|
{
|
||||||
|
friend.setLevel(rset.getByte("level"));
|
||||||
|
friend.setClassId(rset.getInt("classid"));
|
||||||
|
bClassId = (rset.getInt("base_class"));
|
||||||
|
friend.setClanId(rset.getInt("clanid"));
|
||||||
|
friend.setLastLogin(rset.getLong("lastAccess"));
|
||||||
|
friend.setCreateDate(rset.getLong("createDate"));
|
||||||
|
}
|
||||||
|
statement.execute();
|
||||||
|
|
||||||
|
rset.close();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
System.out.println("Failed loading character. " + e);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if (friend.getClassId() != bClassId)
|
||||||
|
{
|
||||||
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||||
|
PreparedStatement statement = con.prepareStatement("SELECT level FROM character_subclasses WHERE charId=? AND class_id=?");)
|
||||||
|
{
|
||||||
|
statement.setInt(1, friendId);
|
||||||
|
statement.setInt(2, friend.getClassId());
|
||||||
|
ResultSet rset = statement.executeQuery();
|
||||||
|
|
||||||
|
while (rset.next())
|
||||||
|
{
|
||||||
|
friend.setLevel(rset.getByte("level"));
|
||||||
|
}
|
||||||
|
|
||||||
|
statement.execute();
|
||||||
|
rset.close();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
System.out.println("Failed loading character_subclasses. " + e);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (friend.getClanId() != 0)
|
||||||
|
{
|
||||||
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||||
|
PreparedStatement statement = con.prepareStatement("SELECT * FROM clan_data WHERE clan_id=?");)
|
||||||
|
{
|
||||||
|
statement.setInt(1, friend.getClanId());
|
||||||
|
ResultSet rset = statement.executeQuery();
|
||||||
|
while (rset.next())
|
||||||
|
{
|
||||||
|
friend.setClanName(rset.getString("clan_name"));
|
||||||
|
friend.setClanCrestId(rset.getInt("crest_id"));
|
||||||
|
friend.setAllyId(rset.getInt("ally_id"));
|
||||||
|
friend.setAllyName(rset.getString("ally_name"));
|
||||||
|
friend.setAllyCrestId(rset.getInt("ally_crest_id"));
|
||||||
|
}
|
||||||
|
statement.execute();
|
||||||
|
rset.close();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
System.out.println("Failed loading clan_data. " + e);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void notifyFriends(int type)
|
public void notifyFriends(int type)
|
||||||
{
|
{
|
||||||
L2FriendStatus pkt = new L2FriendStatus(this, type);
|
L2FriendStatus pkt = new L2FriendStatus(this, type);
|
||||||
for (int id : _friendList)
|
for (int id : _friendList.keySet())
|
||||||
{
|
{
|
||||||
L2PcInstance friend = L2World.getInstance().getPlayer(id);
|
L2PcInstance friend = L2World.getInstance().getPlayer(id);
|
||||||
if (friend != null)
|
if (friend != null)
|
||||||
@@ -14898,5 +15056,4 @@ public final class L2PcInstance extends L2Playable
|
|||||||
}
|
}
|
||||||
getSubClasses().get(getClassIndex()).setVitalityPoints(points);
|
getSubClasses().get(getClassIndex()).setVitalityPoints(points);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
177
trunk/java/com/l2jserver/gameserver/model/entity/Friend.java
Normal file
177
trunk/java/com/l2jserver/gameserver/model/entity/Friend.java
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
/*
|
||||||
|
* This program 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.
|
||||||
|
*
|
||||||
|
* This program 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.model.entity;
|
||||||
|
|
||||||
|
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
||||||
|
import com.l2jserver.gameserver.model.L2World;
|
||||||
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Erlandys
|
||||||
|
*/
|
||||||
|
public class Friend
|
||||||
|
{
|
||||||
|
int _relation;
|
||||||
|
int _friendOID;
|
||||||
|
String _memo;
|
||||||
|
|
||||||
|
int _level = 1;
|
||||||
|
int _classId = 0;
|
||||||
|
int _clanId = 0;
|
||||||
|
int _clanCrestId = 0;
|
||||||
|
int _allyId = 0;
|
||||||
|
int _allyCrestId = 0;
|
||||||
|
String _name = "";
|
||||||
|
String _clanName = "";
|
||||||
|
String _allyName = "";
|
||||||
|
long _createDate = -1;
|
||||||
|
long _lastLogin = -1;
|
||||||
|
|
||||||
|
public Friend(int relation, int friendOID, String memo)
|
||||||
|
{
|
||||||
|
_relation = relation;
|
||||||
|
_friendOID = friendOID;
|
||||||
|
_memo = memo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public L2PcInstance getFriend()
|
||||||
|
{
|
||||||
|
return L2World.getInstance().getPlayer(_friendOID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFriendOID()
|
||||||
|
{
|
||||||
|
return _friendOID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMemo()
|
||||||
|
{
|
||||||
|
return _memo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemo(String memo)
|
||||||
|
{
|
||||||
|
_memo = memo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLevel()
|
||||||
|
{
|
||||||
|
return _level;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLevel(int level)
|
||||||
|
{
|
||||||
|
_level = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getClassId()
|
||||||
|
{
|
||||||
|
return _classId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClassId(int classId)
|
||||||
|
{
|
||||||
|
_classId = classId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getClanId()
|
||||||
|
{
|
||||||
|
return _clanId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClanId(int clanId)
|
||||||
|
{
|
||||||
|
_clanId = clanId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getClanCrestId()
|
||||||
|
{
|
||||||
|
return _clanCrestId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClanCrestId(int clanCrestId)
|
||||||
|
{
|
||||||
|
_clanCrestId = clanCrestId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAllyId()
|
||||||
|
{
|
||||||
|
return _allyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAllyId(int allyId)
|
||||||
|
{
|
||||||
|
_allyId = allyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAllyCrestId()
|
||||||
|
{
|
||||||
|
return _allyCrestId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAllyCrestId(int allyCrestId)
|
||||||
|
{
|
||||||
|
_allyCrestId = allyCrestId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
if (_name == "")
|
||||||
|
{
|
||||||
|
_name = CharNameTable.getInstance().getNameById(_friendOID);
|
||||||
|
}
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getClanName()
|
||||||
|
{
|
||||||
|
return _clanName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClanName(String clanName)
|
||||||
|
{
|
||||||
|
_clanName = clanName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAllyName()
|
||||||
|
{
|
||||||
|
return _allyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAllyName(String allyName)
|
||||||
|
{
|
||||||
|
_allyName = allyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCreateDate()
|
||||||
|
{
|
||||||
|
return _createDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreateDate(long createDate)
|
||||||
|
{
|
||||||
|
_createDate = createDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLastLogin()
|
||||||
|
{
|
||||||
|
return _lastLogin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLastLogin(long lastLogin)
|
||||||
|
{
|
||||||
|
_lastLogin = lastLogin;
|
||||||
|
}
|
||||||
|
}
|
@@ -37,6 +37,8 @@ import com.l2jserver.gameserver.network.clientpackets.friend.RequestFriendDel;
|
|||||||
import com.l2jserver.gameserver.network.clientpackets.friend.RequestFriendDetailInfo;
|
import com.l2jserver.gameserver.network.clientpackets.friend.RequestFriendDetailInfo;
|
||||||
import com.l2jserver.gameserver.network.clientpackets.friend.RequestFriendList;
|
import com.l2jserver.gameserver.network.clientpackets.friend.RequestFriendList;
|
||||||
import com.l2jserver.gameserver.network.clientpackets.friend.RequestSendFriendMsg;
|
import com.l2jserver.gameserver.network.clientpackets.friend.RequestSendFriendMsg;
|
||||||
|
import com.l2jserver.gameserver.network.clientpackets.friend.RequestUpdateBlockMemo;
|
||||||
|
import com.l2jserver.gameserver.network.clientpackets.friend.RequestUpdateFriendMemo;
|
||||||
import com.l2jserver.gameserver.network.clientpackets.mentoring.ConfirmMenteeAdd;
|
import com.l2jserver.gameserver.network.clientpackets.mentoring.ConfirmMenteeAdd;
|
||||||
import com.l2jserver.gameserver.network.clientpackets.mentoring.RequestMenteeAdd;
|
import com.l2jserver.gameserver.network.clientpackets.mentoring.RequestMenteeAdd;
|
||||||
import com.l2jserver.gameserver.network.clientpackets.mentoring.RequestMenteeWaitingList;
|
import com.l2jserver.gameserver.network.clientpackets.mentoring.RequestMenteeWaitingList;
|
||||||
@@ -1302,7 +1304,7 @@ public final class L2GamePacketHandler implements IPacketHandler<L2GameClient>,
|
|||||||
// @ msg = new RequestExEscapeScene();
|
// @ msg = new RequestExEscapeScene();
|
||||||
break;
|
break;
|
||||||
case 0x91:
|
case 0x91:
|
||||||
// msg = new RequestFlyMove();
|
msg = new RequestFlyMove();
|
||||||
break;
|
break;
|
||||||
case 0x92:
|
case 0x92:
|
||||||
// msg = new RequestSurrenderPledgeWarEX(); (chS)
|
// msg = new RequestSurrenderPledgeWarEX(); (chS)
|
||||||
@@ -1332,10 +1334,10 @@ public final class L2GamePacketHandler implements IPacketHandler<L2GameClient>,
|
|||||||
msg = new RequestFriendDetailInfo();
|
msg = new RequestFriendDetailInfo();
|
||||||
break;
|
break;
|
||||||
case 0x95:
|
case 0x95:
|
||||||
// msg = new RequestUpdateFriendMemo();
|
msg = new RequestUpdateFriendMemo();
|
||||||
break;
|
break;
|
||||||
case 0x96:
|
case 0x96:
|
||||||
// msg = new RequestUpdateBlockMemo();
|
msg = new RequestUpdateBlockMemo();
|
||||||
break;
|
break;
|
||||||
case 0x97:
|
case 0x97:
|
||||||
// msg = new RequestInzonePartyInfoHistory();
|
// msg = new RequestInzonePartyInfoHistory();
|
||||||
@@ -1392,7 +1394,7 @@ public final class L2GamePacketHandler implements IPacketHandler<L2GameClient>,
|
|||||||
// msg = new RequestFirstPlayStart();
|
// msg = new RequestFirstPlayStart();
|
||||||
break;
|
break;
|
||||||
case 0xAD:
|
case 0xAD:
|
||||||
// msg = new RequestFlyMoveStart();
|
msg = new RequestFlyMoveStart();
|
||||||
break;
|
break;
|
||||||
case 0xAE:
|
case 0xAE:
|
||||||
case 0xAF:
|
case 0xAF:
|
||||||
|
@@ -461,7 +461,7 @@ public class EnterWorld extends L2GameClientPacket
|
|||||||
|
|
||||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_FRIEND_S1_JUST_LOGGED_IN);
|
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_FRIEND_S1_JUST_LOGGED_IN);
|
||||||
sm.addString(activeChar.getName());
|
sm.addString(activeChar.getName());
|
||||||
for (int id : activeChar.getFriendList())
|
for (int id : activeChar.getFriendList().keySet())
|
||||||
{
|
{
|
||||||
L2Object obj = L2World.getInstance().findObject(id);
|
L2Object obj = L2World.getInstance().findObject(id);
|
||||||
if (obj != null)
|
if (obj != null)
|
||||||
|
@@ -22,6 +22,7 @@ import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
|||||||
import com.l2jserver.gameserver.model.BlockList;
|
import com.l2jserver.gameserver.model.BlockList;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||||
|
import com.l2jserver.gameserver.network.serverpackets.friend.BlockListPacket;
|
||||||
|
|
||||||
public final class RequestBlock extends L2GameClientPacket
|
public final class RequestBlock extends L2GameClientPacket
|
||||||
{
|
{
|
||||||
@@ -91,6 +92,7 @@ public final class RequestBlock extends L2GameClientPacket
|
|||||||
{
|
{
|
||||||
BlockList.removeFromBlockList(activeChar, targetId);
|
BlockList.removeFromBlockList(activeChar, targetId);
|
||||||
}
|
}
|
||||||
|
activeChar.sendPacket(new BlockListPacket(activeChar));
|
||||||
break;
|
break;
|
||||||
case BLOCKLIST:
|
case BLOCKLIST:
|
||||||
BlockList.sendListToOwner(activeChar);
|
BlockList.sendListToOwner(activeChar);
|
||||||
|
@@ -83,7 +83,7 @@ public final class RequestFriendInvite extends L2GameClientPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Target already in friend list.
|
// 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 = SystemMessage.getSystemMessage(SystemMessageId.THIS_PLAYER_IS_ALREADY_REGISTERED_ON_YOUR_FRIENDS_LIST);
|
||||||
sm.addString(_name);
|
sm.addString(_name);
|
||||||
|
@@ -28,6 +28,7 @@ import com.l2jserver.gameserver.network.SystemMessageId;
|
|||||||
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
|
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.friend.FriendAddRequestResult;
|
import com.l2jserver.gameserver.network.serverpackets.friend.FriendAddRequestResult;
|
||||||
|
import com.l2jserver.gameserver.network.serverpackets.friend.FriendList;
|
||||||
|
|
||||||
public final class RequestAnswerFriendInvite extends L2GameClientPacket
|
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 = SystemMessage.getSystemMessage(SystemMessageId.S1_HAS_BEEN_ADDED_TO_YOUR_FRIENDS_LIST);
|
||||||
msg.addString(player.getName());
|
msg.addString(player.getName());
|
||||||
requestor.sendPacket(msg);
|
requestor.sendPacket(msg);
|
||||||
requestor.getFriendList().add(player.getObjectId());
|
requestor.addFriend(player);
|
||||||
|
|
||||||
// has joined as friend.
|
// has joined as friend.
|
||||||
msg = SystemMessage.getSystemMessage(SystemMessageId.S1_HAS_JOINED_AS_A_FRIEND);
|
msg = SystemMessage.getSystemMessage(SystemMessageId.S1_HAS_JOINED_AS_A_FRIEND);
|
||||||
msg.addString(requestor.getName());
|
msg.addString(requestor.getName());
|
||||||
player.sendPacket(msg);
|
player.sendPacket(msg);
|
||||||
player.getFriendList().add(requestor.getObjectId());
|
player.addFriend(requestor);
|
||||||
|
|
||||||
// Send notifications for both player in order to show them online
|
// Send notifications for both player in order to show them online
|
||||||
player.sendPacket(new FriendAddRequestResult(requestor, 1));
|
player.sendPacket(new FriendAddRequestResult(requestor, 1));
|
||||||
requestor.sendPacket(new FriendAddRequestResult(player, 1));
|
requestor.sendPacket(new FriendAddRequestResult(player, 1));
|
||||||
|
player.sendPacket(new FriendList(player));
|
||||||
|
requestor.sendPacket(new FriendList(requestor));
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@@ -29,6 +29,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|||||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||||
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
|
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||||
|
import com.l2jserver.gameserver.network.serverpackets.friend.FriendList;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.friend.FriendRemove;
|
import com.l2jserver.gameserver.network.serverpackets.friend.FriendRemove;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -68,7 +69,7 @@ public final class RequestFriendDel extends L2GameClientPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!activeChar.getFriendList().contains(id))
|
if (!activeChar.getFriendList().containsKey(id))
|
||||||
{
|
{
|
||||||
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_NOT_ON_YOUR_FRIEND_LIST);
|
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_NOT_ON_YOUR_FRIEND_LIST);
|
||||||
sm.addString(_name);
|
sm.addString(_name);
|
||||||
@@ -90,7 +91,7 @@ public final class RequestFriendDel extends L2GameClientPacket
|
|||||||
sm.addString(_name);
|
sm.addString(_name);
|
||||||
activeChar.sendPacket(sm);
|
activeChar.sendPacket(sm);
|
||||||
|
|
||||||
activeChar.getFriendList().remove(Integer.valueOf(id));
|
activeChar.getFriendList().remove(id);
|
||||||
activeChar.sendPacket(new FriendRemove(_name, 1));
|
activeChar.sendPacket(new FriendRemove(_name, 1));
|
||||||
|
|
||||||
L2PcInstance player = L2World.getInstance().getPlayer(_name);
|
L2PcInstance player = L2World.getInstance().getPlayer(_name);
|
||||||
@@ -99,6 +100,8 @@ public final class RequestFriendDel extends L2GameClientPacket
|
|||||||
player.getFriendList().remove(Integer.valueOf(activeChar.getObjectId()));
|
player.getFriendList().remove(Integer.valueOf(activeChar.getObjectId()));
|
||||||
player.sendPacket(new FriendRemove(activeChar.getName(), 1));
|
player.sendPacket(new FriendRemove(activeChar.getName(), 1));
|
||||||
}
|
}
|
||||||
|
player.sendPacket(new FriendList(player));
|
||||||
|
activeChar.sendPacket(new FriendList(activeChar));
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@@ -86,7 +86,7 @@ public final class RequestFriendInvite extends L2GameClientPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Target already in friend list.
|
// 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 = SystemMessage.getSystemMessage(SystemMessageId.THIS_PLAYER_IS_ALREADY_REGISTERED_ON_YOUR_FRIENDS_LIST);
|
||||||
sm.addString(_name);
|
sm.addString(_name);
|
||||||
|
@@ -55,7 +55,7 @@ public final class RequestFriendList extends L2GameClientPacket
|
|||||||
activeChar.sendPacket(SystemMessageId.FRIENDS_LIST);
|
activeChar.sendPacket(SystemMessageId.FRIENDS_LIST);
|
||||||
|
|
||||||
L2PcInstance friend = null;
|
L2PcInstance friend = null;
|
||||||
for (int id : activeChar.getFriendList())
|
for (int id : activeChar.getFriendList().keySet())
|
||||||
{
|
{
|
||||||
// int friendId = rset.getInt("friendId");
|
// int friendId = rset.getInt("friendId");
|
||||||
String friendName = CharNameTable.getInstance().getNameById(id);
|
String friendName = CharNameTable.getInstance().getNameById(id);
|
||||||
|
@@ -63,7 +63,7 @@ public final class RequestSendFriendMsg extends L2GameClientPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
final L2PcInstance targetPlayer = L2World.getInstance().getPlayer(_reciever);
|
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);
|
activeChar.sendPacket(SystemMessageId.THAT_PLAYER_IS_NOT_ONLINE);
|
||||||
return;
|
return;
|
||||||
|
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -16,33 +16,37 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.l2jserver.gameserver.network.serverpackets;
|
package com.l2jserver.gameserver.network.clientpackets.friend;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
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
|
||||||
* @author Sdw
|
|
||||||
*/
|
|
||||||
public class BlockListPacket extends L2GameServerPacket
|
|
||||||
{
|
{
|
||||||
private final List<Integer> _playersId;
|
private static final String _C__D0_95_REQUESTUPDATEFRIENDMEMO = "[C] D0:95 RequestUpdateFriendMemo";
|
||||||
|
String cName;
|
||||||
|
String memo;
|
||||||
|
|
||||||
public BlockListPacket(List<Integer> playersId)
|
@Override
|
||||||
|
protected void readImpl()
|
||||||
{
|
{
|
||||||
_playersId = playersId;
|
cName = readS();
|
||||||
|
memo = readS();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final void writeImpl()
|
protected void runImpl()
|
||||||
{
|
{
|
||||||
writeC(0xD5);
|
L2PcInstance player = getClient().getActiveChar();
|
||||||
writeD(_playersId.size());
|
int id = CharNameTable.getInstance().getIdByName(cName);
|
||||||
for (int playerId : _playersId)
|
player.getFriend(id).setMemo(memo);
|
||||||
{
|
player.updateMemo(id);
|
||||||
writeS(CharNameTable.getInstance().getNameById(playerId));
|
}
|
||||||
writeS(""); // memo ?
|
|
||||||
}
|
@Override
|
||||||
|
public String getType()
|
||||||
|
{
|
||||||
|
return _C__D0_95_REQUESTUPDATEFRIENDMEMO;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -52,7 +52,7 @@ public final class CreatureSay extends L2GameServerPacket
|
|||||||
_charLevel = sender.getLevel();
|
_charLevel = sender.getLevel();
|
||||||
_textType = messageType;
|
_textType = messageType;
|
||||||
_text = text;
|
_text = text;
|
||||||
if (receiver.getFriendList().contains(sender.getObjectId()))
|
if (receiver.getFriendList().containsKey(sender.getObjectId()))
|
||||||
{
|
{
|
||||||
_mask |= 0x01;
|
_mask |= 0x01;
|
||||||
}
|
}
|
||||||
|
@@ -85,7 +85,8 @@ public final class RelationChanged extends L2GameServerPacket
|
|||||||
{
|
{
|
||||||
if (activeChar.isInvisible())
|
if (activeChar.isInvisible())
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("Cannot add insivisble character to multi relation packet");
|
_log.severe("Cannot add insivisble character to multi relation packet");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
Relation r = new Relation();
|
Relation r = new Relation();
|
||||||
r._objId = activeChar.getObjectId();
|
r._objId = activeChar.getObjectId();
|
||||||
|
@@ -39,7 +39,7 @@ public final class TradeStart extends AbstractItemPacket
|
|||||||
|
|
||||||
if (_partner != null)
|
if (_partner != null)
|
||||||
{
|
{
|
||||||
if (player.getFriendList().contains(_partner.getObjectId()))
|
if (player.getFriendList().containsKey(_partner.getObjectId()))
|
||||||
{
|
{
|
||||||
_mask |= 0x01;
|
_mask |= 0x01;
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* This program 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.
|
||||||
|
*
|
||||||
|
* This program 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.serverpackets.friend;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
||||||
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Erlandys
|
||||||
|
*/
|
||||||
|
public class BlockListPacket extends L2GameServerPacket
|
||||||
|
{
|
||||||
|
private final L2PcInstance player;
|
||||||
|
|
||||||
|
public BlockListPacket(L2PcInstance activeChar)
|
||||||
|
{
|
||||||
|
player = activeChar;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void writeImpl()
|
||||||
|
{
|
||||||
|
writeC(0xD5);
|
||||||
|
writeD(player.getBlockList().getBlockList().size());
|
||||||
|
for (Map.Entry<Integer, String> entry : player.getBlockList().getBlockList().entrySet())
|
||||||
|
{
|
||||||
|
writeS(CharNameTable.getInstance().getNameById(entry.getKey()));
|
||||||
|
writeS(entry.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@@ -20,8 +20,9 @@ package com.l2jserver.gameserver.network.serverpackets.friend;
|
|||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
|
||||||
import com.l2jserver.gameserver.model.L2World;
|
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jserver.gameserver.model.entity.Friend;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,42 +46,47 @@ public class ExFriendDetailInfo extends L2GameServerPacket
|
|||||||
writeH(0xEC);
|
writeH(0xEC);
|
||||||
|
|
||||||
writeD(_player.getObjectId());
|
writeD(_player.getObjectId());
|
||||||
|
Friend friend = _player.getFriend(CharNameTable.getInstance().getIdByName(_name));
|
||||||
|
|
||||||
L2PcInstance friend = L2World.getInstance().getPlayer(_name);
|
L2PcInstance player = friend.getFriend();
|
||||||
if (friend == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
writeS(_name);
|
writeS(_name);
|
||||||
writeD(0);
|
writeD(0x00);
|
||||||
writeD(0);
|
writeD(0x00);
|
||||||
writeH(0);
|
writeH(friend.getLevel());
|
||||||
writeH(0);
|
writeH(friend.getClassId());
|
||||||
writeD(0);
|
writeD(friend.getClanId());
|
||||||
writeD(0);
|
writeD(friend.getClanCrestId());
|
||||||
writeS("");
|
writeS(friend.getClanName());
|
||||||
writeD(0);
|
writeD(friend.getAllyId());
|
||||||
writeD(0);
|
writeD(friend.getAllyCrestId());
|
||||||
writeS("");
|
writeS(friend.getAllyName());
|
||||||
writeD(0);
|
Calendar createDate = Calendar.getInstance();
|
||||||
writeS(""); // memo
|
createDate.setTimeInMillis(friend.getCreateDate());
|
||||||
|
writeC(createDate.get(Calendar.MONTH) + 1);
|
||||||
|
writeC(createDate.get(Calendar.DAY_OF_MONTH));
|
||||||
|
writeD((int) ((System.currentTimeMillis() - friend.getLastLogin()) / 1000));
|
||||||
|
writeS(friend.getMemo()); // memo
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
writeS(friend.getName());
|
writeS(player.getName());
|
||||||
writeD(friend.isOnlineInt());
|
writeD(player.isOnlineInt());
|
||||||
writeD(friend.getObjectId());
|
writeD(player.getObjectId());
|
||||||
writeH(friend.getLevel());
|
writeH(player.getLevel());
|
||||||
writeH(friend.getClassIndex());
|
writeH(player.getClassId().getId());
|
||||||
writeD(friend.getClanId());
|
writeD(player.getClanId());
|
||||||
writeD(friend.getClanCrestId());
|
writeD(player.getClanCrestId());
|
||||||
writeS(friend.getClan() != null ? friend.getClan().getName() : "");
|
writeS(player.getClan() != null ? player.getClan().getName() : "");
|
||||||
writeD(friend.getAllyId());
|
writeD(player.getAllyId());
|
||||||
writeD(friend.getAllyCrestId());
|
writeD(player.getAllyCrestId());
|
||||||
writeS(friend.getClan() != null ? friend.getClan().getAllyName() : "");
|
writeS(player.getClan() != null ? player.getClan().getAllyName() : "");
|
||||||
Calendar createDate = friend.getCreateDate();
|
Calendar createDate = player.getCreateDate();
|
||||||
writeC(createDate.get(Calendar.MONTH));
|
writeC(createDate.get(Calendar.MONTH) + 1);
|
||||||
writeC(createDate.get(Calendar.DAY_OF_MONTH));
|
writeC(createDate.get(Calendar.DAY_OF_MONTH));
|
||||||
writeD(friend.isOnline() ? (int) System.currentTimeMillis() : (int) (System.currentTimeMillis() - friend.getLastAccess()) / 1000);
|
writeD(player.isOnline() ? -1 : (int) ((System.currentTimeMillis() - player.getLastAccess()) / 1000));
|
||||||
writeS(""); // memo
|
writeS(friend.getMemo()); // memo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,104 +18,52 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.gameserver.network.serverpackets.friend;
|
package com.l2jserver.gameserver.network.serverpackets.friend;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.util.Collection;
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javolution.util.FastList;
|
|
||||||
|
|
||||||
import com.l2jserver.L2DatabaseFactory;
|
|
||||||
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
|
||||||
import com.l2jserver.gameserver.model.L2World;
|
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jserver.gameserver.model.entity.Friend;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Support for "Chat with Friends" dialog. <br />
|
* @author Erlandys
|
||||||
* This packet is sent only at login.
|
|
||||||
* @author mrTJO, UnAfraid
|
|
||||||
*/
|
*/
|
||||||
public class FriendList extends L2GameServerPacket
|
public class FriendList extends L2GameServerPacket
|
||||||
{
|
{
|
||||||
private final List<FriendInfo> _info;
|
Collection<Friend> _friends;
|
||||||
|
|
||||||
private static class FriendInfo
|
|
||||||
{
|
|
||||||
int _objId;
|
|
||||||
String _name;
|
|
||||||
boolean _online;
|
|
||||||
int _classid;
|
|
||||||
int _level;
|
|
||||||
|
|
||||||
public FriendInfo(int objId, String name, boolean online, int classid, int level)
|
|
||||||
{
|
|
||||||
_objId = objId;
|
|
||||||
_name = name;
|
|
||||||
_online = online;
|
|
||||||
_classid = classid;
|
|
||||||
_level = level;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public FriendList(L2PcInstance player)
|
public FriendList(L2PcInstance player)
|
||||||
{
|
{
|
||||||
_info = new FastList<>(player.getFriendList().size());
|
_friends = player.getFriendList().values();
|
||||||
for (int objId : player.getFriendList())
|
|
||||||
{
|
|
||||||
String name = CharNameTable.getInstance().getNameById(objId);
|
|
||||||
L2PcInstance player1 = L2World.getInstance().getPlayer(objId);
|
|
||||||
|
|
||||||
boolean online = false;
|
|
||||||
int classid = 0;
|
|
||||||
int level = 0;
|
|
||||||
|
|
||||||
if (player1 == null)
|
|
||||||
{
|
|
||||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
|
||||||
PreparedStatement statement = con.prepareStatement("SELECT char_name, online, classid, level FROM characters WHERE charId = ?"))
|
|
||||||
{
|
|
||||||
statement.setInt(1, objId);
|
|
||||||
try (ResultSet rset = statement.executeQuery())
|
|
||||||
{
|
|
||||||
if (rset.next())
|
|
||||||
{
|
|
||||||
_info.add(new FriendInfo(objId, rset.getString(1), rset.getInt(2) == 1, rset.getInt(3), rset.getInt(4)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
// Who cares?
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player1.isOnline())
|
|
||||||
{
|
|
||||||
online = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
classid = player1.getClassId().getId();
|
|
||||||
level = player1.getLevel();
|
|
||||||
|
|
||||||
_info.add(new FriendInfo(objId, name, online, classid, level));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final void writeImpl()
|
protected final void writeImpl()
|
||||||
{
|
{
|
||||||
writeC(0x58);
|
writeC(0x58);
|
||||||
writeD(_info.size());
|
writeD(_friends.size());
|
||||||
for (FriendInfo info : _info)
|
for (Friend friend : _friends)
|
||||||
{
|
{
|
||||||
writeD(info._objId); // character id
|
L2PcInstance player = friend.getFriend();
|
||||||
writeS(info._name);
|
if (player != null)
|
||||||
writeD(info._online ? 0x01 : 0x00); // online
|
{
|
||||||
writeD(info._online ? info._objId : 0x00); // object id if online
|
writeD(player.getObjectId());
|
||||||
writeD(info._classid);
|
writeS(player.getName());
|
||||||
writeD(info._level);
|
writeD(0x01);
|
||||||
|
writeD(player.getObjectId());
|
||||||
|
writeD(player.getLevel());
|
||||||
|
writeD(player.getClassId().getId());
|
||||||
|
writeS("testing");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writeD(friend.getFriendOID());
|
||||||
|
writeS(friend.getName());
|
||||||
|
writeD(0x00);
|
||||||
|
writeD(0x00);
|
||||||
|
writeD(friend.getLevel());
|
||||||
|
writeD(friend.getClassId());
|
||||||
|
writeS("testing");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,81 +18,50 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.gameserver.network.serverpackets.friend;
|
package com.l2jserver.gameserver.network.serverpackets.friend;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
|
|
||||||
import javolution.util.FastList;
|
|
||||||
|
|
||||||
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
|
||||||
import com.l2jserver.gameserver.model.L2World;
|
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jserver.gameserver.model.entity.Friend;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Support for "Chat with Friends" dialog. <br />
|
* @author Erlandys
|
||||||
* This packet is sent only at login.
|
|
||||||
* @author Tempy
|
|
||||||
*/
|
*/
|
||||||
public class L2FriendList extends L2GameServerPacket
|
public class L2FriendList extends L2GameServerPacket
|
||||||
{
|
{
|
||||||
private final List<FriendInfo> _info;
|
Collection<Friend> _friends;
|
||||||
|
|
||||||
private static class FriendInfo
|
|
||||||
{
|
|
||||||
int _objId;
|
|
||||||
String _name;
|
|
||||||
int _level;
|
|
||||||
int _classId;
|
|
||||||
boolean _online;
|
|
||||||
|
|
||||||
public FriendInfo(int objId, String name, boolean online, int level, int classId)
|
|
||||||
{
|
|
||||||
_objId = objId;
|
|
||||||
_name = name;
|
|
||||||
_online = online;
|
|
||||||
_level = level;
|
|
||||||
_classId = classId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public L2FriendList(L2PcInstance player)
|
public L2FriendList(L2PcInstance player)
|
||||||
{
|
{
|
||||||
_info = new FastList<>(player.getFriendList().size());
|
_friends = player.getFriendList().values();
|
||||||
for (int objId : player.getFriendList())
|
|
||||||
{
|
|
||||||
String name = CharNameTable.getInstance().getNameById(objId);
|
|
||||||
L2PcInstance player1 = L2World.getInstance().getPlayer(objId);
|
|
||||||
boolean online = false;
|
|
||||||
int level = 0;
|
|
||||||
int classId = 0;
|
|
||||||
|
|
||||||
if (player1 != null)
|
|
||||||
{
|
|
||||||
online = true;
|
|
||||||
level = player1.getLevel();
|
|
||||||
classId = player1.getClassId().getId();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
level = CharNameTable.getInstance().getLevelById(objId);
|
|
||||||
classId = CharNameTable.getInstance().getClassIdById(objId);
|
|
||||||
}
|
|
||||||
_info.add(new FriendInfo(objId, name, online, level, classId));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final void writeImpl()
|
protected final void writeImpl()
|
||||||
{
|
{
|
||||||
writeC(0x75);
|
writeC(0x75);
|
||||||
writeD(_info.size());
|
writeD(_friends.size());
|
||||||
for (FriendInfo info : _info)
|
for (Friend friend : _friends)
|
||||||
{
|
{
|
||||||
writeD(info._objId); // character id
|
L2PcInstance player = friend.getFriend();
|
||||||
writeS(info._name);
|
if (player != null)
|
||||||
writeD(info._online ? 0x01 : 0x00); // online
|
{
|
||||||
writeD(info._online ? info._objId : 0x00); // object id if online
|
writeD(player.getObjectId());
|
||||||
writeD(info._level);
|
writeS(player.getName());
|
||||||
writeD(info._classId);
|
writeD(0x01);
|
||||||
|
writeD(player.getObjectId());
|
||||||
|
writeD(player.getLevel());
|
||||||
|
writeD(player.getClassId().getId());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writeD(friend.getFriendOID());
|
||||||
|
writeS(friend.getName());
|
||||||
|
writeD(0x00);
|
||||||
|
writeD(0x00);
|
||||||
|
writeD(friend.getLevel());
|
||||||
|
writeD(friend.getClassId());
|
||||||
|
}
|
||||||
writeH(0x00);
|
writeH(0x00);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user