Sync with L2jServer HighFive Jul 14th 2015.

This commit is contained in:
MobiusDev
2015-07-14 19:55:19 +00:00
parent 54754b81b2
commit b07f46dc5c
29 changed files with 247 additions and 361 deletions

View File

@@ -30,6 +30,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -353,13 +354,14 @@ public class L2Clan implements IIdentifiable, INamable
public void addClanMember(L2PcInstance player)
{
final L2ClanMember member = new L2ClanMember(this, player);
// store in memory
addClanMember(member);
member.setPlayerInstance(player);
addClanMember(member);
player.setClan(this);
player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
player.sendPacket(new PledgeShowMemberListUpdate(player));
player.sendPacket(new PledgeSkillList(this));
addSkillEffects(player);
// Notify to scripts
@@ -466,9 +468,10 @@ public class L2Clan implements IIdentifiable, INamable
{
CastleManager.getInstance().removeCirclet(exMember, getCastleId());
}
if (exMember.isOnline())
final L2PcInstance player = exMember.getPlayerInstance();
if (player != null)
{
L2PcInstance player = exMember.getPlayerInstance();
if (!player.isNoble())
{
player.setTitle("");
@@ -479,7 +482,7 @@ public class L2Clan implements IIdentifiable, INamable
if (player.isClanLeader())
{
SiegeManager.getInstance().removeSiegeSkills(player);
player.setClanCreateExpiryTime(System.currentTimeMillis() + (Config.ALT_CLAN_CREATE_DAYS * 86400000L)); // 24*60*60*1000 = 86400000
player.setClanCreateExpiryTime(System.currentTimeMillis() + TimeUnit.DAYS.toMillis(Config.ALT_CLAN_CREATE_DAYS));
}
// remove Clan skills from Player
removeSkillEffects(player);
@@ -510,7 +513,7 @@ public class L2Clan implements IIdentifiable, INamable
}
else
{
removeMemberInDatabase(exMember, clanJoinExpiryTime, getLeaderId() == objectId ? System.currentTimeMillis() + (Config.ALT_CLAN_CREATE_DAYS * 86400000L) : 0);
removeMemberInDatabase(exMember.getObjectId(), clanJoinExpiryTime, getLeaderId() == objectId ? System.currentTimeMillis() + TimeUnit.DAYS.toMillis(Config.ALT_CLAN_CREATE_DAYS) : 0);
}
// Notify to scripts
@@ -1001,31 +1004,29 @@ public class L2Clan implements IIdentifiable, INamable
}
/**
* @param member the clan member to be removed.
* @param clanJoinExpiryTime
* @param clanCreateExpiryTime
* Removes a clan member from this clan.
* @param playerId the clan member object ID to be removed
* @param clanJoinExpiryTime the time penalty for the player to join a new clan
* @param clanCreateExpiryTime the time penalty for the player to create a new clan
*/
private void removeMemberInDatabase(L2ClanMember member, long clanJoinExpiryTime, long clanCreateExpiryTime)
private void removeMemberInDatabase(int playerId, long clanJoinExpiryTime, long clanCreateExpiryTime)
{
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement ps1 = con.prepareStatement("UPDATE characters SET clanid=0, title=?, clan_join_expiry_time=?, clan_create_expiry_time=?, clan_privs=0, wantspeace=0, subpledge=0, lvl_joined_academy=0, apprentice=0, sponsor=0 WHERE charId=?");
PreparedStatement ps2 = con.prepareStatement("UPDATE characters SET apprentice=0 WHERE apprentice=?");
PreparedStatement ps3 = con.prepareStatement("UPDATE characters SET sponsor=0 WHERE sponsor=?"))
{
// Remove clan member.
ps1.setString(1, "");
ps1.setLong(2, clanJoinExpiryTime);
ps1.setLong(3, clanCreateExpiryTime);
ps1.setInt(4, member.getObjectId());
ps1.setInt(4, playerId);
ps1.execute();
if (Config.DEBUG)
{
_log.fine("clan member removed in db: " + getId());
}
// Remove apprentice.
ps2.setInt(1, member.getObjectId());
ps2.setInt(1, playerId);
ps2.execute();
// Remove sponsor.
ps3.setInt(1, member.getObjectId());
ps3.setInt(1, playerId);
ps3.execute();
}
catch (Exception e)