Noticias:

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

Menú Principal

Evento Survey Mod (Preguntas)

Iniciado por Swarlog, Ago 06, 2022, 02:29 AM

Tema anterior - Siguiente tema

Swarlog


Este mod sirve para hacer una encuesta a todos los Players Online. Les pones dos o mas respuestas y votan por la respuesta que consideren.

Index: data/xml/admin_commands_rights.xml
===================================================================
--- data/xml/admin_commands_rights.xml (revision 9)
+++ data/xml/admin_commands_rights.xml (working copy)
@@ -362,4 +362,22 @@
  <aCar name="admin_zone_visual" accessLevel="1" />
  <aCar name="admin_zone_visual_clear" accessLevel="1" />
 
+ <!-- ADMIN SURVEY -->
+ <aCar name="admin_survey_start" accessLevel="1" />
+ <aCar name="admin_survey_results" accessLevel="1" />
+ <aCar name="admin_opmore" accessLevel="1" />
+ <aCar name="admin_opless" accessLevel="1" />
+ <aCar name="admin_survey_run1" accessLevel="1" />
+ <aCar name="admin_survey_run2" accessLevel="1" />
+ <aCar name="admin_survey_run3" accessLevel="1" />
+ <aCar name="admin_survey_run4" accessLevel="1" />
+ <aCar name="admin_survey_qset" accessLevel="1" />
+ <aCar name="admin_survey_ans1set" accessLevel="1" />
+ <aCar name="admin_survey_ans2set" accessLevel="1" />
+ <aCar name="admin_survey_ans3set" accessLevel="1" />
+ <aCar name="admin_survey_ans4set" accessLevel="1" />
+ <aCar name="admin_survey_ans5set" accessLevel="1" />
+ <aCar name="admin_survey_end" accessLevel="1" />
+ <aCar name="admin_survey_results" accessLevel="1" />
+
 </list>
\ No newline at end of file

Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java (revision 9)
+++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
@@ -72,6 +72,7 @@
 import net.sf.l2j.gameserver.handler.ItemHandler;
 import net.sf.l2j.gameserver.handler.SkillHandler;
 import net.sf.l2j.gameserver.handler.UserCommandHandler;
+import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
 import net.sf.l2j.gameserver.idfactory.IdFactory;
 import net.sf.l2j.gameserver.instancemanager.AuctionManager;
 import net.sf.l2j.gameserver.instancemanager.AutoSpawnManager;
@@ -294,6 +295,7 @@
  _log.config("ItemHandler: Loaded " + ItemHandler.getInstance().size() + " handlers.");
  _log.config("SkillHandler: Loaded " + SkillHandler.getInstance().size() + " handlers.");
  _log.config("UserCommandHandler: Loaded " + UserCommandHandler.getInstance().size() + " handlers.");
+ _log.config("VoicedCommandHandler: Loaded " + VoicedCommandHandler.getInstance().size() + " handlers.");
 
  if (Config.ALLOW_WEDDING)
  CoupleManager.getInstance();
Index: java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (revision 9)
+++ java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (working copy)
@@ -62,6 +62,7 @@
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSiege;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSkill;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSpawn;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSurvey;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminTarget;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminTeleport;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminZone;
@@ -122,6 +123,7 @@
  registerAdminCommandHandler(new AdminSiege());
  registerAdminCommandHandler(new AdminSkill());
  registerAdminCommandHandler(new AdminSpawn());
+ registerAdminCommandHandler(new AdminSurvey());
  registerAdminCommandHandler(new AdminTarget());
  registerAdminCommandHandler(new AdminTeleport());
  registerAdminCommandHandler(new AdminZone());
Index: java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java (revision 0)
+++ java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java (revision 0)
@@ -0,0 +1,34 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package net.sf.l2j.gameserver.handler;
+
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+public interface IVoicedCommandHandler
+{
+
+ /**
+ * this is the worker method that is called when someone uses an admin command.
+ * @param activeChar
+ * @param command
+ * @param target
+ * @return command success
+ */
+
+ public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target);
+
+ public String[] getVoicedCommandList();
+
+}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java (revision 0)
+++ java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java (revision 0)
@@ -0,0 +1,76 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package net.sf.l2j.gameserver.handler;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.handler.voicedcommandhandler.Survey;
+
+public class VoicedCommandHandler
+{
+ private static Logger _log = Logger.getLogger(VoicedCommandHandler.class.getName());
+ private Map<Integer, IVoicedCommandHandler> _datatable = new HashMap<>();
+
+ public static VoicedCommandHandler getInstance()
+ {
+ return SingletonHolder._instance;
+ }
+
+ protected VoicedCommandHandler()
+ {
+ _datatable = new HashMap<>();
+
+ registerVoicedCommandHandler(new Survey());
+ }
+
+ public void registerVoicedCommandHandler(IVoicedCommandHandler handler)
+ {
+ String[] ids = handler.getVoicedCommandList();
+ for (String id : ids)
+ {
+ if (Config.DEBUG)
+ _log.fine("Adding handler for command " + id);
+ _datatable.put(id.hashCode(), handler);
+ }
+ }
+
+ public IVoicedCommandHandler getVoicedCommandHandler(String voicedCommand)
+ {
+ String command = voicedCommand;
+
+ if (voicedCommand.indexOf(" ") != -1)
+ command = voicedCommand.substring(0, voicedCommand.indexOf(" "));
+
+ if (Config.DEBUG)
+ _log.fine("getting handler for command: " + command + " -> " + (_datatable.get(command.hashCode()) != null));
+ return _datatable.get(command.hashCode());
+ }
+
+ /**
+ * @return
+ */
+ public int size()
+ {
+ return _datatable.size();
+ }
+
+ private static class SingletonHolder
+ {
+ protected static final VoicedCommandHandler _instance = new VoicedCommandHandler();
+ }
+}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSurvey.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSurvey.java (revision 0)
+++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSurvey.java (revision 0)
@@ -0,0 +1,778 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package net.sf.l2j.gameserver.handler.admincommandhandlers;
+
+import java.util.Collection;
+import java.util.StringTokenizer;
+
+import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
+import net.sf.l2j.gameserver.model.L2World;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.network.clientpackets.Say2;
+import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
+import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
+import net.sf.l2j.gameserver.util.Broadcast;
+
+/**
+ * @author Elfocrash
+ * @Author Toxico
+ */
+
+public class AdminSurvey implements IAdminCommandHandler
+{
+ public static int options = 2;
+ public static int mode = 0;
+ public static boolean running = false;
+ private static boolean qset = false;
+ private static boolean ans1set = false;
+ private static boolean ans2set = false;
+ private static boolean ans3set = false;
+ private static boolean ans4set = false;
+ private static boolean ans5set = false;
+ public static String quest = "";
+ public static String ans1 = "";
+ public static String ans2 = "";
+ public static String ans3 = "";
+ public static String ans4 = "";
+ public static String ans5 = "";
+ public static int ans1_vote_count = 0;
+ public static int ans2_vote_count = 0;
+ public static int ans3_vote_count = 0;
+ public static int ans4_vote_count = 0;
+ public static int ans5_vote_count = 0;
+
+ private static final String[] ADMIN_COMMANDS =
+ {
+ "admin_survey_start",
+ "admin_survey_results",
+ "admin_opmore",
+ "admin_opless",
+ "admin_survey_run1",
+ "admin_survey_run2",
+ "admin_survey_run3",
+ "admin_survey_run4",
+ "admin_survey_qset",
+ "admin_survey_ans1set",
+ "admin_survey_ans2set",
+ "admin_survey_ans3set",
+ "admin_survey_ans4set",
+ "admin_survey_ans5set",
+ "admin_survey_end",
+ "admin_survey_results"
+ };
+
+ @Override
+ public boolean useAdminCommand(String command, L2PcInstance activeChar)
+ {
+ if (command.startsWith("admin_survey_start"))
+ startHtml(activeChar);
+
+ if (command.startsWith("admin_survey_results"))
+ resultsHtml(activeChar);
+
+ if (command.startsWith("admin_survey_end"))
+ {
+ int moreVotes = ans1_vote_count;
+ if (moreVotes < ans2_vote_count)
+ {
+ moreVotes = ans2_vote_count;
+ }
+ if (moreVotes < ans3_vote_count)
+ {
+ moreVotes = ans3_vote_count;
+ }
+ if (moreVotes < ans4_vote_count)
+ {
+ moreVotes = ans4_vote_count;
+ }
+ if (moreVotes < ans5_vote_count)
+ {
+ moreVotes = ans5_vote_count;
+ }
+
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "The survey session is over.Thanks everyone for voting."));
+ if (moreVotes == ans1_vote_count)
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "The answer " + ans1 + " won the survey with " + ans1_vote_count + " votes on the question : " + quest + "."));
+ if (moreVotes == ans2_vote_count)
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "The answer " + ans2 + " won the survey with " + ans2_vote_count + " votes on the question : " + quest + "."));
+ if (moreVotes == ans3_vote_count)
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "The answer " + ans3 + " won the survey with " + ans3_vote_count + " votes on the question : " + quest + "."));
+ if (moreVotes == ans4_vote_count)
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "The answer " + ans4 + " won the survey with " + ans4_vote_count + " votes on the question : " + quest + "."));
+ if (moreVotes == ans5_vote_count)
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "The answer " + ans5 + " won the survey with " + ans5_vote_count + " votes on the question : " + quest + "."));
+
+ running = false;
+ resultsHtml(activeChar);
+ quest = "";
+ ans1 = "";
+ ans2 = "";
+ ans3 = "";
+ ans4 = "";
+ ans5 = "";
+ mode = 0;
+ ans1_vote_count = 0;
+ ans2_vote_count = 0;
+ ans3_vote_count = 0;
+ ans4_vote_count = 0;
+ ans5_vote_count = 0;
+ setQset(false);
+ setAns1set(false);
+ setAns2set(false);
+ setAns3set(false);
+ setAns4set(false);
+ setAns5set(false);
+
+ Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().values();
+ for (L2PcInstance onlinePlayers : pls)
+ {
+ onlinePlayers.setHasVotedSurvey(false);
+ }
+
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "The survey session is over.Thanks everyone for voting."));
+ }
+
+ if (command.startsWith("admin_opmore"))
+ if (options <= 4)
+ {
+ options++;
+ startHtml(activeChar);
+ }
+ else
+ {
+ return false;
+ }
+
+ if (command.startsWith("admin_opless"))
+ if (options >= 3)
+ {
+ options--;
+ startHtml(activeChar);
+ }
+ else
+ {
+ return false;
+ }
+
+ if (command.startsWith("admin_survey_qset"))
+ {
+ if (isQset())
+ {
+ quest = "";
+ setQset(false);
+ startHtml(activeChar);
+ }
+ else if (!isQset())
+ {
+ StringTokenizer s = new StringTokenizer(command);
+ s.nextToken();
+
+ try
+ {
+
+ while (s.hasMoreTokens())
+ quest = quest + s.nextToken() + " ";
+ setQset(true);
+ startHtml(activeChar);
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ if (command.startsWith("admin_survey_ans1set"))
+ {
+ if (isAns1set())
+ {
+ ans1 = "";
+ setAns1set(false);
+ startHtml(activeChar);
+ }
+ else if (!isAns1set())
+ {
+ StringTokenizer s = new StringTokenizer(command);
+ s.nextToken();
+
+ try
+ {
+
+ while (s.hasMoreTokens())
+ ans1 = ans1 + s.nextToken() + " ";
+ setAns1set(true);
+ startHtml(activeChar);
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ if (command.startsWith("admin_survey_ans2set"))
+ {
+ if (isAns2set())
+ {
+ ans2 = "";
+ setAns2set(false);
+ startHtml(activeChar);
+ }
+ else if (!isAns2set())
+ {
+ StringTokenizer s = new StringTokenizer(command);
+ s.nextToken();
+
+ try
+ {
+
+ while (s.hasMoreTokens())
+ ans2 = ans2 + s.nextToken() + " ";
+ setAns2set(true);
+ startHtml(activeChar);
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ if (command.startsWith("admin_survey_ans3set"))
+ {
+ if (isAns3set())
+ {
+ ans3 = "";
+ setAns3set(false);
+ startHtml(activeChar);
+ }
+ else if (!isAns3set())
+ {
+ StringTokenizer s = new StringTokenizer(command);
+ s.nextToken();
+
+ try
+ {
+
+ while (s.hasMoreTokens())
+ ans3 = ans3 + s.nextToken() + " ";
+ setAns3set(true);
+ startHtml(activeChar);
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+ if (command.startsWith("admin_survey_ans4set"))
+ {
+ if (isAns4set())
+ {
+ ans4 = "";
+ setAns4set(false);
+ startHtml(activeChar);
+ }
+ else if (!isAns4set())
+ {
+ StringTokenizer s = new StringTokenizer(command);
+ s.nextToken();
+
+ try
+ {
+
+ while (s.hasMoreTokens())
+ ans4 = ans4 + s.nextToken() + " ";
+ setAns4set(true);
+ startHtml(activeChar);
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ if (command.startsWith("admin_survey_ans5set"))
+ {
+ if (isAns5set())
+ {
+ ans5 = "";
+ setAns5set(false);
+ startHtml(activeChar);
+ }
+ else if (!isAns5set())
+ {
+ StringTokenizer s = new StringTokenizer(command);
+ s.nextToken();
+
+ try
+ {
+
+ while (s.hasMoreTokens())
+ ans5 = ans5 + s.nextToken() + " ";
+ setAns5set(true);
+ startHtml(activeChar);
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ if (command.startsWith("admin_survey_run1"))
+ {
+ if (running == true)
+ {
+ activeChar.sendMessage("A survey is already in progres.");
+ return false;
+ }
+ if (!isQset() || !isAns1set() || !isAns2set())
+ {
+ activeChar.sendMessage("You have to set all the fields before you start the survey");
+ return false;
+ }
+ mode = 1;
+ running = true;
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "Admin started a new survey with main question " + quest + ". Use .survey to vote."));
+
+ }
+
+ if (command.startsWith("admin_survey_run2"))
+ {
+ if (running == true)
+ {
+ activeChar.sendMessage("A survey is already in progress");
+ return false;
+
+ }
+ if (!isQset() || !isAns1set() || !isAns2set() || !isAns3set())
+ {
+ activeChar.sendMessage("You have to set all the fields before you start the survey");
+ return false;
+ }
+ mode = 2;
+ running = true;
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "Admin started a new survey with main question " + quest + ". Use .survey to vote."));
+
+ }
+
+ if (command.startsWith("admin_survey_run3"))
+ {
+ if (running == true)
+ {
+ activeChar.sendMessage("A survey is already in progress");
+ return false;
+
+ }
+
+ if (!isQset() || !isAns1set() || !isAns2set() || !isAns3set() || !isAns4set())
+ {
+ activeChar.sendMessage("You have to set all the fields before you start the survey");
+ return false;
+ }
+ mode = 3;
+ running = true;
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "Admin started a new survey with main question " + quest + ". Use .survey to vote."));
+
+ }
+
+ if (command.startsWith("admin_survey_run4"))
+ {
+ if (running == true)
+ {
+ activeChar.sendMessage("A survey is already in progress");
+ return false;
+
+ }
+
+ if (!isQset() || !isAns1set() || !isAns2set() || !isAns3set() || !isAns4set() || !isAns5set())
+ {
+ activeChar.sendMessage("You have to set all the fields before you start the survey");
+ return false;
+ }
+ mode = 4;
+ running = true;
+ Broadcast.toAllOnlinePlayers(new CreatureSay(0, Say2.ANNOUNCEMENT, "Survey", "Admin started a new survey with main question " + quest + ". Use .survey to vote."));
+
+ }
+
+ return true;
+ }
+
+ @Override
+ public String[] getAdminCommandList()
+ {
+ return ADMIN_COMMANDS;
+ }
+
+ private static void startHtml(L2PcInstance activeChar)
+ {
+ NpcHtmlMessage nhm = new NpcHtmlMessage(5);
+ StringBuilder tb = new StringBuilder("");
+
+ tb.append("<html><head><title>Start Survey form</title></head><body>");
+ tb.append("<center>");
+ tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">");
+ tb.append("<tr>");
+ tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>");
+ tb.append("<td valign=\"top\"><font color=\"FF6600\">Start a Survey</font>");
+ tb.append("<br1><font color=\"FF6600\">" + activeChar.getName() + "</font>, use this form in order to start a survey.<br1></td>");
+ tb.append("</tr>");
+ tb.append("</table>");
+ tb.append("</center>");
+ tb.append("<center>");
+ if (!isQset())
+ {
+ tb.append("<font color=\"FF6600\">Type in the main question of the survey.</font><br>");
+ tb.append("<table border=\"0\" width=\"250\" height=\"16\" bgcolor=\"000000\">");
+ tb.append("<tr><td><multiedit var=\"quest\" width=170 height=20></td><td><a action=\"bypass -h admin_survey_qset $quest\">Save</a></td></tr></table>");
+ }
+ if (isQset())
+ {
+ tb.append("<font color=\"FF6600\">The question set is:<br>");
+ tb.append("<table border=\"0\" width=\"250\" height=\"16\" bgcolor=\"000000\">");
+ tb.append("<tr><td><font color=\"FF0000\">" + quest + "</font></td><td><a action=\"bypass -h admin_survey_qset\">Edit</a></td></tr></table>");
+ }
+ tb.append("<br><font color=\"FF6600\">Possible answers.");
+ tb.append("<table border=\"0\" width=\"70\" height=\"16\" bgcolor=\"000000\">");
+ tb.append("<tr>");
+ tb.append("<td width=\"52\">More</td>");
+ tb.append("<td width=\"16\"><button action=\"bypass -h admin_opmore\" width=16 height=16 back=\"L2UI_CH3.upbutton_down\" fore=\"L2UI_CH3.upbutton\"></td>");
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td width=\"52\">Less</td>");
+ tb.append("<td width=\"16\"><button action=\"bypass -h admin_opless\" width=16 height=16 back=\"L2UI_CH3.downbutton_down\" fore=\"L2UI_CH3.downbutton_down\"></td>");
+ tb.append("</tr>");
+ tb.append("</table>");
+ tb.append("<table width=\"300\" height=\"20\">");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 1:</td>");
+ if (!isAns1set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><multiedit var=\"ans1\" width=150 height=16></td>");
+ tb.append("<td><a action=\"bypass -h admin_survey_ans1set $ans1\">Save</a></td>");
+ }
+ else if (isAns1set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + ans1 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans1set\">Edit</a></td>");
+ }
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 2:</td>");
+ if (!isAns2set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><multiedit var=\"ans2\" width=150 height=16></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans2set $ans2\">Save</a></td>");
+ }
+ else if (isAns2set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + ans2 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans2set\">Edit</a></td>");
+ }
+ tb.append("</tr>");
+ if (options == 3)
+ {
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 3:</td>");
+ if (!isAns3set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><multiedit var=\"ans3\" width=150 height=16></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans3set $ans3\">Save</a></td>");
+ }
+ else if (isAns3set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + ans3 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans3set\">Edit</a></td>");
+ }
+ tb.append("</tr>");
+ }
+ if (options == 4)
+ {
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 3:</td>");
+ if (!isAns3set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><multiedit var=\"ans3\" width=150 height=16></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans3set $ans3\">Save</a></td>");
+ }
+ else if (isAns3set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + ans3 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans3set\">Edit</a></td>");
+ }
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 4:</td>");
+ if (!isAns4set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><multiedit var=\"ans4\" width=150 height=16></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans4set $ans4\">Save</a></td>");
+ }
+ else if (isAns4set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + ans4 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans4set\">Edit</a></td>");
+ }
+ tb.append("</tr>");
+ }
+ if (options == 5)
+ {
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 3:</td>");
+ if (!isAns3set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><multiedit var=\"ans3\" width=150 height=16></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans3set $ans3\">Save</a></td>");
+ }
+ else if (isAns3set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + ans3 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans3set\">Edit</a></td>");
+ }
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 4:</td>");
+ if (!isAns4set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><multiedit var=\"ans4\" width=150 height=16></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans4set $ans4\">Save</a></td>");
+ }
+ else if (isAns4set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + ans4 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans4set\">Edit</a></td>");
+ }
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 5:</td>");
+ if (!isAns5set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><multiedit var=\"ans5\" width=150 height=16></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans5set $ans5\">Save</a></td>");
+ }
+ else if (isAns5set())
+ {
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + ans5 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h admin_survey_ans5set\">Edit</a></td>");
+ }
+ tb.append("</tr>");
+ }
+ tb.append("</table><br>");
+ if (options == 2)
+ tb.append("<button value=\"Start the survey\" action=\"bypass -h admin_survey_run1\" width=150 height=22 back=\"L2UI_Ch3.bigbutton3_over\" fore=\"L2UI_Ch3.bigbutton3\">");
+ if (options == 3)
+ tb.append("<button value=\"Start the survey\" action=\"bypass -h admin_survey_run2\" width=150 height=22 back=\"L2UI_Ch3.bigbutton3_over\" fore=\"L2UI_Ch3.bigbutton3\">");
+ if (options == 4)
+ tb.append("<button value=\"Start the survey\" action=\"bypass -h admin_survey_run3\" width=150 height=22 back=\"L2UI_Ch3.bigbutton3_over\" fore=\"L2UI_Ch3.bigbutton3\">");
+ if (options == 5)
+ tb.append("<button value=\"Start the survey\" action=\"bypass -h admin_survey_run4\" width=150 height=22 back=\"L2UI_Ch3.bigbutton3_over\" fore=\"L2UI_Ch3.bigbutton3\">");
+ tb.append("</center>");
+ tb.append("</body></html>");
+
+ nhm.setHtml(tb.toString());
+ activeChar.sendPacket(nhm);
+ }
+
+ private static void resultsHtml(L2PcInstance activeChar)
+ {
+ NpcHtmlMessage nhm = new NpcHtmlMessage(5);
+ StringBuilder tb = new StringBuilder("");
+
+ tb.append("<html><head><title>Survey form</title></head><body>");
+ tb.append("<center>");
+ tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">");
+ tb.append("<tr>");
+ tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>");
+ tb.append("<td valign=\"top\"><font color=\"FF6600\">Survey</font>");
+ tb.append("<br1><font color=\"FF6600\">" + activeChar.getName() + "</font>, here are the survey's results.<br1></td>");
+ tb.append("</tr>");
+ tb.append("</table>");
+ tb.append("</center>");
+ tb.append("<center>");
+ tb.append("<font color=\"FF6600\">The question set is:<br>");
+ tb.append("<font color=\"FF0000\">" + AdminSurvey.quest + "</font></center>");
+ tb.append("<br><font color=\"FF6600\">Choose an answer.");
+ tb.append("<table width=\"300\" height=\"20\">");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 1:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans1 + "</font></td>");
+ tb.append("<td align=\"center\"><font color=\"FF0000\">" + AdminSurvey.ans1_vote_count + "</font></td>");
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 2:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans2 + "</font></td>");
+ tb.append("<td align=\"center\"><font color=\"FF0000\">" + AdminSurvey.ans2_vote_count + "</font></td>");
+ tb.append("</tr>");
+ if (mode == 2)
+ {
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 3:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans3 + "</font></td>");
+ tb.append("<td align=\"center\"><font color=\"FF0000\">" + AdminSurvey.ans3_vote_count + "</font></td>");
+
+ tb.append("</tr>");
+ }
+ if (mode == 3)
+ {
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 3:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans3 + "</font></td>");
+ tb.append("<td align=\"center\"><font color=\"FF0000\">" + AdminSurvey.ans3_vote_count + "</font></td>");
+
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 4:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans4 + "</font></td>");
+ tb.append("<td align=\"center\"><font color=\"FF0000\">" + AdminSurvey.ans4_vote_count + "</font></td>");
+
+ tb.append("</tr>");
+ }
+ if (mode == 4)
+ {
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 3:</td>");
+
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans3 + "</font></td>");
+ tb.append("<td align=\"center\"><font color=\"FF0000\">" + AdminSurvey.ans3_vote_count + "</font></td>");
+
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 4:</td>");
+
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans4 + "</font></td>");
+ tb.append("<td align=\"center\"><font color=\"FF0000\">" + AdminSurvey.ans4_vote_count + "</font></td>");
+
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 5:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans5 + "</font></td>");
+ tb.append("<td align=\"center\"><font color=\"FF0000\">" + AdminSurvey.ans5_vote_count + "</font></td>");
+
+ tb.append("</tr>");
+ }
+ tb.append("</table><br>");
+ if (running == true)
+ tb.append("<center><button value=\"End the survey\" action=\"bypass -h admin_survey_end\" width=150 height=22 back=\"L2UI_Ch3.bigbutton3_over\" fore=\"L2UI_Ch3.bigbutton3\"></center>");
+ tb.append("</body></html>");
+
+ nhm.setHtml(tb.toString());
+ activeChar.sendPacket(nhm);
+ }
+
+ /**
+ * @return the qset
+ */
+ public static boolean isQset()
+ {
+ return qset;
+ }
+
+ /**
+ * @param qset the qset to set
+ */
+ public static void setQset(boolean qset)
+ {
+ AdminSurvey.qset = qset;
+ }
+
+ /**
+ * @return the ans1set
+ */
+ public static boolean isAns1set()
+ {
+ return ans1set;
+ }
+
+ /**
+ * @param ans1set the ans1set to set
+ */
+ public static void setAns1set(boolean ans1set)
+ {
+ AdminSurvey.ans1set = ans1set;
+ }
+
+ /**
+ * @return the ans2set
+ */
+ public static boolean isAns2set()
+ {
+ return ans2set;
+ }
+
+ /**
+ * @param ans2set the ans2set to set
+ */
+ public static void setAns2set(boolean ans2set)
+ {
+ AdminSurvey.ans2set = ans2set;
+ }
+
+ /**
+ * @return the ans3set
+ */
+ public static boolean isAns3set()
+ {
+ return ans3set;
+ }
+
+ /**
+ * @param ans3set the ans3set to set
+ */
+ public static void setAns3set(boolean ans3set)
+ {
+ AdminSurvey.ans3set = ans3set;
+ }
+
+ /**
+ * @return the ans4set
+ */
+ public static boolean isAns4set()
+ {
+ return ans4set;
+ }
+
+ /**
+ * @param ans4set the ans4set to set
+ */
+ public static void setAns4set(boolean ans4set)
+ {
+ AdminSurvey.ans4set = ans4set;
+ }
+
+ /**
+ * @return the ans5set
+ */
+ public static boolean isAns5set()
+ {
+ return ans5set;
+ }
+
+ /**
+ * @param ans5set the ans5set to set
+ */
+ public static void setAns5set(boolean ans5set)
+ {
+ AdminSurvey.ans5set = ans5set;
+ }
+}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java (revision 9)
+++ java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java (working copy)
@@ -14,7 +14,12 @@
  */
 package net.sf.l2j.gameserver.handler.chathandlers;
 
+import java.util.StringTokenizer;
+
+import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.handler.IChatHandler;
+import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
+import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
 import net.sf.l2j.gameserver.model.BlockList;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
@@ -33,14 +38,52 @@
  {
  if (!FloodProtectors.performAction(activeChar.getClient(), Action.GLOBAL_CHAT))
  return;
+ boolean vcd_used = false;
+ if (text.startsWith("."))
 
- final CreatureSay cs = new CreatureSay(activeChar.getObjectId(), type, activeChar.getName(), text);
- for (L2PcInstance player : activeChar.getKnownList().getKnownTypeInRadius(L2PcInstance.class, 1250))
  {
- if (!BlockList.isBlocked(player, activeChar))
- player.sendPacket(cs);
+ StringTokenizer st = new StringTokenizer(text);
+ IVoicedCommandHandler vch;
+ String command = "";
+
+ if (st.countTokens() > 1)
+ {
+ command = st.nextToken().substring(1);
+ params = text.substring(command.length() + 2);
+ vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(command);
+ }
+ else
+ {
+ command = text.substring(1);
+ if (Config.DEBUG)
+ System.out.println("Command: " + command);
+ vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(command);
+ }
+
+ if (vch != null)
+ {
+ vch.useVoicedCommand(command, activeChar, command);
+ vcd_used = true;
+ }
+ else
+ {
+ if (Config.DEBUG)
+ System.out.println("No handler registered for bypass '" + command + "'");
+ vcd_used = false;
+ }
  }
- activeChar.sendPacket(cs);
+ if (!vcd_used)
+ {
+ final CreatureSay cs = new CreatureSay(activeChar.getObjectId(), type, activeChar.getName(), text);
+
+ for (L2PcInstance player : activeChar.getKnownList().getKnownType(L2PcInstance.class))
+ {
+ if (activeChar.isInsideRadius(player, 1250, false, true) && !BlockList.isBlocked(player, activeChar))
+ player.sendPacket(cs);
+ }
+
+ activeChar.sendPacket(cs);
+ }
  }
 
  @Override
Index: java/net/sf/l2j/gameserver/handler/voicedcommandhandler/Survey.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/voicedcommandhandler/Survey.java (revision 0)
+++ java/net/sf/l2j/gameserver/handler/voicedcommandhandler/Survey.java (revision 0)
@@ -0,0 +1,153 @@
+/* This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.handler.voicedcommandhandler;
+
+import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSurvey;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
+
+/**
+ * @author Elfocrash
+ * @author Toxico
+ */
+public class Survey implements IVoicedCommandHandler
+{
+ private static final String[] VOICED_COMMANDS =
+ {
+ "survey"
+ };
+
+ @Override
+ public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
+ {
+ if (command.equals("survey"))
+ {
+ if (AdminSurvey.running == false)
+ {
+ activeChar.sendMessage("There is no survey running now");
+ return false;
+ }
+
+ if (activeChar.hasVotedSurvey())
+ {
+ activeChar.sendMessage("You already voted for that survey.");
+ return false;
+ }
+
+ if (AdminSurvey.running == true)
+ mainHtml(activeChar);
+ }
+
+ return true;
+ }
+
+ private static void mainHtml(L2PcInstance activeChar)
+ {
+ NpcHtmlMessage nhm = new NpcHtmlMessage(5);
+ StringBuilder tb = new StringBuilder("");
+
+ tb.append("<html><head><title>Survey form</title></head><body>");
+ tb.append("<center>");
+ tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">");
+ tb.append("<tr>");
+ tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>");
+ tb.append("<td valign=\"top\"><font color=\"FF6600\">Survey</font>");
+ tb.append("<br1><font color=\"FF6600\">" + activeChar.getName() + "</font>, use this form in order to give us feedback.<br1></td>");
+ tb.append("</tr>");
+ tb.append("</table>");
+ tb.append("</center>");
+ tb.append("<center>");
+
+ tb.append("<font color=\"FF6600\">The question set is:<br>");
+ tb.append("<font color=\"FF0000\">" + AdminSurvey.quest + "</font>");
+ tb.append("<br><font color=\"FF6600\">Choose an answer.");
+ tb.append("<table width=\"300\" height=\"20\">");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 1:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans1 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h survey_vote1\">Vote</a></td>");
+
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 2:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans2 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h survey_vote2\">Vote</a></td>");
+
+ tb.append("</tr>");
+ if (AdminSurvey.mode == 2)
+ {
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 3:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans3 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h survey_vote3\">Vote</a></td>");
+
+ tb.append("</tr>");
+ }
+ if (AdminSurvey.mode == 3)
+ {
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 3:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans3 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h survey_vote3\">Vote</a></td>");
+
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 4:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans4 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h survey_vote4\">Vote</a></td>");
+
+ tb.append("</tr>");
+ }
+ if (AdminSurvey.mode == 4)
+ {
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 3:</td>");
+
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans3 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h survey_vote3\">Vote</a></td>");
+
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 4:</td>");
+
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans4 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h survey_vote4\">Vote</a></td>");
+
+ tb.append("</tr>");
+ tb.append("<tr>");
+ tb.append("<td align=\"center\" width=\"40\">Answer 5:</td>");
+ tb.append("<td align=\"center\" width=\"150\"><font color=\"FF0000\">" + AdminSurvey.ans5 + "</font></td>");
+ tb.append("<td align=\"center\"><a action=\"bypass -h survey_vote5\">Vote</a></td>");
+
+ tb.append("</tr>");
+ }
+ tb.append("</table><br>");
+ tb.append("</center>");
+ tb.append("</body></html>");
+
+ nhm.setHtml(tb.toString());
+ activeChar.sendPacket(nhm);
+ }
+
+ @Override
+ public String[] getVoicedCommandList()
+ {
+ return VOICED_COMMANDS;
+ }
+}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 9)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -382,6 +382,8 @@
 
  private PcAppearance _appearance;
 
+ private boolean _hasVotedSurvey = false;
+
  private long _expBeforeDeath;
  private int _karma;
  private int _pvpKills;
@@ -7619,6 +7621,22 @@
  }
 
  /**
+ * @return the _hasVotedSurvey
+ */
+ public boolean hasVotedSurvey()
+ {
+ return _hasVotedSurvey;
+ }
+
+ /**
+ * @param _hasVotedSurvey the _hasVotedSurvey to set
+ */
+ public void setHasVotedSurvey(boolean _hasVotedSurvey)
+ {
+ this._hasVotedSurvey = _hasVotedSurvey;
+ }
+
+ /**
  * Cancel autoshot use for shot itemId
  * @param itemId int id to disable
  * @return true if canceled.
Index: java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java
===================================================================
--- java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java (revision 9)
+++ java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java (working copy)
@@ -22,6 +22,7 @@
 import net.sf.l2j.gameserver.datatables.AdminCommandAccessRights;
 import net.sf.l2j.gameserver.handler.AdminCommandHandler;
 import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSurvey;
 import net.sf.l2j.gameserver.model.L2Object;
 import net.sf.l2j.gameserver.model.L2World;
 import net.sf.l2j.gameserver.model.actor.L2Npc;
@@ -91,6 +92,91 @@
 
  ach.useAdminCommand(_command, activeChar);
  }
+
+ else if (_command.equals("survey_vote1"))
+ {
+ if (AdminSurvey.running == false)
+ {
+ activeChar.sendMessage("There is no survey running now");
+ return;
+ }
+
+ if (activeChar.hasVotedSurvey())
+ {
+ activeChar.sendMessage("You already voted for that survey.");
+ return;
+ }
+
+ AdminSurvey.ans1_vote_count++;
+ activeChar.setHasVotedSurvey(true);
+ activeChar.sendMessage("You voted : " + AdminSurvey.ans1 + ". Thanks for voting");
+ }
+ else if (_command.equals("survey_vote2"))
+ {
+ if (AdminSurvey.running == false)
+ {
+ activeChar.sendMessage("There is no survey running now");
+ return;
+ }
+ if (activeChar.hasVotedSurvey())
+ {
+ activeChar.sendMessage("You already voted for that survey.");
+ return;
+ }
+
+ AdminSurvey.ans2_vote_count++;
+ activeChar.setHasVotedSurvey(true);
+ activeChar.sendMessage("You voted : " + AdminSurvey.ans2 + ". Thanks for voting");
+ }
+ else if (_command.equals("survey_vote3"))
+ {
+ if (AdminSurvey.running == false)
+ {
+ activeChar.sendMessage("There is no survey running now");
+ return;
+ }
+ if (activeChar.hasVotedSurvey())
+ {
+ activeChar.sendMessage("You already voted for that survey.");
+ return;
+ }
+ AdminSurvey.ans3_vote_count++;
+ activeChar.setHasVotedSurvey(true);
+ activeChar.sendMessage("You voted : " + AdminSurvey.ans3 + ". Thanks for voting");
+ }
+ else if (_command.equals("survey_vote4"))
+ {
+ if (AdminSurvey.running == false)
+ {
+ activeChar.sendMessage("There is no survey running now");
+ return;
+ }
+ if (activeChar.hasVotedSurvey())
+ {
+ activeChar.sendMessage("You already voted for that survey.");
+ return;
+ }
+ AdminSurvey.ans4_vote_count++;
+ activeChar.setHasVotedSurvey(true);
+ activeChar.sendMessage("You voted : " + AdminSurvey.ans4 + ". Thanks for voting");
+ }
+ else if (_command.equals("survey_vote5"))
+ {
+ if (AdminSurvey.running == false)
+ {
+ activeChar.sendMessage("There is no survey running now");
+ return;
+ }
+ if (activeChar.hasVotedSurvey())
+ {
+ activeChar.sendMessage("You already voted for that survey.");
+ return;
+ }
+ AdminSurvey.ans5_vote_count++;
+ activeChar.setHasVotedSurvey(true);
+ activeChar.sendMessage("You voted : " + AdminSurvey.ans5 + ". Thanks for voting");
+ }
+
  else if (_command.startsWith("player_help "))
  {
  playerHelp(activeChar, _command.substring(12));