Separated admin missing html commands.

This commit is contained in:
MobiusDev
2017-08-13 22:54:30 +00:00
parent 59be299389
commit 6918614ffc
12 changed files with 372 additions and 207 deletions

View File

@@ -281,6 +281,8 @@
<admin command="admin_geo_can_move" accessLevel="100" />
<admin command="admin_geogrid" accessLevel="100" />
<admin command="admin_geomap" accessLevel="100" />
<!-- ADMIN MISSING HTMLS -->
<admin command="admin_geomap_missing_htmls" accessLevel="100" />
<admin command="admin_world_missing_htmls" accessLevel="100" />

View File

@@ -99,6 +99,7 @@ import handlers.admincommandhandlers.AdminLogin;
import handlers.admincommandhandlers.AdminManor;
import handlers.admincommandhandlers.AdminMenu;
import handlers.admincommandhandlers.AdminMessages;
import handlers.admincommandhandlers.AdminMissingHtmls;
import handlers.admincommandhandlers.AdminMobGroup;
import handlers.admincommandhandlers.AdminOlympiad;
import handlers.admincommandhandlers.AdminPForge;
@@ -428,6 +429,7 @@ public class MasterHandler
AdminManor.class,
AdminMenu.class,
AdminMessages.class,
AdminMissingHtmls.class,
AdminMobGroup.class,
AdminOlympiad.class,
AdminPathNode.class,

View File

@@ -16,19 +16,13 @@
*/
package handlers.admincommandhandlers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.handler.IAdminCommandHandler;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import com.l2jmobius.gameserver.util.GeoUtils;
@@ -45,9 +39,7 @@ public class AdminGeodata implements IAdminCommandHandler
"admin_geo_can_move",
"admin_geo_can_see",
"admin_geogrid",
"admin_geomap",
"admin_geomap_missing_htmls",
"admin_world_missing_htmls"
"admin_geomap"
};
@Override
@@ -145,66 +137,6 @@ public class AdminGeodata implements IAdminCommandHandler
activeChar.sendMessage("GeoMap: " + x + "_" + y + " (" + ((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + "," + ((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + " to " + ((((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1) + "," + ((((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1) + ")");
break;
}
case "admin_geomap_missing_htmls":
{
final int x = ((activeChar.getX() - L2World.MAP_MIN_X) >> 15) + L2World.TILE_X_MIN;
final int y = ((activeChar.getY() - L2World.MAP_MIN_Y) >> 15) + L2World.TILE_Y_MIN;
final int topLeftX = (x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE;
final int topLeftY = (y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE;
final int bottomRightX = (((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
final int bottomRightY = (((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
activeChar.sendMessage("GeoMap: " + x + "_" + y + " (" + topLeftX + "," + topLeftY + " to " + bottomRightX + "," + bottomRightY + ")");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if ((npc.getLocation().getX() > topLeftX) && (npc.getLocation().getX() < bottomRightX) && (npc.getLocation().getY() > topLeftY) && (npc.getLocation().getY() < bottomRightY) && npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
case "admin_world_missing_htmls":
{
activeChar.sendMessage("Missing htmls for the whole world.");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if (npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
}
return true;
}

View File

@@ -0,0 +1,119 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package handlers.admincommandhandlers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.handler.IAdminCommandHandler;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
/**
* @author Mobius
*/
public class AdminMissingHtmls implements IAdminCommandHandler
{
private static final String[] ADMIN_COMMANDS =
{
"admin_geomap_missing_htmls",
"admin_world_missing_htmls"
};
@Override
public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
final StringTokenizer st = new StringTokenizer(command, " ");
final String actualCommand = st.nextToken();
switch (actualCommand.toLowerCase())
{
case "admin_geomap_missing_htmls":
{
final int x = ((activeChar.getX() - L2World.MAP_MIN_X) >> 15) + L2World.TILE_X_MIN;
final int y = ((activeChar.getY() - L2World.MAP_MIN_Y) >> 15) + L2World.TILE_Y_MIN;
final int topLeftX = (x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE;
final int topLeftY = (y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE;
final int bottomRightX = (((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
final int bottomRightY = (((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
activeChar.sendMessage("GeoMap: " + x + "_" + y + " (" + topLeftX + "," + topLeftY + " to " + bottomRightX + "," + bottomRightY + ")");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if ((npc.getLocation().getX() > topLeftX) && (npc.getLocation().getX() < bottomRightX) && (npc.getLocation().getY() > topLeftY) && (npc.getLocation().getY() < bottomRightY) && npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
case "admin_world_missing_htmls":
{
activeChar.sendMessage("Missing htmls for the whole world.");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if (npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
}
return true;
}
@Override
public String[] getAdminCommandList()
{
return ADMIN_COMMANDS;
}
}

View File

@@ -281,6 +281,8 @@
<admin command="admin_geo_can_move" accessLevel="100" />
<admin command="admin_geogrid" accessLevel="100" />
<admin command="admin_geomap" accessLevel="100" />
<!-- ADMIN MISSING HTMLS -->
<admin command="admin_geomap_missing_htmls" accessLevel="100" />
<admin command="admin_world_missing_htmls" accessLevel="100" />

View File

@@ -99,6 +99,7 @@ import handlers.admincommandhandlers.AdminLogin;
import handlers.admincommandhandlers.AdminManor;
import handlers.admincommandhandlers.AdminMenu;
import handlers.admincommandhandlers.AdminMessages;
import handlers.admincommandhandlers.AdminMissingHtmls;
import handlers.admincommandhandlers.AdminMobGroup;
import handlers.admincommandhandlers.AdminMonsterRace;
import handlers.admincommandhandlers.AdminOlympiad;
@@ -428,6 +429,7 @@ public class MasterHandler
AdminManor.class,
AdminMenu.class,
AdminMessages.class,
AdminMissingHtmls.class,
AdminMobGroup.class,
AdminMonsterRace.class,
AdminOlympiad.class,

View File

@@ -16,19 +16,13 @@
*/
package handlers.admincommandhandlers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.handler.IAdminCommandHandler;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import com.l2jmobius.gameserver.util.GeoUtils;
@@ -45,9 +39,7 @@ public class AdminGeodata implements IAdminCommandHandler
"admin_geo_can_move",
"admin_geo_can_see",
"admin_geogrid",
"admin_geomap",
"admin_geomap_missing_htmls",
"admin_world_missing_htmls"
"admin_geomap"
};
@Override
@@ -145,66 +137,6 @@ public class AdminGeodata implements IAdminCommandHandler
activeChar.sendMessage("GeoMap: " + x + "_" + y + " (" + ((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + "," + ((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + " to " + ((((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1) + "," + ((((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1) + ")");
break;
}
case "admin_geomap_missing_htmls":
{
final int x = ((activeChar.getX() - L2World.MAP_MIN_X) >> 15) + L2World.TILE_X_MIN;
final int y = ((activeChar.getY() - L2World.MAP_MIN_Y) >> 15) + L2World.TILE_Y_MIN;
final int topLeftX = (x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE;
final int topLeftY = (y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE;
final int bottomRightX = (((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
final int bottomRightY = (((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
activeChar.sendMessage("GeoMap: " + x + "_" + y + " (" + topLeftX + "," + topLeftY + " to " + bottomRightX + "," + bottomRightY + ")");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if ((npc.getLocation().getX() > topLeftX) && (npc.getLocation().getX() < bottomRightX) && (npc.getLocation().getY() > topLeftY) && (npc.getLocation().getY() < bottomRightY) && npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
case "admin_world_missing_htmls":
{
activeChar.sendMessage("Missing htmls for the whole world.");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if (npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
}
return true;
}

View File

@@ -0,0 +1,119 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package handlers.admincommandhandlers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.handler.IAdminCommandHandler;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
/**
* @author Mobius
*/
public class AdminMissingHtmls implements IAdminCommandHandler
{
private static final String[] ADMIN_COMMANDS =
{
"admin_geomap_missing_htmls",
"admin_world_missing_htmls"
};
@Override
public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
final StringTokenizer st = new StringTokenizer(command, " ");
final String actualCommand = st.nextToken();
switch (actualCommand.toLowerCase())
{
case "admin_geomap_missing_htmls":
{
final int x = ((activeChar.getX() - L2World.MAP_MIN_X) >> 15) + L2World.TILE_X_MIN;
final int y = ((activeChar.getY() - L2World.MAP_MIN_Y) >> 15) + L2World.TILE_Y_MIN;
final int topLeftX = (x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE;
final int topLeftY = (y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE;
final int bottomRightX = (((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
final int bottomRightY = (((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
activeChar.sendMessage("GeoMap: " + x + "_" + y + " (" + topLeftX + "," + topLeftY + " to " + bottomRightX + "," + bottomRightY + ")");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if ((npc.getLocation().getX() > topLeftX) && (npc.getLocation().getX() < bottomRightX) && (npc.getLocation().getY() > topLeftY) && (npc.getLocation().getY() < bottomRightY) && npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
case "admin_world_missing_htmls":
{
activeChar.sendMessage("Missing htmls for the whole world.");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if (npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
}
return true;
}
@Override
public String[] getAdminCommandList()
{
return ADMIN_COMMANDS;
}
}

View File

@@ -281,6 +281,8 @@
<admin command="admin_geo_can_move" accessLevel="100" />
<admin command="admin_geogrid" accessLevel="100" />
<admin command="admin_geomap" accessLevel="100" />
<!-- ADMIN MISSING HTMLS -->
<admin command="admin_geomap_missing_htmls" accessLevel="100" />
<admin command="admin_world_missing_htmls" accessLevel="100" />

View File

@@ -99,6 +99,7 @@ import handlers.admincommandhandlers.AdminLogin;
import handlers.admincommandhandlers.AdminManor;
import handlers.admincommandhandlers.AdminMenu;
import handlers.admincommandhandlers.AdminMessages;
import handlers.admincommandhandlers.AdminMissingHtmls;
import handlers.admincommandhandlers.AdminMobGroup;
import handlers.admincommandhandlers.AdminMonsterRace;
import handlers.admincommandhandlers.AdminOlympiad;
@@ -427,6 +428,7 @@ public class MasterHandler
AdminManor.class,
AdminMenu.class,
AdminMessages.class,
AdminMissingHtmls.class,
AdminMobGroup.class,
AdminMonsterRace.class,
AdminOlympiad.class,

View File

@@ -16,19 +16,13 @@
*/
package handlers.admincommandhandlers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.handler.IAdminCommandHandler;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import com.l2jmobius.gameserver.util.GeoUtils;
@@ -45,9 +39,7 @@ public class AdminGeodata implements IAdminCommandHandler
"admin_geo_can_move",
"admin_geo_can_see",
"admin_geogrid",
"admin_geomap",
"admin_geomap_missing_htmls",
"admin_world_missing_htmls"
"admin_geomap"
};
@Override
@@ -145,66 +137,6 @@ public class AdminGeodata implements IAdminCommandHandler
activeChar.sendMessage("GeoMap: " + x + "_" + y + " (" + ((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + "," + ((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + " to " + ((((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1) + "," + ((((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1) + ")");
break;
}
case "admin_geomap_missing_htmls":
{
final int x = ((activeChar.getX() - L2World.MAP_MIN_X) >> 15) + L2World.TILE_X_MIN;
final int y = ((activeChar.getY() - L2World.MAP_MIN_Y) >> 15) + L2World.TILE_Y_MIN;
final int topLeftX = (x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE;
final int topLeftY = (y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE;
final int bottomRightX = (((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
final int bottomRightY = (((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
activeChar.sendMessage("GeoMap: " + x + "_" + y + " (" + topLeftX + "," + topLeftY + " to " + bottomRightX + "," + bottomRightY + ")");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if ((npc.getLocation().getX() > topLeftX) && (npc.getLocation().getX() < bottomRightX) && (npc.getLocation().getY() > topLeftY) && (npc.getLocation().getY() < bottomRightY) && npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
case "admin_world_missing_htmls":
{
activeChar.sendMessage("Missing htmls for the whole world.");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if (npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
}
return true;
}

View File

@@ -0,0 +1,119 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package handlers.admincommandhandlers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
import com.l2jmobius.gameserver.enums.InstanceType;
import com.l2jmobius.gameserver.handler.IAdminCommandHandler;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
/**
* @author Mobius
*/
public class AdminMissingHtmls implements IAdminCommandHandler
{
private static final String[] ADMIN_COMMANDS =
{
"admin_geomap_missing_htmls",
"admin_world_missing_htmls"
};
@Override
public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
final StringTokenizer st = new StringTokenizer(command, " ");
final String actualCommand = st.nextToken();
switch (actualCommand.toLowerCase())
{
case "admin_geomap_missing_htmls":
{
final int x = ((activeChar.getX() - L2World.MAP_MIN_X) >> 15) + L2World.TILE_X_MIN;
final int y = ((activeChar.getY() - L2World.MAP_MIN_Y) >> 15) + L2World.TILE_Y_MIN;
final int topLeftX = (x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE;
final int topLeftY = (y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE;
final int bottomRightX = (((x - L2World.TILE_ZERO_COORD_X) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
final int bottomRightY = (((y - L2World.TILE_ZERO_COORD_Y) * L2World.TILE_SIZE) + L2World.TILE_SIZE) - 1;
activeChar.sendMessage("GeoMap: " + x + "_" + y + " (" + topLeftX + "," + topLeftY + " to " + bottomRightX + "," + bottomRightY + ")");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if ((npc.getLocation().getX() > topLeftX) && (npc.getLocation().getX() < bottomRightX) && (npc.getLocation().getY() > topLeftY) && (npc.getLocation().getY() < bottomRightY) && npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
case "admin_world_missing_htmls":
{
activeChar.sendMessage("Missing htmls for the whole world.");
final List<Integer> results = new ArrayList<>();
for (L2Object obj : L2World.getInstance().getVisibleObjects())
{
if (obj.isNpc() && !obj.isMonster() && !results.contains(obj.getId()))
{
final L2Npc npc = (L2Npc) obj;
if (npc.getInstanceType() == InstanceType.L2ObservationInstance)
{
continue;
}
if (npc.isTalkable() && !npc.hasListener(EventType.ON_NPC_FIRST_TALK) && (npc.getHtmlPath(npc.getId(), 0) == "data/html/npcdefault.htm"))
{
results.add(npc.getId());
}
}
}
Collections.sort(results);
for (int id : results)
{
activeChar.sendMessage("NPC " + id + " does not have a default html.");
}
activeChar.sendMessage("Found " + results.size() + " results.");
break;
}
}
return true;
}
@Override
public String[] getAdminCommandList()
{
return ADMIN_COMMANDS;
}
}