Browse Source

BETA: Some useful utils. I hope you find them as useful as I did :)

Nik 12 years ago
parent
commit
bfcdd38dbb
1 changed files with 106 additions and 0 deletions
  1. 106 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/util/Util.java

+ 106 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/util/Util.java

@@ -18,14 +18,18 @@ import java.io.File;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 
 import javolution.text.TextBuilder;
+import javolution.util.FastList;
 
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
+import com.l2jserver.gameserver.network.serverpackets.ShowBoard;
 import com.l2jserver.util.file.filter.ExtFilter;
 
 /**
@@ -472,4 +476,106 @@ public final class Util
 		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 		return dateFormat.format(date.getTime());
 	}
+	
+	/**
+	 * Sends the given html to the player.
+	 * @param activeChar
+	 * @param html
+	 */
+	public static void sendHtml(L2PcInstance activeChar, String html)
+	{
+		NpcHtmlMessage npcHtml = new NpcHtmlMessage(0);
+		npcHtml.setHtml(html);
+		activeChar.sendPacket(npcHtml);
+	}
+	
+	/**
+	 * Sends the html using the community board window.
+	 * @param activeChar
+	 * @param html
+	 */
+	public static void sendCBHtml(L2PcInstance activeChar, String html)
+	{
+		sendCBHtml(activeChar, html, "");
+	}
+	
+	/**
+	 * Sends the html using the community board window.
+	 * @param activeChar
+	 * @param html
+	 * @param fillMultiEdit fills the multiedit window (if any) inside the community board.
+	 */
+	public static void sendCBHtml(L2PcInstance activeChar, String html, String fillMultiEdit)
+	{
+		if (activeChar == null)
+			return;
+		
+		if (html != null)
+		{
+			activeChar.clearBypass();
+			int len = html.length();
+			for (int i = 0; i < len; i++)
+			{
+				int start = html.indexOf("\"bypass ", i);
+				int finish = html.indexOf("\"", start + 1);
+				if (start < 0 || finish < 0)
+					break;
+				
+				if (html.substring(start + 8, start + 10).equals("-h"))
+					start += 11;
+				else
+					start += 8;
+				
+				i = finish;
+				int finish2 = html.indexOf("$", start);
+				if (finish2 < finish && finish2 > 0)
+					activeChar.addBypass2(html.substring(start, finish2).trim());
+				else
+					activeChar.addBypass(html.substring(start, finish).trim());
+			}
+		}
+		
+		if (fillMultiEdit != null)
+		{
+			activeChar.sendPacket(new ShowBoard(html, "1001"));
+			fillMultiEditContent(activeChar, fillMultiEdit);
+		}
+		else
+		{
+			activeChar.sendPacket(new ShowBoard(null, "101"));
+			activeChar.sendPacket(new ShowBoard(html, "101"));
+			activeChar.sendPacket(new ShowBoard(null, "102"));
+			activeChar.sendPacket(new ShowBoard(null, "103"));
+		}
+	}
+	
+	/**
+	*
+	* Fills the community board's multiedit window with text. Must send after sendCBHtml
+	* @param activeChar 
+	* @param text 
+	*/
+	public static void fillMultiEditContent(L2PcInstance activeChar, String text)
+	{
+		text = text.replaceAll("<br>", "\n");
+		List<String> arg = new FastList<>();
+		arg.add("0");
+		arg.add("0");
+		arg.add("0");
+		arg.add("0");
+		arg.add("0");
+		arg.add("0");
+		arg.add(activeChar.getName());
+		arg.add(Integer.toString(activeChar.getObjectId()));
+		arg.add(activeChar.getAccountName());
+		arg.add("9");
+		arg.add(" ");
+		arg.add(" ");
+		arg.add(text);
+		arg.add("0");
+		arg.add("0");
+		arg.add("0");
+		arg.add("0");
+		activeChar.sendPacket(new ShowBoard(arg));
+	}
 }