Index: net/sf/l2j/gameserver/GameServer.java =================================================================== RCS file: /cvsroot/l2j/L2_Gameserver/java/net/sf/l2j/gameserver/GameServer.java,v retrieving revision 1.29.2.15.2.6.2.13 diff -u -r1.29.2.15.2.6.2.13 GameServer.java --- GameServer.java 12 Apr 2005 15:25:23 -0000 1.29.2.15.2.6.2.13 +++ GameServer.java 21 Apr 2005 20:08:09 -0000 @@ -260,6 +260,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.admincommandhandlers.AdminAddDoor; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminAdmin; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminAnnouncements; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminBan; @@ -609,6 +610,7 @@ _adminCommandHandler.registerAdminCommandHandler(new AdminKick()); _adminCommandHandler.registerAdminCommandHandler(new AdminMonsterRace()); _adminCommandHandler.registerAdminCommandHandler(new AdminEditNpc()); + _adminCommandHandler.registerAdminCommandHandler(new AdminAddDoor()); _userCommandHandler = UserCommandHandler.getInstance(); _userCommandHandler.registerUserCommandHandler(new Loc()); Index: net/sf/l2j/gameserver/model/L2DoorInstance.java =================================================================== RCS file: /cvsroot/l2j/L2_Gameserver/java/net/sf/l2j/gameserver/model/L2DoorInstance.java,v retrieving revision 1.3.2.2.2.2 diff -u -r1.3.2.2.2.2 L2DoorInstance.java --- L2DoorInstance.java 4 Feb 2005 13:05:27 -0000 1.3.2.2.2.2 +++ L2DoorInstance.java 21 Apr 2005 20:09:05 -0000 @@ -46,99 +46,156 @@ package net.sf.l2j.gameserver.model; import java.util.logging.Logger; +import net.sf.l2j.gameserver.serverpackets.*; +import net.sf.l2j.gameserver.templates.L2Weapon; +import net.sf.l2j.gameserver.ClientThread; -import net.sf.l2j.Config; +public class L2DoorInstance extends L2Character { + private static Logger _log = Logger.getLogger(L2DoorInstance.class + .getName()); + + private int _damage; -/** - * This class ... - * - * @version $Revision: 1.3.2.2.2.2 $ $Date: 2005/02/04 13:05:27 $ - */ -public class L2DoorInstance extends L2Object -{ - private static Logger _log = Logger.getLogger(L2DoorInstance.class.getName()); - - private int _damage; private int _open; + private int _enemy; - private int _doorId; - - /** - * @return Returns the doorId. - */ - public int getDoorId() - { - return _doorId; - } - /** - * @param doorId The doorId to set. - */ - public void setDoorId(int doorId) - { - _doorId = doorId; - } - /** - */ - public L2DoorInstance() - { + + private int _doorId; + + private boolean isAttackable; + + private String _name; + + public int getDoorId() { + return _doorId; + } + + public void setDoorId(int doorId) { + _doorId = doorId; + } + + public L2DoorInstance() { super(); + setName("Door"); } - - /** - * this is called when a player interacts with this NPC - * @param player - */ - public void onAction(L2PcInstance player) - { - if (Config.DEBUG) _log.fine("Door activated"); - } - /** - * @return Returns the damage. - */ - public int getDamage() - { + + public void onAction(L2PcInstance player) { + if (this != player.getTarget()) { + if (player.getCurrentState() == L2Character.STATE_CASTING) { + player.cancelCastMagic(); + } + player.setCurrentState(L2Character.STATE_IDLE); + _log.fine("new target selected:" + getObjectId()); + player.setTarget(this); + MyTargetSelected my = new MyTargetSelected(getObjectId(), player + .getLevel()); + player.sendPacket(my); + + if (isAttackable()) { + DoorStatusUpdate su = new DoorStatusUpdate(this); + player.sendPacket(su); + } + } else { + if (isAttackable() && (!player.isInCombat())) { + if (Math.abs(player.getZ() - getZ()) < 400) { + player.startAttack(this); + } else { + player.sendPacket(new ActionFailed()); + } + } + if (!isAttackable()) { + + } + } + } + + public void onActionShift(ClientThread client) { + L2PcInstance player = client.getActiveChar(); + if (player.getAccessLevel() >= 100) { + player.setTarget(this); + MyTargetSelected my = new MyTargetSelected(getObjectId(), player + .getLevel()); + player.sendPacket(my); + + if (isAttackable()) { + DoorStatusUpdate su = new DoorStatusUpdate(this); + player.sendPacket(su); + } + + NpcHtmlMessage html = new NpcHtmlMessage(1); + StringBuffer html1 = new StringBuffer( + ""); + html1.append(""); + html1.append(""); + + html1.append(""); + html1.append(""); + html1.append(""); + + html1.append(""); + html1.append(""); + + html1 + .append(""); + html1 + .append(""); + html1.append("
S.Y.L. Says:

Hello baby~
Object ID: " + getObjectId() + "


Class: " + getClass().getName() + + "

"); + + html.setHtml(html1.toString()); + player.sendPacket(html); + } else { + // attack the mob without moving? + } + + player.sendPacket(new ActionFailed()); + } + + public int getDamage() { return _damage; } - /** - * @param damage The damage to set. - */ - public void setDamage(int damage) - { + + public void setDamage(int damage) { _damage = damage; } - /** - * @return Returns the enemy. - */ - public int getEnemy() - { + + public int getEnemy() { return _enemy; } - /** - * @param enemy The enemy to set. - */ - public void setEnemy(int enemy) - { + + public void setEnemy(int enemy) { _enemy = enemy; } - /** - * @return Returns the open. - */ - public int getOpen() - { + + public int getOpen() { return _open; } - /** - * @param open The open to set. - */ - public void setOpen(int open) - { + + public void setOpen(int open) { _open = open; } - /* (non-Javadoc) - * @see net.sf.l2j.gameserver.model.L2Object#isAttackable() - */ - public boolean isAttackable() - { - return false; - } + + public boolean isAttackable() { + return isAttackable; + } + + public void setAttackable(boolean ia) { + isAttackable = ia; + } + + public L2Weapon getActiveWeapon() { + return null; + } + + @Override + protected int getDistanceToWatchObject() { + // TODO Auto-generated method stub + return 200; + } + + @Override + protected int getDistanceToForgetObject() { + // TODO Auto-generated method stub + return 2000; + } } Index: net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAddDoor.java =================================================================== RCS file: net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAddDoor.java diff -N AdminAddDoor.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ AdminAddDoor.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,96 @@ +package net.sf.l2j.gameserver.handler.admincommandhandlers; + +import java.io.IOException; + +import net.sf.l2j.gameserver.IdFactory; +import net.sf.l2j.gameserver.handler.IAdminCommandHandler; +import net.sf.l2j.gameserver.model.L2DoorInstance; +import net.sf.l2j.gameserver.model.L2PcInstance; +import net.sf.l2j.gameserver.model.L2World; +import net.sf.l2j.gameserver.serverpackets.DoorInfo; +import net.sf.l2j.gameserver.serverpackets.DoorStatusUpdate; +import java.util.logging.Logger; + +/** + * @author S.Y.L + * + * TODO To change the template for this generated type comment go to Window - + * Preferences - Java - Code Style - Code Templates + */ +public class AdminAddDoor implements IAdminCommandHandler { + static Logger _log = Logger.getLogger(AdminAddDoor.class.getName()); + + private static String[] _adminCommands = { "admin_add_door", "admin_door" }; + + public static int[] castleDoorid = { 17220001, 17220002, 22220001, + 22220002, 17250001, 17250002, 17250003, 18140001, 18140002, + 18140003, 20180001, 20180002, 21190001, 21190002, 21190003, + 23120001, 23120002, 23120003, 19210001, 19210002, 19210003, + 19210004, 19210005, 19210006, 19210007, 19210008, 19210009, + 19210010, 20220001, 20220002, 20220003, 20220004, 20220005, + 20220006, 20220007, 20220008, 20220009, 20220010, 22190001, + 22190002, 22190003, 22190004, 22190005, 22190006, 22190007, + 22190008, 22190009, 22190010, 23220001, 23220002, 23220003, + 23220004, 23220005, 23220006, 23220007, 23220008, 23220009, + 23220010, 23250001, 23250002, 23250003, 23250004, 23250005, + 23250006, 23250007, 23250008, 23250009, 23250010, 24180001, + 24180002, 24180003, 24180004, 24180005, 24180006, 24180007, + 24180008, 24180009, 24180010, 24180011, 24180012, 24180013, + 24180014, 24180015, 24180016, 24180017, 24180018, 24180019, + 24180020, 24180021, 21210001, 21210002, 22170001, 22170002, + 22170003, 22170004, 25170001, 25170002, 25170003, 25170004, + 25170005, 25170006, 20210001, 20210002, 20210003, 21240001, + 21240002, 21240003, 21240004, 21240005, 21240006, 23180001, + 23180002, 23180003, 23180004, 23180005, 23180006, 22250001, + 22250002, 22250003, 22250004, 22250005, 22250006, 22250007, + 22250008, 22250009, 22250010, 22250011, 22250012, 22250013, + 22250014, 22250015, 22250016, 22250017, 22250018, 22250019, + 22250020, 22250021, 22250022, 22250023, 22250024, 22250025, + 22250026, 22250027, 22250028 }; + + public static int[] doorid = { 19210000, 20220000, 22190000, 23220000, + 23250000, 24180000 }; + + private static final int REQUIRED_LEVEL = 100; + + public boolean useAdminCommand(String command, L2PcInstance activeChar) { + System.out.println("LA"); + if (!(checkLevel(activeChar.getAccessLevel()) && activeChar.isGM())) { + return false; + } + + if (command.startsWith("admin_add_door") + || command.startsWith("admin_door")) { + + DoorStatusUpdate doorUpdate = null; + for (int i = 0; i < castleDoorid.length; i++) { + L2DoorInstance door = new L2DoorInstance(); + door.setDoorId(castleDoorid[i]); + door.setObjectId(IdFactory.getInstance().getNextId()); + + door.setOpen(1); + door.setDamage(10000); + door.setEnemy(50000); + door.setAttackable(true); + L2World.getInstance().storeObject(door); + L2World.getInstance().addVisibleObject(door); + DoorInfo doorInfo = new DoorInfo(door); + DoorStatusUpdate doorStatus = new DoorStatusUpdate(door); + activeChar.sendPacket(doorInfo); + activeChar.broadcastPacket(doorInfo); + activeChar.sendPacket(doorStatus); + activeChar.broadcastPacket(doorStatus); + activeChar.addKnownObject(door); + } + } + return true; + } + + public String[] getAdminCommandList() { + return _adminCommands; + } + + private boolean checkLevel(int level) { + return (level >= REQUIRED_LEVEL); + } +}