From 8b3e95ff32149e8f42feb1d51f9d799076f98ea1 Mon Sep 17 00:00:00 2001 From: VlLight <VlLight@users.noreply.github.com> Date: Sun, 27 Oct 2013 19:57:28 +0000 Subject: [PATCH] BETA: DP-Part for [L6248] * Reviewed by: Zoey76, UnAfraid --- .../dist/game/data/html/admin/npcinfo.htm | 4 +- .../actionhandlers/L2NpcActionShift.java | 14 ++++++- .../admincommandhandlers/AdminZone.java | 9 +++++ .../dist/game/data/spawnlist/test.xml | 6 +++ .../dist/game/data/xsd/spawnlist.xsd | 40 +++++++++++++++++++ .../dist/game/data/xsd/zones.xsd | 1 + .../npc_spawn_zone_test.xml | 7 ++++ 7 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 L2J_DataPack_BETA/dist/game/data/spawnlist/test.xml create mode 100644 L2J_DataPack_BETA/dist/game/data/xsd/spawnlist.xsd create mode 100644 L2J_DataPack_BETA/dist/game/data/zones/npcSpawnTerritories/npc_spawn_zone_test.xml diff --git a/L2J_DataPack_BETA/dist/game/data/html/admin/npcinfo.htm b/L2J_DataPack_BETA/dist/game/data/html/admin/npcinfo.htm index 73d11d7ca5..b8f148ade6 100644 --- a/L2J_DataPack_BETA/dist/game/data/html/admin/npcinfo.htm +++ b/L2J_DataPack_BETA/dist/game/data/html/admin/npcinfo.htm @@ -19,7 +19,9 @@ <tr><td colspan="4"><table width=270 border=0><tr><td width=270><font color="LEVEL">Npc Info</font> : %name% (<font color="LEVEL">%id%</font>) [<font color=00FF00>%lvl%</font> lvl]</td></tr></table></td></tr> <tr><td><table width=270 border=0 bgcolor=131210><tr><td width=100><font color="LEVEL">ObjectId</font></td><td align=right width=170>%objid%</td></tr></table></td></tr> <tr><td><table width=270 border=0><tr><td width=100><font color="LEVEL">Type:</font></td><td align=right width=170><font color=999999>%class%</font></td></tr></table></td></tr> -<tr><td><table width=270 border=0 bgcolor=131210><tr><td width=100><font color="LEVEL">Spawn</font></td><td align=right width=170>%spawn%</td></tr></table></td></tr> +<tr><td><table width=270 border=0><tr><td width=100><font color="LEVEL">Territory:</font></td><td align=right width=170>%territory%</td></tr></table></td></tr> +<tr><td><table width=270 border=0 bgcolor=131210><tr><td width=100><font color="LEVEL">Spawn type:</font></td><td align=right width=170>%spawntype%</td></tr></table></td></tr> +<tr><td><table width=270 border=0><tr><td width=100><font color="LEVEL">Spawn loc:</font></td><td align=right width=170>%spawn%</td></tr></table></td></tr> <tr><td><table width=270 border=0><tr><td width=100><font color="LEVEL">Location:</font></td><td align=right width=170>%loc%</td></tr></table></td></tr> <tr><td><table width=270 border=0 bgcolor=131210><tr><td width=100><font color="LEVEL">Heading:</font></td><td align=right width=170>%heading%</td></tr></table></td></tr> <tr><td><table width=270 border=0><tr><td width=100><font color="LEVEL">Collision Radius:</font></td><td align=right width=170>%collision_radius%</td></tr></table></td></tr> diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/actionhandlers/L2NpcActionShift.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/actionhandlers/L2NpcActionShift.java index 6ea8abc7d6..81638d4c9a 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/actionhandlers/L2NpcActionShift.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/actionhandlers/L2NpcActionShift.java @@ -114,7 +114,17 @@ public class L2NpcActionShift implements IActionHandler if (((L2Npc) target).getSpawn() != null) { - html.replace("%spawn%", ((L2Npc) target).getSpawn().getX() + " " + ((L2Npc) target).getSpawn().getY() + " " + ((L2Npc) target).getSpawn().getZ()); + html.replace("%territory%", ((L2Npc) target).getSpawn().getSpawnTerritory() == null ? "None" : ((L2Npc) target).getSpawn().getSpawnTerritory().getName()); + if (((L2Npc) target).getSpawn().isTerritoryBased()) + { + html.replace("%spawntype%", "Random"); + html.replace("%spawn%", ((L2Npc) target).getSpawn().getX(target) + " " + ((L2Npc) target).getSpawn().getY(target) + " " + ((L2Npc) target).getSpawn().getZ(target)); + } + else + { + html.replace("%spawntype%", "Fixed"); + html.replace("%spawn%", ((L2Npc) target).getSpawn().getX() + " " + ((L2Npc) target).getSpawn().getY() + " " + ((L2Npc) target).getSpawn().getZ()); + } html.replace("%loc2d%", String.valueOf((int) target.calculateDistance(((L2Npc) target).getSpawn(), false, false))); html.replace("%loc3d%", String.valueOf((int) target.calculateDistance(((L2Npc) target).getSpawn(), true, false))); if (((L2Npc) target).getSpawn().getRespawnMinDelay() == 0) @@ -132,6 +142,8 @@ public class L2NpcActionShift implements IActionHandler } else { + html.replace("%territory%", "<font color=FF0000>--</font>"); + html.replace("%spawntype%", "<font color=FF0000>--</font>"); html.replace("%spawn%", "<font color=FF0000>null</font>"); html.replace("%loc2d%", "<font color=FF0000>--</font>"); html.replace("%loc3d%", "<font color=FF0000>--</font>"); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminZone.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminZone.java index 788e40f232..8967c428d1 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminZone.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminZone.java @@ -31,6 +31,7 @@ import com.l2jserver.gameserver.model.TeleportWhereType; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.zone.L2ZoneType; import com.l2jserver.gameserver.model.zone.ZoneId; +import com.l2jserver.gameserver.model.zone.type.NpcSpawnTerritory; import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage; import com.l2jserver.util.StringUtil; @@ -90,6 +91,10 @@ public class AdminZone implements IAdminCommandHandler { zone.visualizeZone(activeChar.getZ()); } + for (NpcSpawnTerritory territory : ZoneManager.getInstance().getSpawnTerritories(activeChar)) + { + territory.visualizeZone(activeChar.getZ()); + } showHtml(activeChar); } else @@ -148,6 +153,10 @@ public class AdminZone implements IAdminCommandHandler StringUtil.append(zones, " "); } } + for (NpcSpawnTerritory territory : ZoneManager.getInstance().getSpawnTerritories(activeChar)) + { + StringUtil.append(zones, territory.getName() + "<br1>"); + } adminReply.replace("%ZLIST%", zones.toString()); activeChar.sendPacket(adminReply); } diff --git a/L2J_DataPack_BETA/dist/game/data/spawnlist/test.xml b/L2J_DataPack_BETA/dist/game/data/spawnlist/test.xml new file mode 100644 index 0000000000..79e10fb09a --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/spawnlist/test.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/spawnlist.xsd"> + <spawn zone="spawn_zone_test_01"> + <npc id="20550" count="3" respawnDelay="15" respawnRandom="5" /> + </spawn> +</list> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/xsd/spawnlist.xsd b/L2J_DataPack_BETA/dist/game/data/xsd/spawnlist.xsd new file mode 100644 index 0000000000..d67593b980 --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/xsd/spawnlist.xsd @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <xs:element name="list"> + <xs:complexType> + <xs:sequence maxOccurs="1" minOccurs="1"> + <xs:element name="spawn" minOccurs="1" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence minOccurs="1" maxOccurs="unbounded"> + <xs:element name="npc" minOccurs="1" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="id" type="xs:positiveInteger" use="required" /> + <xs:attribute name="x" type="xs:integer" use="optional" /> + <xs:attribute name="y" type="xs:integer" use="optional" /> + <xs:attribute name="z" type="xs:integer" use="optional" /> + <xs:attribute name="heading" type="xs:integer" use="optional" /> + <xs:attribute name="count" type="xs:positiveInteger" use="optional" /> + <xs:attribute name="respawnDelay" type="xs:nonNegativeInteger" use="optional" /> + <xs:attribute name="respawnRandom" type="xs:nonNegativeInteger" use="optional" /> + <xs:attribute name="periodOfDay" use="optional"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="day" /> + <xs:enumeration value="night" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute type="xs:string" name="zone" use="optional"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> +</xs:schema> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/xsd/zones.xsd b/L2J_DataPack_BETA/dist/game/data/xsd/zones.xsd index 1fd7543083..c3ebacf650 100644 --- a/L2J_DataPack_BETA/dist/game/data/xsd/zones.xsd +++ b/L2J_DataPack_BETA/dist/game/data/xsd/zones.xsd @@ -132,6 +132,7 @@ <xs:enumeration value="NoRestartZone" /> <xs:enumeration value="NoStoreZone" /> <xs:enumeration value="NoSummonFriendZone" /> + <xs:enumeration value="NpcSpawnTerritory" /> <xs:enumeration value="OlympiadStadiumZone" /> <xs:enumeration value="PeaceZone" /> <xs:enumeration value="ResidenceHallTeleportZone" /> diff --git a/L2J_DataPack_BETA/dist/game/data/zones/npcSpawnTerritories/npc_spawn_zone_test.xml b/L2J_DataPack_BETA/dist/game/data/zones/npcSpawnTerritories/npc_spawn_zone_test.xml new file mode 100644 index 0000000000..d9af836bee --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/zones/npcSpawnTerritories/npc_spawn_zone_test.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<list enabled="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/zones.xsd"> + <zone name="spawn_zone_test_01" type="NpcSpawnTerritory" shape="Cuboid" minZ="-3734" maxZ="-3689"> + <node X="75552" Y="142899" /> + <node X="76887" Y="144333" /> + </zone> +</list> \ No newline at end of file -- GitLab