Tópico: [L2JServer] Admin Find Dual Box
Ver um Único Post
Antigo 31-08-2011, 04:33 PM   #1 (permalink)
allanalcantara
Banido
 
Avatar de allanalcantara
 
Registrado em: Nov 2009
Localização: Fortaleza-ce
Posts: 325
Agradeceu: 125
Agradecido 203 Vezes em 82 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Enviar mensagem via Windows Live Messenger para allanalcantara Enviar mensagem via Skype para allanalcantara
Nome Real: Allan Alcântara de Alencar

Inventório de allanalcantara

Padrão Admin Find Dual Box

esse mod é via comando Admin
pelo painel.
então vamos lá ao mod.
Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
Index: data/html/admin/dualbox.htm
===================================================================
--- data/html/admin/dualbox.htm	(revision 0)
+++ data/html/admin/dualbox.htm	(revision 0)
@@ -0,0 +1,13 @@
+<html><body>
+<table width=260><tr>
+<td width=40><button value="Main" action="bypass -h admin_admin" width=40 height=15 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
+<td width=180><center>IPs with dualboxes (%multibox%): </center></td>
+<td width=40><button value="Back" action="bypass -h admin_show_characters 0" width=40 height=15 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
+</tr></table>
+<br>
+%results%
+<br><br>
+<a action="bypass -h admin_find_dualbox 3\>Find dualbox with 3+ chars</a><br1>
+<a action="bypass -h admin_find_dualbox 4\>Find dualbox with 4+ chars</a><br1>
+<a action="bypass -h admin_find_dualbox 5\>Find dualbox with 5+ chars</a><br1>
+</body></html>
\ No newline at end of file
Index: data/scripts/handlers/admincommandhandlers/AdminEditChar.java
===================================================================
--- data/scripts/handlers/admincommandhandlers/AdminEditChar.java	(revision 6101)
+++ data/scripts/handlers/admincommandhandlers/AdminEditChar.java	(working copy)
@@ -16,7 +16,12 @@
 
 import java.sql.Connection;
 import java.sql.PreparedStatement;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.logging.Logger;
@@ -82,6 +87,7 @@
 		"admin_find_character", //find a player by his name or a part of it (case-insensitive)
 		"admin_find_ip", // find all the player connections from a given IPv4 number
 		"admin_find_account", //list all the characters from an account (useful for GMs w/o DB access)
+		"admin_find_dualbox", //list all the IPs with more than 1 char logged in (dualbox)
 		"admin_save_modifications", //consider it deprecated...
 		"admin_rec", // gives recommendation points
 		"admin_settitle", // changes char title
@@ -168,6 +174,19 @@
 				listCharacters(activeChar, 0);
 			}
 		}
+		else if (command.startsWith("admin_find_dualbox"))
+		{
+			int multibox = 2;
+			try
+			{
+				String val = command.substring(19);
+				multibox = Integer.parseInt(val);
+			}
+			catch (Exception e)
+			{
+			}
+			findDualbox(activeChar, multibox);
+		}
 		else if (command.equals("admin_edit_character"))
 			editCharacter(activeChar);
 		// Karma control commands
@@ -552,13 +571,9 @@
 		String account = "N/A";
 		try
 		{
-			StringTokenizer clientinfo = new StringTokenizer(player.getClient().toString(), " ]:-[");
-			clientinfo.nextToken();
-			clientinfo.nextToken();
-			clientinfo.nextToken();
-			account = clientinfo.nextToken();
-			clientinfo.nextToken();
-			ip = clientinfo.nextToken();
+			String clientInfo = player.getClient().toString();
+			account = clientInfo.substring(clientInfo.indexOf("Account: ")+9, clientInfo.indexOf(" - IP: "));
+			ip = clientInfo.substring(clientInfo.indexOf(" - IP: ")+7,clientInfo.lastIndexOf("]"));
 		}
 		catch (Exception e)
 		{
@@ -896,4 +911,65 @@
 			throw new IllegalArgumentException("Malformed character name");
 	}
 	
+	/**
+	 * @param activeChar
+	 * @throws IllegalArgumentException
+	 */
+	private void findDualbox(L2PcInstance activeChar, int multibox) throws IllegalArgumentException {
+		Collection<L2PcInstance> allPlayers = L2World.getInstance().getAllPlayers().values();
+		L2PcInstance[] players = allPlayers.toArray(new L2PcInstance[allPlayers.size()]);
+		
+		Map<String,List<L2PcInstance>> ipMap = new HashMap<String, List<L2PcInstance>>();
+		
+		String ip = "0.0.0.0";
+		L2GameClient client;
+		
+		final Map<String, Integer> dualboxIPs = new HashMap<String, Integer>();
+		
+		for (L2PcInstance player: players)
+		{
+			client = player.getClient();
+			if (client.isDetached())
+			{
+				continue;
+			}
+			else
+			{
+				ip = client.getConnection().getSocket().getInetAddress().getHostAddress();
+				if (ipMap.get(ip) == null)
+					ipMap.put(ip, new ArrayList<L2PcInstance>());
+				ipMap.get(ip).add(player);
+				
+				if (ipMap.get(ip).size() >= multibox)
+				{
+					Integer count = dualboxIPs.get(ip);
+					if (count == null)
+						dualboxIPs.put(ip, 0);
+					else
+						dualboxIPs.put(ip, count+1);
+				}
+			}
+		}
+		
+		List<String> keys = new ArrayList<String>(dualboxIPs.keySet());
+		Collections.sort(keys, new Comparator<String>(){
+			public int compare(String left, String right){
+				return dualboxIPs.get(left).compareTo(dualboxIPs.get(right));
+			}
+		});
+		Collections.reverse(keys);
+		
+		final StringBuilder results = new StringBuilder();
+		for (String dualboxIP : keys)
+		{
+			StringUtil.append(results, "<a action=\"bypass -h admin_find_ip " + dualboxIP + "\">" + dualboxIP + " (" + dualboxIPs.get(dualboxIP) + "</a><br1>");
+		}
+		
+		NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
+		adminReply.setFile("data/html/admin/dualbox.htm");
+		adminReply.replace("%multibox%", String.valueOf(multibox));
+		adminReply.replace("%results%", results.toString());
+		activeChar.sendPacket(adminReply);
+	}
+	
 }
créditos: desconhecido.

allanalcantara está offline  
Links Patrocinados
 

Search Engine Optimization by vBSEO 3.3.0