Selaa lähdekoodia

BETA: Support for Critical Announcements by Nyaran.
* Added support for command //critannounce (with a config for add sender name before the announce).
* Added support for critannounces.txt, show critical announces on char login (Can be managed via admin panel).
* Added support for critical announces on auto_announces table (Can be managed via admin panel).

MELERIX 13 vuotta sitten
vanhempi
sitoutus
9875e85732

+ 1 - 0
L2J_DataPack_BETA/dist/game/data/critannouncements.txt

@@ -0,0 +1 @@
+http://www.l2jserver.com

+ 1 - 0
L2J_DataPack_BETA/dist/game/data/html/admin/announce.htm

@@ -9,6 +9,7 @@
 <center><table><tr>
 <td><button value="Add" action="bypass -h admin_add_announcement $new_announcement" width=90 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
 <td><button value="Reload" action="bypass -h admin_announce_announcements" width=90 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td><button value="Critical Menu" action="bypass -h admin_list_critannouncements" width=90 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
 </tr></table></center>
 %announces%
 </body></html>

+ 7 - 4
L2J_DataPack_BETA/dist/game/data/html/admin/autoannounce.htm

@@ -7,18 +7,21 @@
 <center>New autoannouncement:</center><br>
 <table width=270><tr>
 <td>Initial delay in sec:</td>
-<td><edit var="autoann_initial" width=40></td>
+<td><edit var="autoann_initial" width=50></td>
 </tr><tr>
 <td>Announce delay in sec:</td>
-<td><edit var="autoann_delay" width=40></td>
+<td><edit var="autoann_delay" width=50></td>
 </tr><tr>
 <td>Repeat (-1 for infinite):</td>
-<td><edit var="autoann_repeat" width=40></td>
+<td><edit var="autoann_repeat" width=50></td>
+</tr><tr>
+<td>Critical:</td>
+<td><combobox var="autoann_critical" list="false;true" width=50></td>
 </tr><tr>
 <td>Text:</td></tr></table>
 <multiedit var="autoann_memo" width=250 height=50><br>
 <center><table><tr>
-<td><button value="Add" action="bypass -h admin_add_autoann $autoann_initial $autoann_delay $autoann_repeat $autoann_memo" width=70 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td><button value="Add" action="bypass -h admin_add_autoann $autoann_initial $autoann_delay $autoann_repeat $autoann_critical $autoann_memo" width=70 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
 <td><button value="Reload" action="bypass -h admin_reload_autoann" width=70 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
 </tr></table></center>
 <br>

+ 15 - 0
L2J_DataPack_BETA/dist/game/data/html/admin/critannounce.htm

@@ -0,0 +1,15 @@
+<html><body>
+<table width=270><tr>
+<td width=45><button value="Main" action="bypass -h admin_admin" width=45 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td width=180><center>Announcements Menu</center></td>
+<td width=45><button value="Back" action="bypass -h admin_admin7" width=45 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td></tr>
+</table><br><br>
+<center>New critical announcement:</center>
+<center><multiedit var="new_critannouncement" width=260 height=80></center><br>
+<center><table><tr>
+<td><button value="Add" action="bypass -h admin_add_critannouncement $new_critannouncement" width=90 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td><button value="Reload" action="bypass -h admin_announce_announcements" width=90 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td><button value="Announce Menu" action="bypass -h admin_list_announcements" width=90 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+</tr></table></center>
+%critannounces%
+</body></html>

+ 3 - 2
L2J_DataPack_BETA/dist/game/data/html/admin/gm_menu.htm

@@ -47,8 +47,9 @@
 </tr></table><br>
 <center><multiedit var="new_announcement" width=250 height=50></center>
 <table width="160"><tr>
-<td><button value="Announce" action="bypass -h admin_announce_menu $new_announcement" width=80 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
-<td><button value="GM Chat" action="bypass -h admin_gmchat_menu $new_announcement" width=80 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td><button value="Announce" action="bypass -h admin_announce_menu $new_announcement" width=95 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td><button value="Crit. Announce" action="bypass -h admin_critannounce_menu $new_announcement" width=95 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td><button value="GM Chat" action="bypass -h admin_gmchat_menu $new_announcement" width=95 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
 </tr></table><br>
 <table width=270><tr>
 <td><button value="Fenrir" action="bypass -h admin_ride_wolf" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>

+ 79 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminAnnouncements.java

@@ -48,12 +48,17 @@ public class AdminAnnouncements implements IAdminCommandHandler
 	private static final String[] ADMIN_COMMANDS =
 	{
 		"admin_list_announcements",
+		"admin_list_critannouncements",
 		"admin_reload_announcements",
 		"admin_announce_announcements",
 		"admin_add_announcement",
 		"admin_del_announcement",
+		"admin_add_critannouncement",
+		"admin_del_critannouncement",
 		"admin_announce",
+		"admin_critannounce",
 		"admin_announce_menu",
+		"admin_critannounce_menu",
 		"admin_list_autoann",
 		"admin_reload_autoann",
 		"admin_add_autoann",
@@ -67,6 +72,10 @@ public class AdminAnnouncements implements IAdminCommandHandler
 		{
 			Announcements.getInstance().listAnnouncements(activeChar);
 		}
+		else if (command.equals("admin_list_critannouncements"))
+		{
+			Announcements.getInstance().listCritAnnouncements(activeChar);
+		}
 		else if (command.equals("admin_reload_announcements"))
 		{
 			Announcements.getInstance().loadAnnouncements();
@@ -76,7 +85,23 @@ public class AdminAnnouncements implements IAdminCommandHandler
 		{
 			if (Config.GM_ANNOUNCER_NAME && command.length() > 20)
 				command += " ("+activeChar.getName()+")";
-			Announcements.getInstance().handleAnnounce(command, 20);
+			Announcements.getInstance().handleAnnounce(command, 20, false);
+			AdminHelpPage.showHelpPage(activeChar, "gm_menu.htm");
+		}
+		else if (command.startsWith("admin_critannounce_menu"))
+		{
+			try
+			{
+				command = command.substring(24);
+				
+				if (Config.GM_CRITANNOUNCER_NAME && command.length() > 0)
+					command = activeChar.getName() + ": " + command;
+				Announcements.getInstance().handleAnnounce(command, 0, true);
+			}
+			catch (StringIndexOutOfBoundsException e)
+			{
+			}
+			
 			AdminHelpPage.showHelpPage(activeChar, "gm_menu.htm");
 		}
 		else if (command.equals("admin_announce_announcements"))
@@ -102,6 +127,23 @@ public class AdminAnnouncements implements IAdminCommandHandler
 				}// ignore errors
 			}
 		}
+		else if (command.startsWith("admin_add_critannouncement"))
+		{
+			// FIXME the player can send only 16 chars (if you try to send more
+			// it sends null), remove this function or not?
+			if (!command.equals("admin_add_critannouncement"))
+			{
+				try
+				{
+					String val = command.substring(27);
+					Announcements.getInstance().addCritAnnouncement(val);
+					Announcements.getInstance().listCritAnnouncements(activeChar);
+				}
+				catch (StringIndexOutOfBoundsException e)
+				{
+				}// ignore errors
+			}
+		}
 		else if (command.startsWith("admin_del_announcement"))
 		{
 			try
@@ -114,6 +156,18 @@ public class AdminAnnouncements implements IAdminCommandHandler
 			{
 			}
 		}
+		else if (command.startsWith("admin_del_critannouncement"))
+		{
+			try
+			{
+				int val = Integer.parseInt(command.substring(27));
+				Announcements.getInstance().delCritAnnouncement(val);
+				Announcements.getInstance().listCritAnnouncements(activeChar);
+			}
+			catch (StringIndexOutOfBoundsException e)
+			{
+			}
+		}
 		
 		// Command is admin announce
 		else if (command.startsWith("admin_announce"))
@@ -121,7 +175,21 @@ public class AdminAnnouncements implements IAdminCommandHandler
 			if (Config.GM_ANNOUNCER_NAME && command.length() > 15)
 				command += " ("+activeChar.getName()+")";
 			// Call method from another class
-			Announcements.getInstance().handleAnnounce(command, 15);
+			Announcements.getInstance().handleAnnounce(command, 15, false);
+		}
+		else if (command.startsWith("admin_critannounce"))
+		{
+			try
+			{
+				command = command.substring(19);
+				
+				if (Config.GM_CRITANNOUNCER_NAME && command.length() > 0)
+					command = activeChar.getName() + ": " + command;
+				Announcements.getInstance().handleAnnounce(command, 0, true);
+			}
+			catch (StringIndexOutOfBoundsException e)
+			{
+			}
 		}
 		else if (command.startsWith("admin_list_autoann"))
 		{
@@ -161,6 +229,12 @@ public class AdminAnnouncements implements IAdminCommandHandler
 				activeChar.sendMessage("Not enough parameters for adding autoannounce!");
 				return false;
 			}
+			boolean isCritical = Boolean.valueOf(st.nextToken());
+			if (!st.hasMoreTokens())
+			{
+				activeChar.sendMessage("Not enough parameters for adding autoannounce!");
+				return false;
+			}
 			TextBuilder memo = new TextBuilder();
 			while (st.hasMoreTokens())
 			{
@@ -168,7 +242,7 @@ public class AdminAnnouncements implements IAdminCommandHandler
 				memo.append(" ");
 			}
 			
-			AutoAnnounceTaskManager.getInstance().addAutoAnnounce(initial*1000, delay*1000, repeat, memo.toString().trim());
+			AutoAnnounceTaskManager.getInstance().addAutoAnnounce(initial*1000, delay*1000, repeat, memo.toString().trim(), isCritical);
 			listAutoAnnouncements(activeChar);
 		}
 		
@@ -206,9 +280,9 @@ public class AdminAnnouncements implements IAdminCommandHandler
 				memo2.append(memo0);
 				memo2.append("/n");
 			}
-			replyMSG.append("<table width=260><tr><td width=220>");
+			replyMSG.append("<table width=260><tr><td width=220><font color=\"" + (autoann.isCritical() ? "00FCFC" : "7FFCFC") + "\">");
 			replyMSG.append(memo2.toString().trim());
-			replyMSG.append("</td><td width=40><button value=\"Delete\" action=\"bypass -h admin_del_autoann ");
+			replyMSG.append("</font></td><td width=40><button value=\"Delete\" action=\"bypass -h admin_del_autoann ");
 			replyMSG.append(i);
 			replyMSG.append("\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table>");
 		}

+ 5 - 0
L2J_DataPack_BETA/dist/sql/game/admin_command_access_rights.sql

@@ -36,12 +36,17 @@ INSERT IGNORE INTO `admin_command_access_rights` VALUES
 
 -- ADMIN ANNOUNCEMENTS
 ('admin_list_announcements',1,'false'),
+('admin_list_critannouncements',1,'false'),
 ('admin_reload_announcements',1,'false'),
 ('admin_announce_announcements',1,'false'),
 ('admin_add_announcement',1,'false'),
 ('admin_del_announcement',1,'false'),
+('admin_add_critannouncement',1,'false'),
+('admin_del_critannouncement',1,'false'),
 ('admin_announce',1,'false'),
+('admin_critannounce',1,'false'),
 ('admin_announce_menu',1,'false'),
+('admin_critannounce_menu',1,'false'),
 ('admin_list_autoann',1,'false'),
 ('admin_reload_autoann',1,'false'),
 ('admin_add_autoann',1,'false'),

+ 1 - 0
L2J_DataPack_BETA/dist/sql/game/auto_announcements.sql

@@ -4,5 +4,6 @@ CREATE TABLE IF NOT EXISTS `auto_announcements` (
   `delay` BIGINT(20) NOT NULL,
   `cycle` INT(11) NOT NULL,
   `memo` TEXT DEFAULT NULL,
+  `isCritical` enum('true','false') NOT NULL DEFAULT 'false',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

+ 1 - 0
L2J_DataPack_BETA/dist/sql/game/updates/20111007date.sql

@@ -0,0 +1 @@
+ALTER TABLE `auto_announcements` ADD `isCritical` enum('true','false') NOT NULL DEFAULT 'false' AFTER `memo`;