diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminTeleport.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminTeleport.java index e054e38448cff587b5d5a91ca33925d22792d89f..9be417e20798b82a549ca5f102903b1cc8e87adc 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminTeleport.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminTeleport.java @@ -27,6 +27,7 @@ import com.l2jserver.gameserver.ai.CtrlIntention; import com.l2jserver.gameserver.datatables.NpcTable; import com.l2jserver.gameserver.datatables.SpawnTable; import com.l2jserver.gameserver.handler.IAdminCommandHandler; +import com.l2jserver.gameserver.instancemanager.MapRegionManager; import com.l2jserver.gameserver.instancemanager.RaidBossSpawnManager; import com.l2jserver.gameserver.model.L2CharPosition; import com.l2jserver.gameserver.model.L2Object; @@ -78,7 +79,8 @@ public class AdminTeleport implements IAdminCommandHandler "admin_godown", "admin_tele", "admin_teleto", - "admin_instant_move" + "admin_instant_move", + "admin_sendhome" }; @Override @@ -242,7 +244,38 @@ public class AdminTeleport implements IAdminCommandHandler activeChar.sendMessage("Usage: //go<north|south|east|west|up|down> [offset] (default 150)"); } } - + else if (command.startsWith("admin_sendhome")) + { + StringTokenizer st = new StringTokenizer(command, " "); + st.nextToken(); // Skip command. + if (st.countTokens() > 1) + { + activeChar.sendMessage("Usage: //sendhome <playername>"); + } + else if (st.countTokens() == 1) + { + final String name = st.nextToken(); + final L2PcInstance player = L2World.getInstance().getPlayer(name); + if (player == null) + { + activeChar.sendPacket(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME); + return false; + } + teleportHome(player); + } + else + { + final L2Object target = activeChar.getTarget(); + if (target instanceof L2PcInstance) + { + teleportHome(target.getActingPlayer()); + } + else + { + activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); + } + } + } return true; } @@ -252,6 +285,40 @@ public class AdminTeleport implements IAdminCommandHandler return ADMIN_COMMANDS; } + /** + * This method sends a player to it's home town. + * @param player the player to teleport. + */ + private void teleportHome(L2PcInstance player) + { + String regionName; + switch(player.getRace()) + { + case Elf: + regionName = "elf_town"; + break; + case DarkElf: + regionName = "darkelf_town"; + break; + case Orc: + regionName = "orc_town"; + break; + case Dwarf: + regionName = "dwarf_town"; + break; + case Kamael: + regionName = "kamael_town"; + break; + case Human: + default: + regionName = "talking_island_town"; + } + + player.teleToLocation(MapRegionManager.getInstance().getMapRegionByName(regionName).getSpawnLoc(), true); + player.setInstanceId(0); + player.setIsIn7sDungeon(false); + } + private void teleportTo(L2PcInstance activeChar, String Coords) { try diff --git a/L2J_DataPack_BETA/dist/sql/game/admin_command_access_rights.sql b/L2J_DataPack_BETA/dist/sql/game/admin_command_access_rights.sql index ee2859bde03b4a3b3767f415c97ce43fc2162043..a98933511adbdcc5496f4b0ecb1c1db951ce3a7b 100644 --- a/L2J_DataPack_BETA/dist/sql/game/admin_command_access_rights.sql +++ b/L2J_DataPack_BETA/dist/sql/game/admin_command_access_rights.sql @@ -583,6 +583,7 @@ INSERT IGNORE INTO `admin_command_access_rights` VALUES ('admin_tele',1,'false'), ('admin_teleto',1,'false'), ('admin_instant_move',1,'false'), +('admin_sendhome',1,'true'), -- ADMIN TERRITORY WAR ('admin_territory_war',1,'false'),