Quellcode durchsuchen

List of fixes:
- enchant4 skills fix. Thx toastgodsupreme
- better crystalize warning message. Thx toastgodsupreme
- Retail like unequip/equip weapons. Thx Sephiroth
- Enchant Exploit Fix! You cant restart while enchanting. Same protection added to elemental enchanting as well! Thx Blazer
- Updates on command channel, includes missing system messages, Frinteza configuration. Thx toastgodsupreme

Gigiikun vor 16 Jahren
Ursprung
Commit
414411de9e

+ 13 - 3
L2_GameServer/java/net/sf/l2j/gameserver/model/L2CommandChannel.java

@@ -20,11 +20,13 @@ import javolution.util.FastList;
 import net.sf.l2j.gameserver.model.actor.L2Attackable;
 import net.sf.l2j.gameserver.model.actor.L2Character;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
 import net.sf.l2j.gameserver.network.serverpackets.ExCloseMPCC;
 import net.sf.l2j.gameserver.network.serverpackets.ExMPCCPartyInfoUpdate;
 import net.sf.l2j.gameserver.network.serverpackets.ExOpenMPCC;
 import net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket;
+import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
 
 /**
  *
@@ -49,6 +51,7 @@ public class L2CommandChannel
 		_partys.add(leader.getParty());
 		_channelLvl = leader.getParty().getLevel();
 		leader.getParty().setCommandChannel(this);
+		leader.getParty().broadcastToPartyMembers(new SystemMessage(SystemMessageId.COMMAND_CHANNEL_FORMED));
 		leader.getParty().broadcastToPartyMembers(new ExOpenMPCC());
 	}
 
@@ -65,6 +68,7 @@ public class L2CommandChannel
 		if (party.getLevel() > _channelLvl)
 			_channelLvl = party.getLevel();
 		party.setCommandChannel(this);
+		party.broadcastToPartyMembers(new SystemMessage(SystemMessageId.JOINED_COMMAND_CHANNEL));
 		party.broadcastToPartyMembers(new ExOpenMPCC());
 	}
 
@@ -85,6 +89,7 @@ public class L2CommandChannel
 		party.broadcastToPartyMembers(new ExCloseMPCC());
 		if(_partys.size() < 2)
 		{
+			broadcastToChannelMembers(new SystemMessage(SystemMessageId.COMMAND_CHANNEL_DISBANDED));
 			disbandChannel();
 		} 
 		else 
@@ -99,10 +104,13 @@ public class L2CommandChannel
 	 */
 	public void disbandChannel()
 	{
-		for (L2Party party : _partys)
+		if (_partys != null)
 		{
-			if(party != null)
-				removeParty(party);
+			for (L2Party party : _partys)
+			{
+				if(party != null)
+					removeParty(party);
+			}
 		}
 		_partys = null;
 	}
@@ -221,6 +229,8 @@ public class L2CommandChannel
 	    		return (getMemberCount() > 225);
 	    	case 29028: // Valakas
 	    		return (getMemberCount() > 99);
+	    	case 29045: // Frintezza
+	    		return (getMemberCount() > 35);
 	    	default: // normal Raidboss
 	    		return (getMemberCount() > 18);
 		}

Datei-Diff unterdrückt, da er zu groß ist
+ 427 - 439
L2_GameServer/java/net/sf/l2j/gameserver/model/itemcontainer/Inventory.java


+ 1 - 3
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestCrystallizeItem.java

@@ -125,9 +125,7 @@ public final class RequestCrystallizeItem extends L2GameClientPacket
 				|| (itemToRemove.getItem().getCrystalCount() <= 0)
 				|| (itemToRemove.getItem().getCrystalType() == L2Item.CRYSTAL_NONE))
 		{
-			_log.warning("" + activeChar.getObjectId()
-					+ " tried to crystallize "
-					+ itemToRemove.getItem().getItemId());
+			_log.warning(activeChar.getName() + " (" + activeChar.getObjectId() + ") tried to crystallize " + itemToRemove.getItem().getItemId());
 			return;
 		}
 

+ 11 - 0
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java

@@ -66,6 +66,17 @@ public final class RequestRestart extends L2GameClientPacket
             return;
         }
 
+        if(player.getActiveEnchantItem() != null)
+        {
+        	player.sendMessage("You cant logout while enchanting!");
+        	return;
+        }
+        if(player.getActiveEnchantAttrItem() != null)
+        {
+        	player.sendMessage("You cant logout while enchanting!");
+        	return;
+        }
+
         if (player.isTeleporting()) {
         	player.abortCast();
         	player.setIsTeleporting(false);

+ 2 - 2
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestUnEquipItem.java

@@ -79,7 +79,7 @@ public class RequestUnEquipItem extends L2GameClientPacket
             activeChar.sendMessage("Your status does not allow you to do that.");
             return;
         }
-        if (activeChar.isAttackingNow() || activeChar.isCastingNow() || activeChar.isCastingSimultaneouslyNow())
+        if (activeChar.isCastingNow() || activeChar.isCastingSimultaneouslyNow())
         	return;
 
 		L2ItemInstance[] unequiped =
@@ -97,7 +97,7 @@ public class RequestUnEquipItem extends L2GameClientPacket
 
 		activeChar.sendPacket(iu);
 
-		activeChar.abortAttack();
+		// On retail you don't stop hitting if unequip something. REOMVED: activeChar.abortAttack();
 		activeChar.broadcastUserInfo();
 
 		// this can be 0 if the user pressed the right mousebutton twice very fast

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.