Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

.ping

Iniciado por Swarlog, Ago 05, 2022, 01:29 AM

Tema anterior - Siguiente tema

Swarlog

diff --git a/src/main/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java b/src/main/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
index 67dd5a2..84ae937 100644
--- a/src/main/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
+++ b/src/main/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
@@ -411,6 +411,7 @@
     private long _onlineBeginTime;
     private long _lastAccess;
     private long _uptime;
+    private int _ping = -1;
    
     private final ReentrantLock _subclassLock = new ReentrantLock();
     protected int _baseClass;
@@ -14350,4 +14351,14 @@
         }
         return _servitorShare.get(stat);
     }
+   
+    public int getPing()
+    {
+        return _ping;
+    }
+   
+    public void setPing(int ping)
+    {
+        _ping = ping;
+    }
 }
diff --git a/src/main/java/com/l2jserver/loginserver/network/Pinger.java b/src/main/java/com/l2jserver/loginserver/network/Pinger.java
new file mode 100644
index 0000000..bf16a6e
--- /dev/null
+++ b/src/main/java/com/l2jserver/loginserver/network/Pinger.java
@@ -0,0 +1,44 @@
+package com.l2jserver.loginserver.network;
+
+import com.l2jserver.gameserver.ThreadPoolManager;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.loginserver.network.serverpackets.NetPingPacket;
+
+/**
+ * @author vGodFather
+ */
+public class Pinger
+{
+    public static boolean getPing(L2PcInstance activeChar)
+    {
+        activeChar.sendMessage("Processing request...");
+        activeChar.sendPacket(new NetPingPacket(activeChar));
+        ThreadPoolManager.getInstance().scheduleGeneral(new AnswerTask(activeChar), 3000L);
+        return true;
+    }
+   
+    private static final class AnswerTask implements Runnable
+    {
+        private final L2PcInstance _player;
+       
+        public AnswerTask(L2PcInstance player)
+        {
+            _player = player;
+        }
+       
+        @Override
+        public void run()
+        {
+            int ping = _player.getPing();
+            if (ping > -1)
+            {
+                _player.sendMessage("Current ping: " + ping + " ms.");
+            }
+            else
+            {
+                _player.sendMessage("The data from the client was not received.");
+            }
+            _player.setPing(-1);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/l2jserver/loginserver/network/serverpackets/NetPingPacket.java b/src/main/java/com/l2jserver/loginserver/network/serverpackets/NetPingPacket.java
new file mode 100644
index 0000000..30423f5
--- /dev/null
+++ b/src/main/java/com/l2jserver/loginserver/network/serverpackets/NetPingPacket.java
@@ -0,0 +1,24 @@
+package com.l2jserver.loginserver.network.serverpackets;
+
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
+
+/**
+ * @author vGodFather
+ */
+public class NetPingPacket extends L2GameServerPacket
+{
+    private final int _objId;
+   
+    public NetPingPacket(L2PcInstance cha)
+    {
+        _objId = cha.getObjectId();
+    }
+   
+    @Override
+    protected void writeImpl()
+    {
+        writeC(0xD9);
+        writeD(_objId);
+    }
+}
\ No newline at end of file

diff --git a/dist/game/data/scripts/handlers/MasterHandler.java b/dist/game/data/scripts/handlers/MasterHandler.java
index cca1f18..6c72304 100644
--- a/dist/game/data/scripts/handlers/MasterHandler.java
+++ b/dist/game/data/scripts/handlers/MasterHandler.java
@@ -276,9 +276,11 @@
 import handlers.voicedcommandhandlers.Banking;
 import handlers.voicedcommandhandlers.ChangePassword;
 import handlers.voicedcommandhandlers.ChatAdmin;
 import handlers.voicedcommandhandlers.Debug;
 import handlers.voicedcommandhandlers.GoToClanLeader;
 import handlers.voicedcommandhandlers.Lang;
+import handlers.voicedcommandhandlers.PingVCmd;
 import handlers.voicedcommandhandlers.StatsVCmd;
 import handlers.voicedcommandhandlers.Wedding;
 
@@ -591,7 +593,9 @@
         {
             // Custom Handlers
             CustomAnnouncePkPvP.class,
+            PingVCmd.class
         }
     };
    
     @Override
diff --git a/dist/game/data/scripts/handlers/voicedcommandhandlers/PingVCmd.java b/dist/game/data/scripts/handlers/voicedcommandhandlers/PingVCmd.java
new file mode 100644
index 0000000..c9a2dbe
--- /dev/null
+++ b/dist/game/data/scripts/handlers/voicedcommandhandlers/PingVCmd.java
@@ -0,0 +1,29 @@
+package handlers.voicedcommandhandlers;
+
+import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.loginserver.network.Pinger;
+
+/**
+ * @author vGodFather
+ */
+public class PingVCmd implements IVoicedCommandHandler
+{
+    private static final String[] VOICED_COMMANDS =
+    {
+        "ping",
+    };
+   
+    @Override
+    public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
+    {
+        Pinger.getPing(activeChar);
+        return true;
+    }
+   
+    @Override
+    public String[] getVoicedCommandList()
+    {
+        return VOICED_COMMANDS;
+    }
+}
\ No newline at end of file