فهرست منبع

Some small changes by kerberos_20

* chamberlain small update
* fix for broadcasting class transfer animation
* removed custom illegal action in requestrestartPointPacket
* added restriction in wearing Agathion bracelets/race circlets
nBd 17 سال پیش
والد
کامیت
2974f445d4

+ 6 - 22
L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java

@@ -27,8 +27,6 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.model.entity.Castle;
 import net.sf.l2j.gameserver.model.entity.ClanHall;
 import net.sf.l2j.gameserver.model.entity.Fort;
-import net.sf.l2j.gameserver.util.IllegalPlayerAction;
-import net.sf.l2j.gameserver.util.Util;
 
 /**
  * This class ...
@@ -58,6 +56,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 			activeChar = _activeChar;
 		}
 
+		@SuppressWarnings("synthetic-access")
 		public void run()
 		{
 			Location loc = null;
@@ -79,9 +78,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 				case 1: // to clanhall
 					if (activeChar.getClan() == null || activeChar.getClan().getHasHideout() == 0)
 					{
-						//cheater
-						activeChar.sendMessage("You may not use this respawn point!");
-						Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
+						_log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - To Clanhall and he doesn't have Clanhall!");
 						return;
 					}
 					loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.ClanHall);
@@ -106,21 +103,14 @@ public final class RequestRestartPoint extends L2GameClientPacket
 							loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.Town);
 						else
 						{
-							//cheater
-							activeChar.sendMessage("You may not use this respawn point!");
-							Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
+							_log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - To Castle and he doesn't have Castle!");
 							return;
 						}
 					}
 					else
 					{
 						if (activeChar.getClan() == null || activeChar.getClan().getHasCastle() == 0)
-						{
-							//cheater
-							activeChar.sendMessage("You may not use this respawn point!");
-							Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
 							return;
-						}
 						else
 							loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.Castle);
 					}
@@ -137,9 +127,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 					}
 					if ((activeChar.getClan() == null || activeChar.getClan().getHasFort() == 0) && !isInDefense)
 					{
-						//cheater
-						activeChar.sendMessage("You may not use this respawn point!");
-						Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
+						_log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - To Fortress and he doesn't have Fortress!");
 						return;
 					}
 					loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.Fortress);
@@ -157,9 +145,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 
 					if (siegeClan == null || siegeClan.getFlag().size() == 0)
 					{
-						//cheater
-						activeChar.sendMessage("You may not use this respawn point!");
-						Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
+						_log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - To Siege HQ and he doesn't have Siege HQ!");
 						return;
 					}
 					loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.SiegeFlag);
@@ -168,9 +154,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 				case 5: // Fixed or Player is a festival participant
 					if (!activeChar.isGM() && !activeChar.isFestivalParticipant())
 					{
-						//cheater
-						activeChar.sendMessage("You may not use this respawn point!");
-						Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
+						_log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - Fixed and he isn't festival participant!");
 						return;
 					}
 					loc = new Location(activeChar.getX(), activeChar.getY(), activeChar.getZ()); // spawn them where they died

+ 150 - 0
L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/UseItem.java

@@ -352,6 +352,156 @@ public final class UseItem extends L2GameClientPacket
                         }
                         break;
                     }
+                    //Race circlets can be used only if ur race is matching.
+                    case L2Item.SLOT_HAIRALL:
+                    {
+                    	if (itemId >= 9391 && itemId <= 9396)
+                    	{
+                    		switch (activeChar.getRace())
+                    		{
+                    			case Kamael:
+                    			{
+                    				if (itemId != 9396)
+                    				{
+                    					activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_EQUIP_ITEM_DUE_TO_BAD_CONDITION));
+                    					return;
+                    				}
+                    			}
+                    			case Human:
+                    			{
+                    				if (itemId != 9391)
+                    				{
+                    					activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_EQUIP_ITEM_DUE_TO_BAD_CONDITION));
+                    					return;
+                    				}
+                    			}
+                    			case Dwarf:
+                    			{
+                    				if (itemId != 9395)
+                    				{
+                    					activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_EQUIP_ITEM_DUE_TO_BAD_CONDITION));
+                    					return;
+                    				};
+                    			}
+                    			case Elf:
+                    			{
+                    				if (itemId != 9392)
+                    				{
+                    					activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_EQUIP_ITEM_DUE_TO_BAD_CONDITION));
+                    					return;
+                    				}	
+                    			}
+                    			case DarkElf:
+                    			{
+                    				if (itemId != 9393)
+                    				{
+                    					activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_EQUIP_ITEM_DUE_TO_BAD_CONDITION));
+                    					return;
+                    				}	
+                    			}
+                    			case Orc:
+                    			{
+                    				if (itemId != 9394)
+                    				{
+                    					activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_EQUIP_ITEM_DUE_TO_BAD_CONDITION));
+                    					return;
+                    				}
+                    			}
+                    		}
+                    		break;
+                    	}
+                    }
+                    case L2Item.SLOT_L_BRACELET:
+                    {
+                    	SystemMessage sm = new SystemMessage(SystemMessageId.CANNOT_EQUIP_ITEM_DUE_TO_BAD_CONDITION);
+                    	if ((item.getItemId() >= 9605 && item.getItemId() <= 9615)||item.getItemId() == 10018)
+                    	{
+                    		if (activeChar.getClan()!= null)
+                    		{
+                    			switch (item.getItemId())
+                    			{
+                    				case 9605:
+                    					if (activeChar.getClan().getHasHideout() != 62)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9606:
+                    					if (activeChar.getClan().getHasHideout() != 63)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9607:
+                    					if (activeChar.getClan().getHasCastle() != 1)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9608:
+                    					if (activeChar.getClan().getHasCastle() != 2)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9609:
+                    					if (activeChar.getClan().getHasCastle() != 3)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9610:
+                    					if (activeChar.getClan().getHasCastle() != 4)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9611:
+                    					if (activeChar.getClan().getHasCastle() != 5)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9612:
+                    					if (activeChar.getClan().getHasCastle() != 6)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9613:
+                    					if (activeChar.getClan().getHasCastle() != 7)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9614:
+                    					if (activeChar.getClan().getHasCastle() != 8)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 9615:
+                    					if (activeChar.getClan().getHasCastle() != 9)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    				case 10018:
+                    					if (activeChar.getClan().getHasFort() == 0)
+                    					{
+                                            activeChar.sendPacket(sm);
+                                            return;
+                    					}
+                    			}
+                    			break;
+                    		}
+                    		else
+                    		{
+                                activeChar.sendPacket(sm);
+                                return;
+                    		}
+                    	}
+                    }
                 }
                 
                 if (activeChar.isCursedWeaponEquipped() && itemId == 6408) // Don't allow to put formal wear

+ 83 - 25
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2CastleChamberlainInstance.java

@@ -27,7 +27,6 @@ import net.sf.l2j.gameserver.instancemanager.CastleManager;
 import net.sf.l2j.gameserver.instancemanager.CastleManorManager;
 import net.sf.l2j.gameserver.model.L2Clan;
 import net.sf.l2j.gameserver.model.L2TradeList;
-import net.sf.l2j.gameserver.model.PcInventory;
 import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.serverpackets.ActionFailed;
 import net.sf.l2j.gameserver.serverpackets.BuyList;
@@ -130,8 +129,13 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
                 	return;
                 }
                 else
-                	player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));
-            return;
+                {
+                    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                    html.setFile("data/html/chamberlain/chamberlain_noprivs.htm");
+                    html.replace("%objectId%", String.valueOf(getObjectId()));
+                    player.sendPacket(html);
+                    return;
+                }
             }
             else if (actualCommand.equalsIgnoreCase("list_siege_clans"))
             {
@@ -141,8 +145,13 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
                     return;
                 }
                 else
-                    player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));
-                return;
+                {
+                    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                    html.setFile("data/html/chamberlain/chamberlain_noprivs.htm");
+                    html.replace("%objectId%", String.valueOf(getObjectId()));
+                    player.sendPacket(html);
+                    return;
+                }
             }
             else if (actualCommand.equalsIgnoreCase("receive_report"))
             {
@@ -220,7 +229,13 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
                     return;
                 }
                 else
-                    player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));
+                {
+                    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                    html.setFile("data/html/chamberlain/chamberlain_noprivs.htm");
+                    html.replace("%objectId%", String.valueOf(getObjectId()));
+                    player.sendPacket(html);
+                    return;
+                }
             }
             else if (actualCommand.equalsIgnoreCase("items"))
             {
@@ -231,17 +246,7 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
 
                     if (Config.DEBUG) _log.fine("Showing chamberlain buylist");
 
-                    int buy;
-                    {
-                        int castleId = getCastle().getCastleId();
-                        int circlet = CastleManager.getInstance().getCircletByCastleId(castleId);
-                        PcInventory s = player.getInventory();
-                        if (s.getItemByItemId(circlet)==null)
-                            buy = (Integer.parseInt(val+"1"));
-                        else
-                            buy = (Integer.parseInt(val+"2"));
-                    }
-                    L2TradeList list = TradeController.getInstance().getBuyList(buy);
+                    L2TradeList list = TradeController.getInstance().getBuyList(Integer.parseInt(val+"1"));
                     if (list != null && list.getNpcId().equals(String.valueOf(getNpcId())))
                     {
                         BuyList bl = new BuyList(list, player.getAdena(), 0);
@@ -251,12 +256,18 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
                     {
                         _log.warning("player: " + player.getName()
                                 + " attempting to buy from chamberlain that don't have buylist!");
-                        _log.warning("buylist id:" + buy);
+                        _log.warning("buylist id:" + Integer.parseInt(val+"1"));
                     }
                     player.sendPacket(ActionFailed.STATIC_PACKET);
                 }
                 else
-                    player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));
+                {
+                    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                    html.setFile("data/html/chamberlain/chamberlain_noprivs.htm");
+                    html.replace("%objectId%", String.valueOf(getObjectId()));
+                    player.sendPacket(html);
+                    return;
+                }
             }
             else if (actualCommand.equalsIgnoreCase("manage_siege_defender"))
             {
@@ -266,7 +277,13 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
                     return;
                 }
                 else
-                    player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));
+                {
+                    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                    html.setFile("data/html/chamberlain/chamberlain_noprivs.htm");
+                    html.replace("%objectId%", String.valueOf(getObjectId()));
+                    player.sendPacket(html);
+                    return;
+                }
             }
             else if (actualCommand.equalsIgnoreCase("manage_vault"))
             {
@@ -317,7 +334,13 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
                     return;
                 }
                 else
-                    player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));
+                {
+                    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                    html.setFile("data/html/chamberlain/chamberlain_noprivs.htm");
+                    html.replace("%objectId%", String.valueOf(getObjectId()));
+                    player.sendPacket(html);
+                    return;
+                }
             }
             else if(actualCommand.equalsIgnoreCase("manor"))
             {
@@ -355,7 +378,13 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
                     return;
                 }
                 else
-                    player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));
+                {
+                    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                    html.setFile("data/html/chamberlain/chamberlain_noprivs.htm");
+                    html.replace("%objectId%", String.valueOf(getObjectId()));
+                    player.sendPacket(html);
+                    return;
+                }
             }
             else if (command.startsWith("manor_menu_select"))
             {// input string format:
@@ -432,7 +461,13 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
                     return;
                 }
                 else
-                    player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));
+                {
+                    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                    html.setFile("data/html/chamberlain/chamberlain_noprivs.htm");
+                    html.replace("%objectId%", String.valueOf(getObjectId()));
+                    player.sendPacket(html);
+                    return;
+                }
             }
             else if(actualCommand.equalsIgnoreCase("tax_set")) // tax rates control
             {
@@ -458,7 +493,31 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
                     return;
                 }
                 else
-                    player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT));
+                {
+                    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                    html.setFile("data/html/chamberlain/chamberlain_tax.htm");
+                    html.replace("%objectId%", String.valueOf(getObjectId()));
+                    html.replace("%tax%", String.valueOf(getCastle().getTaxPercent()));
+                    player.sendPacket(html);
+                    return;
+                }
+            }
+            else if(actualCommand.equalsIgnoreCase("manage_functions"))
+            {
+                NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                html.setFile("data/html/chamberlain/chamberlain_manage.htm");
+                html.replace("%objectId%", String.valueOf(getObjectId()));
+                player.sendPacket(html);
+                return;
+            }
+            else if(actualCommand.equalsIgnoreCase("products"))
+            {
+                NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+                html.setFile("data/html/chamberlain/chamberlain_products.htm");
+                html.replace("%objectId%", String.valueOf(getObjectId()));
+                html.replace("%npcId%", String.valueOf(getNpcId()));
+                player.sendPacket(html);
+                return;
             }
             super.onBypassFeedback(player, command);
         }
@@ -490,7 +549,6 @@ public class L2CastleChamberlainInstance extends L2MerchantInstance
         NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
         html.setFile(filename);
         html.replace("%objectId%", String.valueOf(getObjectId()));
-        html.replace("%npcId%", String.valueOf(getNpcId()));
         html.replace("%npcname%", getName());
         player.sendPacket(html);
     }

+ 2 - 1
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

@@ -160,6 +160,7 @@ import net.sf.l2j.gameserver.serverpackets.ItemList;
 import net.sf.l2j.gameserver.serverpackets.L2GameServerPacket;
 import net.sf.l2j.gameserver.serverpackets.LeaveWorld;
 import net.sf.l2j.gameserver.serverpackets.MagicSkillCanceld;
+import net.sf.l2j.gameserver.serverpackets.MagicSkillUse;
 import net.sf.l2j.gameserver.serverpackets.MyTargetSelected;
 import net.sf.l2j.gameserver.serverpackets.NicknameChanged;
 import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
@@ -2019,7 +2020,7 @@ public final class L2PcInstance extends L2PlayableInstance
 			getSubClasses().get(_classIndex).setClassId(Id);
 		}
 		setTarget(this);
-		doCast(SkillTable.getInstance().getInfo(5103,1));
+		broadcastPacket(new MagicSkillUse(this, 5103, 1, 1000, 0));
 		setClassTemplate(Id);
 		
 		// Update class icon in party and clan