From 138dd34c7343fa07f7d42a7a6910cfbfad974596 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 8 May 2018 16:56:05 +0000 Subject: [PATCH] Addition of fences support. Contributed by Sahar. --- .../dist/game/config/AdminCommands.xml | 7 + .../dist/game/data/FenceData.xml | 4 + .../dist/game/data/html/admin/fences.htm | 25 ++ .../data/scripts/handlers/MasterHandler.java | 2 + .../admincommandhandlers/AdminFence.java | 224 +++++++++++++++ .../dist/game/data/xsd/FenceData.xsd | 37 +++ .../com/l2jmobius/gameserver/GameServer.java | 2 + .../gameserver/data/xml/impl/FenceData.java | 239 ++++++++++++++++ .../gameserver/enums/FenceState.java | 45 +++ .../gameserver/geoengine/GeoEngine.java | 20 +- .../model/actor/instance/L2FenceInstance.java | 168 +++++++++++ .../serverpackets/ExColosseumFenceInfo.java | 68 +++++ .../dist/game/config/AdminCommands.xml | 7 + .../dist/game/data/FenceData.xml | 4 + .../dist/game/data/html/admin/fences.htm | 25 ++ .../data/scripts/handlers/MasterHandler.java | 2 + .../admincommandhandlers/AdminFence.java | 224 +++++++++++++++ .../dist/game/data/xsd/FenceData.xsd | 37 +++ .../com/l2jmobius/gameserver/GameServer.java | 2 + .../gameserver/data/xml/impl/FenceData.java | 239 ++++++++++++++++ .../gameserver/enums/FenceState.java | 45 +++ .../gameserver/geoengine/GeoEngine.java | 20 +- .../model/actor/instance/L2FenceInstance.java | 168 +++++++++++ .../serverpackets/ExColosseumFenceInfo.java | 68 +++++ .../dist/game/config/AdminCommands.xml | 7 + .../dist/game/data/FenceData.xml | 4 + .../dist/game/data/html/admin/fences.htm | 25 ++ .../data/scripts/handlers/MasterHandler.java | 2 + .../admincommandhandlers/AdminFence.java | 224 +++++++++++++++ .../dist/game/data/xsd/FenceData.xsd | 37 +++ .../com/l2jmobius/gameserver/GameServer.java | 2 + .../gameserver/data/xml/impl/FenceData.java | 239 ++++++++++++++++ .../gameserver/enums/FenceState.java | 45 +++ .../gameserver/geoengine/GeoEngine.java | 20 +- .../model/actor/instance/L2FenceInstance.java | 168 +++++++++++ .../serverpackets/ExColosseumFenceInfo.java | 68 +++++ .../dist/game/config/AdminCommands.xml | 7 + .../dist/game/data/FenceData.xml | 4 + .../dist/game/data/html/admin/fences.htm | 25 ++ .../data/scripts/handlers/MasterHandler.java | 2 + .../admincommandhandlers/AdminFence.java | 224 +++++++++++++++ .../dist/game/data/xsd/FenceData.xsd | 37 +++ .../com/l2jmobius/gameserver/GameServer.java | 2 + .../gameserver/data/xml/impl/FenceData.java | 239 ++++++++++++++++ .../gameserver/enums/FenceState.java | 45 +++ .../gameserver/geoengine/GeoEngine.java | 20 +- .../model/actor/instance/L2FenceInstance.java | 168 +++++++++++ .../serverpackets/ExColosseumFenceInfo.java | 68 +++++ .../sql/game/admin_command_access_rights.sql | 7 + .../dist/game/data/FenceData.xml | 4 + .../dist/game/data/html/admin/fences.htm | 25 ++ .../dist/game/data/xsd/FenceData.xsd | 37 +++ .../com/l2jmobius/gameserver/GameServer.java | 2 + .../gameserver/datatables/xml/FenceData.java | 260 ++++++++++++++++++ .../gameserver/enums/FenceState.java | 45 +++ .../l2jmobius/gameserver/geodata/GeoData.java | 9 + .../handler/AdminCommandHandler.java | 2 + .../admincommandhandlers/AdminFence.java | 230 ++++++++++++++++ .../gameserver/model/PageResult.java | 49 ++++ .../model/actor/instance/L2FenceInstance.java | 153 +++++++++++ .../model/actor/knownlist/PcKnownList.java | 5 + .../network/serverpackets/DeleteObject.java | 5 + .../serverpackets/ExColosseumFenceInfo.java | 64 +++++ .../l2jmobius/gameserver/util/HtmlUtil.java | 90 ++++++ .../dist/game/config/AdminCommands.xml | 7 + .../dist/game/data/FenceData.xml | 4 + .../dist/game/data/html/admin/fences.htm | 25 ++ .../data/scripts/handlers/MasterHandler.java | 2 + .../admincommandhandlers/AdminFence.java | 230 ++++++++++++++++ .../dist/game/data/xsd/FenceData.xsd | 37 +++ .../com/l2jmobius/gameserver/GameServer.java | 2 + .../gameserver/data/xml/impl/FenceData.java | 237 ++++++++++++++++ .../gameserver/enums/FenceState.java | 45 +++ .../gameserver/geoengine/GeoEngine.java | 17 ++ .../model/actor/instance/L2FenceInstance.java | 168 +++++++++++ .../serverpackets/ExColosseumFenceInfo.java | 68 +++++ .../dist/game/config/AdminCommands.xml | 7 + .../dist/game/data/FenceData.xml | 4 + .../dist/game/data/html/admin/fences.htm | 25 ++ .../data/scripts/handlers/MasterHandler.java | 2 + .../admincommandhandlers/AdminFence.java | 224 +++++++++++++++ .../dist/game/data/xsd/FenceData.xsd | 37 +++ .../com/l2jmobius/gameserver/GameServer.java | 2 + .../gameserver/data/xml/impl/FenceData.java | 239 ++++++++++++++++ .../gameserver/enums/FenceState.java | 45 +++ .../gameserver/geoengine/GeoEngine.java | 20 +- .../model/actor/instance/L2FenceInstance.java | 168 +++++++++++ .../serverpackets/ExColosseumFenceInfo.java | 68 +++++ .../dist/game/config/AdminCommands.xml | 7 + .../dist/game/data/FenceData.xml | 4 + .../dist/game/data/html/admin/fences.htm | 25 ++ .../data/scripts/handlers/MasterHandler.java | 2 + .../admincommandhandlers/AdminFence.java | 224 +++++++++++++++ .../dist/game/data/xsd/FenceData.xsd | 37 +++ .../com/l2jmobius/gameserver/GameServer.java | 2 + .../gameserver/data/xml/impl/FenceData.java | 239 ++++++++++++++++ .../gameserver/enums/FenceState.java | 45 +++ .../gameserver/geoengine/GeoEngine.java | 20 +- .../model/actor/instance/L2FenceInstance.java | 168 +++++++++++ .../serverpackets/ExColosseumFenceInfo.java | 68 +++++ 100 files changed, 6857 insertions(+), 18 deletions(-) create mode 100644 L2J_Mobius_1.0_Ertheia/dist/game/data/FenceData.xml create mode 100644 L2J_Mobius_1.0_Ertheia/dist/game/data/html/admin/fences.htm create mode 100644 L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java create mode 100644 L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/FenceData.xsd create mode 100644 L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/data/xml/impl/FenceData.java create mode 100644 L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/enums/FenceState.java create mode 100644 L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2FenceInstance.java create mode 100644 L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java create mode 100644 L2J_Mobius_2.5_Underground/dist/game/data/FenceData.xml create mode 100644 L2J_Mobius_2.5_Underground/dist/game/data/html/admin/fences.htm create mode 100644 L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java create mode 100644 L2J_Mobius_2.5_Underground/dist/game/data/xsd/FenceData.xsd create mode 100644 L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/data/xml/impl/FenceData.java create mode 100644 L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/enums/FenceState.java create mode 100644 L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2FenceInstance.java create mode 100644 L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java create mode 100644 L2J_Mobius_3.0_Helios/dist/game/data/FenceData.xml create mode 100644 L2J_Mobius_3.0_Helios/dist/game/data/html/admin/fences.htm create mode 100644 L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java create mode 100644 L2J_Mobius_3.0_Helios/dist/game/data/xsd/FenceData.xsd create mode 100644 L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/data/xml/impl/FenceData.java create mode 100644 L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/enums/FenceState.java create mode 100644 L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2FenceInstance.java create mode 100644 L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java create mode 100644 L2J_Mobius_4.0_GrandCrusade/dist/game/data/FenceData.xml create mode 100644 L2J_Mobius_4.0_GrandCrusade/dist/game/data/html/admin/fences.htm create mode 100644 L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java create mode 100644 L2J_Mobius_4.0_GrandCrusade/dist/game/data/xsd/FenceData.xsd create mode 100644 L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/data/xml/impl/FenceData.java create mode 100644 L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/enums/FenceState.java create mode 100644 L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/instance/L2FenceInstance.java create mode 100644 L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java create mode 100644 L2J_Mobius_C6_Interlude/dist/game/data/FenceData.xml create mode 100644 L2J_Mobius_C6_Interlude/dist/game/data/html/admin/fences.htm create mode 100644 L2J_Mobius_C6_Interlude/dist/game/data/xsd/FenceData.xsd create mode 100644 L2J_Mobius_C6_Interlude/java/com/l2jmobius/gameserver/datatables/xml/FenceData.java create mode 100644 L2J_Mobius_C6_Interlude/java/com/l2jmobius/gameserver/enums/FenceState.java create mode 100644 L2J_Mobius_C6_Interlude/java/com/l2jmobius/gameserver/handler/admincommandhandlers/AdminFence.java create mode 100644 L2J_Mobius_C6_Interlude/java/com/l2jmobius/gameserver/model/PageResult.java create mode 100644 L2J_Mobius_C6_Interlude/java/com/l2jmobius/gameserver/model/actor/instance/L2FenceInstance.java create mode 100644 L2J_Mobius_C6_Interlude/java/com/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java create mode 100644 L2J_Mobius_C6_Interlude/java/com/l2jmobius/gameserver/util/HtmlUtil.java create mode 100644 L2J_Mobius_CT_2.6_HighFive/dist/game/data/FenceData.xml create mode 100644 L2J_Mobius_CT_2.6_HighFive/dist/game/data/html/admin/fences.htm create mode 100644 L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java create mode 100644 L2J_Mobius_CT_2.6_HighFive/dist/game/data/xsd/FenceData.xsd create mode 100644 L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/data/xml/impl/FenceData.java create mode 100644 L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/enums/FenceState.java create mode 100644 L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2FenceInstance.java create mode 100644 L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java create mode 100644 L2J_Mobius_Classic_2.0_Saviors/dist/game/data/FenceData.xml create mode 100644 L2J_Mobius_Classic_2.0_Saviors/dist/game/data/html/admin/fences.htm create mode 100644 L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java create mode 100644 L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/FenceData.xsd create mode 100644 L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/data/xml/impl/FenceData.java create mode 100644 L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/enums/FenceState.java create mode 100644 L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/instance/L2FenceInstance.java create mode 100644 L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java create mode 100644 L2J_Mobius_Classic_2.0_Zaken/dist/game/data/FenceData.xml create mode 100644 L2J_Mobius_Classic_2.0_Zaken/dist/game/data/html/admin/fences.htm create mode 100644 L2J_Mobius_Classic_2.0_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java create mode 100644 L2J_Mobius_Classic_2.0_Zaken/dist/game/data/xsd/FenceData.xsd create mode 100644 L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/data/xml/impl/FenceData.java create mode 100644 L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/enums/FenceState.java create mode 100644 L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/actor/instance/L2FenceInstance.java create mode 100644 L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/config/AdminCommands.xml b/L2J_Mobius_1.0_Ertheia/dist/game/config/AdminCommands.xml index 8ab41e304d..e8332bdf3a 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/config/AdminCommands.xml @@ -624,4 +624,11 @@ + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/FenceData.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/FenceData.xml new file mode 100644 index 0000000000..44e578b4b7 --- /dev/null +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/FenceData.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/html/admin/fences.htm b/L2J_Mobius_1.0_Ertheia/dist/game/data/html/admin/fences.htm new file mode 100644 index 0000000000..d2c27d96e8 --- /dev/null +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/html/admin/fences.htm @@ -0,0 +1,25 @@ + + + Fence List + + + + + + + + +
+ +
Fence List
+
+
+
+ + %fences% +
+
%pages%
+ + \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java index bd1994f812..ffe1a87bd6 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java @@ -79,6 +79,7 @@ import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; +import handlers.admincommandhandlers.AdminFence; import handlers.admincommandhandlers.AdminFightCalculator; import handlers.admincommandhandlers.AdminFortSiege; import handlers.admincommandhandlers.AdminGeodata; @@ -411,6 +412,7 @@ public class MasterHandler AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, + AdminFence.class, AdminFightCalculator.class, AdminFortSiege.class, AdminGeodata.class, diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java new file mode 100644 index 0000000000..db63ae149d --- /dev/null +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminFence.java @@ -0,0 +1,224 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package handlers.admincommandhandlers; + +import java.util.NoSuchElementException; +import java.util.StringTokenizer; + +import com.l2jmobius.gameserver.data.xml.impl.FenceData; +import com.l2jmobius.gameserver.enums.FenceState; +import com.l2jmobius.gameserver.handler.IAdminCommandHandler; +import com.l2jmobius.gameserver.model.L2Object; +import com.l2jmobius.gameserver.model.L2World; +import com.l2jmobius.gameserver.model.actor.instance.L2FenceInstance; +import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; +import com.l2jmobius.gameserver.model.html.PageBuilder; +import com.l2jmobius.gameserver.model.html.PageResult; +import com.l2jmobius.gameserver.model.html.styles.ButtonsStyle; +import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; +import com.l2jmobius.gameserver.util.BuilderUtil; + +/** + * @author Sahar, Nik64 + */ +public class AdminFence implements IAdminCommandHandler +{ + private static final String[] ADMIN_COMMANDS = + { + "admin_addfence", + "admin_setfencestate", + "admin_removefence", + "admin_listfence", + "admin_gofence" + }; + + @Override + public boolean useAdminCommand(String command, L2PcInstance activeChar) + { + final StringTokenizer st = new StringTokenizer(command, " "); + final String cmd = st.nextToken(); + switch (cmd) + { + case "admin_addfence": + { + try + { + final int width = Integer.parseInt(st.nextToken()); + final int length = Integer.parseInt(st.nextToken()); + final int height = Integer.parseInt(st.nextToken()); + if ((width < 1) || (length < 1)) + { + BuilderUtil.sendSysMessage(activeChar, "Width and length values must be positive numbers."); + return false; + } + if ((height < 1) || (height > 3)) + { + BuilderUtil.sendSysMessage(activeChar, "The range for height can only be 1-3."); + return false; + } + + FenceData.getInstance().spawnFence(activeChar.getX(), activeChar.getY(), activeChar.getZ(), width, length, height, activeChar.getInstanceId(), FenceState.CLOSED); + BuilderUtil.sendSysMessage(activeChar, "Fence added succesfully."); + } + catch (NoSuchElementException | NumberFormatException e) + { + BuilderUtil.sendSysMessage(activeChar, "Format must be: //addfence "); + } + break; + } + case "admin_setfencestate": + { + try + { + final int objId = Integer.parseInt(st.nextToken()); + final int fenceTypeOrdinal = Integer.parseInt(st.nextToken()); + + if ((fenceTypeOrdinal < 0) || (fenceTypeOrdinal >= FenceState.values().length)) + { + BuilderUtil.sendSysMessage(activeChar, "Specified FenceType is out of range. Only 0-" + (FenceState.values().length - 1) + " are permitted."); + } + else + { + final L2Object obj = L2World.getInstance().findObject(objId); + if (obj instanceof L2FenceInstance) + { + final L2FenceInstance fence = (L2FenceInstance) obj; + final FenceState state = FenceState.values()[fenceTypeOrdinal]; + fence.setState(state); + BuilderUtil.sendSysMessage(activeChar, "Fence " + fence.getName() + "[" + fence.getId() + "]'s state has been changed to " + state.toString()); + } + else + { + BuilderUtil.sendSysMessage(activeChar, "Target is not a fence."); + } + } + } + catch (NoSuchElementException | NumberFormatException e) + { + BuilderUtil.sendSysMessage(activeChar, "Format mustr be: //setfencestate "); + } + break; + } + case "admin_removefence": + { + try + { + final int objId = Integer.parseInt(st.nextToken()); + final L2Object obj = L2World.getInstance().findObject(objId); + if (obj instanceof L2FenceInstance) + { + ((L2FenceInstance) obj).deleteMe(); + BuilderUtil.sendSysMessage(activeChar, "Fence removed succesfully."); + } + else + { + BuilderUtil.sendSysMessage(activeChar, "Target is not a fence."); + } + } + catch (Exception e) + { + BuilderUtil.sendSysMessage(activeChar, "Invalid object ID or target was not found."); + } + sendHtml(activeChar, 0); + break; + } + case "admin_listfence": + { + int page = 0; + if (st.hasMoreTokens()) + { + page = Integer.parseInt(st.nextToken()); + } + sendHtml(activeChar, page); + break; + } + case "admin_gofence": + { + try + { + final int objId = Integer.parseInt(st.nextToken()); + final L2Object obj = L2World.getInstance().findObject(objId); + if (obj != null) + { + activeChar.teleToLocation(obj); + } + } + catch (Exception e) + { + BuilderUtil.sendSysMessage(activeChar, "Invalid object ID or target was not found."); + } + break; + } + } + + return true; + } + + @Override + public String[] getAdminCommandList() + { + return ADMIN_COMMANDS; + } + + private static void sendHtml(L2PcInstance activeChar, int page) + { + final PageResult result = PageBuilder.newBuilder(FenceData.getInstance().getFences().values(), 10, "bypass -h admin_listfence").currentPage(page).style(ButtonsStyle.INSTANCE).bodyHandler((pages, fence, sb) -> + { + sb.append(""); + sb.append(fence.getName() == null ? fence.getId() : fence.getName()); + sb.append(""); + sb.append("