Prechádzať zdrojové kódy

clanhall doors now with confirm popup by kerberos_20

nBd 16 rokov pred
rodič
commit
5d5ab52120

+ 10 - 5
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2DoorInstance.java

@@ -41,6 +41,7 @@ import net.sf.l2j.gameserver.model.entity.ClanHall;
 import net.sf.l2j.gameserver.model.entity.Fort;
 import net.sf.l2j.gameserver.network.L2GameClient;
 import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
+import net.sf.l2j.gameserver.network.serverpackets.ConfirmDlg;
 import net.sf.l2j.gameserver.network.serverpackets.DoorStatusUpdate;
 import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected;
 import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
@@ -431,11 +432,15 @@ public class L2DoorInstance extends L2Character
                 }
                 else
                 {
-                    //need find serverpacket which ask open/close gate. now auto
-                        //if (getOpen() == 1) player.sendPacket(new SystemMessage(1140));
-                        //else player.sendPacket(new SystemMessage(1141));
-                    if (getOpen() == 1) openMe();
-                    else closeMe();
+                	player.gatesRequest(this);
+                    if (getOpen() == 1)
+                    {
+                    	player.sendPacket(new ConfirmDlg(1140));
+                    }
+                    else
+                    {
+                    	player.sendPacket(new ConfirmDlg(1141));;
+                    }
                 }
             }
         }

+ 38 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

@@ -791,6 +791,22 @@ public final class L2PcInstance extends L2PlayableInstance
     	}
     }
     
+    // open/close gates
+    private gatesRequest _gatesRequest = new gatesRequest();
+    
+    public class gatesRequest
+    {
+    	private L2DoorInstance _target = null;
+    	public void setTarget(L2DoorInstance door)
+    	{
+    		_target = door;
+    		return;
+    	}
+    	public L2DoorInstance getDoor()
+    	{
+    		return _target;
+    	}
+    }
 	/**
 	 * Create a new L2PcInstance and add it in the characters table of the database.<BR><BR>
 	 *
@@ -11504,4 +11520,26 @@ public final class L2PcInstance extends L2PlayableInstance
     	}
     	_summonRequest.setTarget(null, null);
     }
+    
+
+    public void gatesRequest(L2DoorInstance door)
+    {
+    	_gatesRequest.setTarget(door);
+    }
+
+
+    public void gatesAnswer(int answer, int type)
+    {
+    	if (_gatesRequest.getDoor() == null)
+    		return;
+    	if (answer == 1 && getTarget() == _gatesRequest.getDoor() && type == 1)
+    	{
+    		_gatesRequest.getDoor().openMe();
+    	}
+    	else if (answer == 1 && getTarget() == _gatesRequest.getDoor() && type == 0)
+    	{
+    		_gatesRequest.getDoor().closeMe();
+    	}
+    	_gatesRequest.setTarget(null);
+    }
 }

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

@@ -50,8 +50,11 @@ public final class DlgAnswer extends L2GameClientPacket
 		else if (_messageId==SystemMessageId.S1_WISHES_TO_SUMMON_YOU_FROM_S2_DO_YOU_ACCEPT.getId())
 			getClient().getActiveChar().teleportAnswer(_answer, _requesterId);
 		else if (_messageId == SystemMessageId.S1.getId() && Config.L2JMOD_ALLOW_WEDDING)
-						getClient().getActiveChar().EngageAnswer(_answer);
-
+			getClient().getActiveChar().EngageAnswer(_answer);
+		else if (_messageId == 1140 )
+			getClient().getActiveChar().gatesAnswer(_answer, 1);
+		else if (_messageId == 1141)
+			getClient().getActiveChar().gatesAnswer(_answer, 0);
 	}
 
 	@Override

+ 48 - 39
L2_GameServer/java/net/sf/l2j/gameserver/network/serverpackets/ConfirmDlg.java

@@ -178,52 +178,61 @@ public class ConfirmDlg extends L2GameServerPacket
 		writeC(0xf3);
 		writeD(_messageId);
 
-		writeD(_types.size());
-		for (int i = 0; i < _types.size(); i++)
+		if (_types == null || _types.size() == 0)
 		{
-			int t = _types.get(i).intValue();
+			writeD(_types.size());
+			for (int i = 0; i < _types.size(); i++)
+			{
+				int t = _types.get(i).intValue();
 
-			writeD(t);
+				writeD(t);
 
-			switch (t)
-			{
-				case TYPE_TEXT:
-				{
-					writeS( (String)_values.get(i));
-					break;
-				}
-				case TYPE_NUMBER:
-				case TYPE_NPC_NAME:
-				case TYPE_ITEM_NAME:
-				{
-					int t1 = ((Integer)_values.get(i)).intValue();
-					writeD(t1);
-					break;
-				}
-				case TYPE_SKILL_NAME:
-				{
-					int t1 = ((Integer)_values.get(i)).intValue();
-					writeD(t1); // Skill Id
-					writeD(_skillLvL); // Skill lvl
-					break;
-				}
-				case TYPE_ZONE_NAME:
+				switch (t)
 				{
-					int t1 = ((int[])_values.get(i))[0];
-					int t2 = ((int[])_values.get(i))[1];
-					int t3 = ((int[])_values.get(i))[2];
-					writeD(t1);
-					writeD(t2);
-					writeD(t3);
-					break;
+					case TYPE_TEXT:
+					{
+						writeS( (String)_values.get(i));
+						break;
+					}
+					case TYPE_NUMBER:
+					case TYPE_NPC_NAME:
+					case TYPE_ITEM_NAME:
+					{
+						int t1 = ((Integer)_values.get(i)).intValue();
+						writeD(t1);
+						break;
+					}
+					case TYPE_SKILL_NAME:
+					{
+						int t1 = ((Integer)_values.get(i)).intValue();
+						writeD(t1); // Skill Id
+						writeD(_skillLvL); // Skill lvl
+						break;
+					}
+					case TYPE_ZONE_NAME:
+					{
+						int t1 = ((int[])_values.get(i))[0];
+						int t2 = ((int[])_values.get(i))[1];
+						int t3 = ((int[])_values.get(i))[2];
+						writeD(t1);
+						writeD(t2);
+						writeD(t3);
+						break;
+					}
 				}
 			}
+			// timed dialog (Summon Friend skill request)
+			if (_time != 0)
+				writeD(_time);
+			if (_requesterId != 0)
+				writeD(_requesterId);
+		}
+		else
+		{
+			writeD(0x00);
+			writeD(0x00);
+			writeD(0x00);
 		}
-		// timed dialog (Summon Friend skill request)
-		if (_time != 0)
-			writeD(_time);
-		if (_requesterId != 0)
-			writeD(_requesterId);
 	}
 
 	/* (non-Javadoc)