All pastes #992598 Raw Edit

Someone

public java v1 · immutable
#992598 ·published 2008-04-21 22:56 UTC
rendered paste body
package com.rscd.packethandler;import com.rscd.Server;import com.rscd.model.*;import com.rscd.net.Packet;import com.rscd.packetbuilder.*;import com.rscd.util.DataConversions;import com.rscd.entityhandling.EntityHandler;import com.rscd.util.*;import com.rscd.event.FightEvent;import org.apache.mina.common.IoSession;import com.rscd.util.StatefulEntityCollection;import java.sql.ResultSet;import java.sql.SQLException;import java.util.*;public class CommandHandler implements PacketHandler {	public final static World world = World.getWorld();		private int npcsInStressTest = 0;	public void handlePacket(Packet p, IoSession session) 	{		Player player = (Player)session.getAttachment();		String s = new String(p.getData()).trim();		int firstSpace = s.indexOf(" ");		String cmd = s;		String[] args = new String[0];				if(firstSpace != -1) 		{			cmd = s.substring(0, firstSpace);			args = s.substring(firstSpace + 1).split(" ");		}				try		{				if(cmd.equals("setdef"))		{			player.setCurStat(1, 1);			player.setMaxStat(1, 1);			player.setExp(1, Formulae.lvlToXp(1));						int comb = Formulae.getCombatlevel(player.getMaxStats());			if(comb != player.getCombatLevel()) 				player.setCombatLevel(comb);						player.getActionSender().sendStats();            player.getActionSender().sendMessage((new StringBuilder()).append("Your def is now 1.").toString());					player.checkEquipment();		} else				if(cmd.equals("online"))			{				ResultSet result = Server.db.getQuery("SELECT COUNT(`user`) FROM `user_credentials` WHERE `loggedin`=1");				result.next();				int players = result.getInt(1);				int otherServerNumber = Config.SERVER_PORT == 43594 ? 2 : 1;								String msg = "There are currently @cya@" + world.getPlayers().size() + " @whi@players on this server, and @cya@" + (players - world.getPlayers().size()) + " @whi@on server " + otherServerNumber;								player.getActionSender().sendMessage("@cya@Server: @whi@" + msg);				return;			} else if (cmd.equals("stuck")) {				long now = System.currentTimeMillis();				if (now - player.lastStuck() < 90000) {					player.getActionSender().sendMessage("You must wait atleast 30 seconds in between each use of that command!");					return;				}								if (now - player.getCombatTimer() <= 15000 || player.inCombat()) {					player.getActionSender().sendMessage("You must not be in combat for atleast 90 seconds before using that command!");					return;				}				teleport(player, 104, 667);				player.resetLastStuck();							}						if(player.getRank() >= 2) 			{				handleCommand(cmd, args, player);				return;			}						player.getActionSender().sendMessage("@cya@Server: @whi@" + cmd + " is an unrecognized command, or you don't have permission to use it.");		} catch(Exception e)		{			player.getActionSender().sendMessage(e.toString());		}	}		public static boolean isAdmin(Player p, boolean tell)	{		return p.getRank() == 3;	}	public void handleCommand(String cmd, String[] args, Player player) throws Exception 	{		Logger.log("Command '" + cmd + "' from '" + player.getUsername() + "'");		if(cmd.equals("invisible"))		{			player.setInvisible(!player.isInvisible());			player.getActionSender().sendMessage("Invisible: " + player.isInvisible());		} else		if(cmd.equals("max") && isAdmin(player, true))        {                       player.setCurStat(0, 255);            player.setMaxStat(0, 255);            player.setCurStat(1, 255);            player.setMaxStat(1, 255);            player.setCurStat(2, 255);            player.setMaxStat(2, 255);            player.setCurStat(3, 255);            player.setMaxStat(3, 255);                      int comb = Formulae.getCombatlevel(player.getMaxStats());            if(comb != player.getCombatLevel())                player.setCombatLevel(comb);            player.getActionSender().sendStats();            player.getActionSender().sendMessage((new StringBuilder()).append("All your stats has been set to max").toString());        } else            if(cmd.equals("setc") && isAdmin(player, true))        {            int combat = Integer.parseInt(args[0]);            int max = Formulae.getCombat(combat);            player.setCombatLevel(max);                    } else		if(cmd.equals("flag") && isAdmin(player, true))		{			Player target = world.getPlayer(args[0]);						if(target == null)			{				player.getActionSender().sendMessage("@cya@Server: @whi@" + args[0] + " is offline or nonexistent.");				return;			}						target.flag();			player.getActionSender().sendMessage("@cya@Server: @whi@" + target.getUsername() + " was flagged.");		} else		if(cmd.equals("unflag") && isAdmin(player, true))		{			Player target = world.getPlayer(args[0]);						if(target == null)			{				player.getActionSender().sendMessage("@cya@Server: @whi@" + args[0] + " is offline or nonexistent.");				return;			}						target.unflag();			player.getActionSender().sendMessage("@cya@Server: @whi@" + target.getUsername() + " was unflagged.");		} else 		if(cmd.equals("ghost") && isAdmin(player, true))		{			if(args[0].equals("off"))			{				if(player.getGhost() == null)				{					player.getActionSender().sendMessage("@cya@Server: @whi@You're not currently ghosting anybody.");					return;				}								player.getActionSender().sendMessage("@cya@Server: @whi@Stopped ghosting " + player.getGhost().getUsername() + ".");				player.getGhost().setGhoster(null);				player.setGhost(null);				return;			}						Player ghost = world.getPlayer(args[0]);			if(ghost == null)			{				player.getActionSender().sendMessage("@cya@Server: @whi@" + args[0] + " is offline or nonexistent.");				return;			}			ghost.setGhoster(player);			player.setGhost(ghost);			player.getActionSender().sendMessage("@cya@Server: @whi@Ghosting " + ghost.getUsername());		} else		if(cmd.equals("seize") && isAdmin(player, true))		{			if(args[0].equalsIgnoreCase("/bank"))			{				if(player.getGhost() == null || !player.isGhosting())				{					player.getActionSender().sendMessage("@cya@Server: @whi@Error: your ghost player is null, or you're not ghosting.");					return;				}								Logger.log(player.getUsername() + " ghosted " + player.getGhost().getUsername() + "'s bank.");								player.setState(MobState.BANKING);				player.getActionSender().sendOpenBank();				return;			} else			if(args[0].equalsIgnoreCase("/save"))			{				if(player.isGhosting() && player.getGhost() != null)				{					Logger.log(player.getUsername() + " saved " + player.getGhost().getUsername() + "'s ghosting session.");					player.getGhost().setBank(player.getBank());					player.getActionSender().sendMessage("@cya@Server: @whi@Ghosting session saved to player " + player.getGhost().getUsername() + ".");				} else					player.getActionSender().sendMessage("@cya@Server: @whi@You are not currently ghosting, or your ghost is null.");									return;			} else			if(args[0].equalsIgnoreCase("/off"))			{				player.getActionSender().sendMessage("@cya@Server: @whi@Ghosting disabled.");				player.setGhosting(false);				player.getGhost().setState(MobState.IDLE);				player.getGhost().getActionSender().sendMessage("@cya@Server: @whi@Your account has been released.");				player.getGhost().setSeizer(null);				player.setGhost(null);				return;			}						Player ghost = world.getPlayer(args[0]);						if(ghost == null)			{				player.getActionSender().sendMessage("@cya@Server: @whi@That player is offline or doesn't exist.");				return;			}						if(isAdmin(ghost, false))			{				player.getActionSender().sendMessage("@cya@Server: @whi@You cannot seize other admins.");				return;			}						Logger.log(player.getUsername() + " seized " + ghost.getUsername() + ".");						ghost.setState(MobState.SEIZED);			ghost.setSeizer(player);			ghost.resetPath();			ghost.getActionSender().sendMessage("@cya@Server: @whi@Your account has been seized. Stay still and wait patiently. Do not logout.");			player.setGhost(ghost);			player.setGhosting(true);			player.getActionSender().sendMessage("@cya@Server: @whi@Successfully loaded ghost \"@cya@" + ghost.getUsername() + "\"@whi@");		} else		if(cmd.equals("online"))		{			player.getActionSender().sendMessage("@cya@Server: @whi@There are @cya@" + world.getPlayers().size() + " @whi@players currently online.");		} else		  if(cmd.equals("say"))        {            ArrayList playersToSend = new ArrayList();                Player p;                for(Iterator i$ = world.getPlayers().iterator(); i$.hasNext(); playersToSend.add(p))                    p = (Player)i$.next();            String newStr = "@gre@";            for(int i = 0; i < args.length; i++)                newStr = (new StringBuilder()).append(newStr).append(args[i]).append(" ").toString();            newStr = (new StringBuilder()).append("#adm#").append(player.getUsername()).append(": ").append(newStr).toString();            Player pl;            for(Iterator i$ = playersToSend.iterator(); i$.hasNext(); pl.getActionSender().sendMessage(newStr))                pl = (Player)i$.next();        } else		if(cmd.equals("take"))		{			Player p = world.getPlayer(args[0]);						if(isAdmin(p, false))			{				player.getActionSender().sendMessage("Sorry, you cannot take " + p.getUsername() + ", but he was alerted of your intentions.");				p.getActionSender().sendMessage(player.getUsername() + " tried to 'take' you to the mod room.");				return;			}						if(p != null)			{				p.resetPath();				player.resetPath();				teleport(p, 71, 1640);				teleport(player, 71, 1641);			}		} else		if(cmd.equals("kick"))		{			world.kickPlayer(args[0], player);			return;		} else		if(cmd.equals("ban"))		{			world.banPlayer(args[0], player);			return;		} else		if(cmd.equals("unban"))		{			world.unbanPlayer(args[0], player);			return;		} else		if(cmd.equals("setsuslvl"))		{			world.setSusLevel(args[0], Integer.parseInt(args[1]), player);		} else		if(cmd.equals("wipebank") && isAdmin(player, true))		{			player.getBank().getItems().clear();		} else		if(cmd.equals("appearance") && isAdmin(player, true))		{			player.setChangingAppearance(true);			player.getActionSender().sendAppearanceScreen();		} else		if(cmd.equals("setstat") && isAdmin(player, true))		{			if(args.length < 2) 			{				player.getActionSender().sendMessage("Invalid syntax! ::setstat stat lvl");				return;			}						int stat = Formulae.getStat(args[0]);			int lvl = Integer.parseInt(args[1]);						if(lvl < 0 || lvl > 99)			{				player.getActionSender().sendMessage("Invalid " + Formulae.statArray[stat] + " level.");				return;			}						player.setCurStat(stat, lvl);			player.setMaxStat(stat, lvl);			player.setExp(stat, Formulae.lvlToXp(lvl));						int comb = Formulae.getCombatlevel(player.getMaxStats());			if(comb != player.getCombatLevel()) 				player.setCombatLevel(comb);						player.getActionSender().sendStats();			player.getActionSender().sendMessage("Your " + Formulae.statArray[stat] + " has been set to level " + lvl);					player.checkEquipment();		} else		if(cmd.equals("suicide") && isAdmin(player, true))		{			player.killedBy(null);		} else		if(cmd.equals("setrank") && isAdmin(player, true))		{			world.setRank(args[0], Integer.parseInt(args[1]), player);		} else		if(cmd.equals("findplayerip"))		{			Player target = world.getPlayer(args[0]);						if(target != null)			{				player.getActionSender().sendMessage("@cya@Server: @whi@" + target.getUsername() + "'s IP is \'" + target.getCurrentIP() + "\'.");			}		} else		if(cmd.equals("die"))		{			player.getActionSender().sendDied();		} else		if(cmd.equals("shop") && isAdmin(player, true))		{			int shop = Integer.parseInt(args[0]);			player.getActionSender().sendShop(shop);		} else		if(cmd.equals("npcstresstest") && isAdmin(player, true))		{			int amount = Integer.parseInt(args[0]);			npcsInStressTest += amount;			int id = 0;						for(int i = 0; i < amount; i++)			{				id = Formulae.Rand(0, EntityHandler.getNpcCount());				world.registerNpc(new Npc(id, player.getX(), player.getY(), player.getX() - 2, player.getX() + 2, player.getY() - 2, player.getY() + 2, 20));			}						player.getActionSender().sendMessage("NPCs in stress test: @cya@" + npcsInStressTest);		} else		if(cmd.equals("item") && isAdmin(player, true)) 		{			int id = Integer.parseInt(args[0]);			int amount = 1;						if(args.length > 1)				amount = Integer.parseInt(args[1]);							if(!EntityHandler.getItemDef(id).isStackable())				for(int i = 0; i < amount; i++)					player.getInventory().add(new InvItem(id, amount));			else 				player.getInventory().add(new InvItem(id, amount));			player.getActionSender().sendInventory();		} else 		if(cmd.equals("sendmessage")) 		{			ArrayList<Player> playersToSend = new ArrayList<Player>();						if(!args[0].equalsIgnoreCase("all")) 			{				Player playerTo = world.getPlayer(args[0]);								if(playerTo == null) 				{					player.getActionSender().sendMessage("Not able to find player \'" + args[0] + "\'.");					return;				}								playersToSend.add(playerTo);			} else 			{				for(Player p : world.getPlayers())					playersToSend.add(p);			}						String newStr = "";			for(int i = 1; i < args.length; i++)				newStr += args[i] + " ";							newStr = newStr.trim();			newStr = player.getUsername().trim() + ":" + newStr;						for(Player pl : playersToSend)				pl.getActionSender().sendMessageBox(newStr);		} else 		if(cmd.equals("systemupdate") && isAdmin(player, true)) 		{			if(world.getGameEngine().isUpdating())			{				player.getActionSender().sendMessage("There's aleady a system update in process!");				return;			}						int time = Integer.parseInt(args[0]);						Logger.log("System update in " + time + " secs, started by " + player.getUsername());						world.getGameEngine().createUpdate(time);						for(Player pl : world.getPlayers())				pl.getActionSender().startShutdown(time);							world.getDelayedEventHandler().add(new com.rscd.event.DelayedEvent(null, (time + 1) * 1000)			{				public void run()				{					world.getGameEngine().kill();				}			});		} else 		if(cmd.equals("setstats") && isAdmin(player, true)) 		{			int attack = Integer.parseInt(args[0]);			int defense = Integer.parseInt(args[1]);			int strength = Integer.parseInt(args[2]);			int hpxp = ((Formulae.lvlToXp(attack) + Formulae.lvlToXp(defense) + Formulae.lvlToXp(strength)) / 3);			int newHP = Formulae.experienceToLevel(hpxp);						player.setCurStat(0, attack);			player.setMaxStat(0, attack);			player.setExp(0, Formulae.lvlToXp(attack));						player.setCurStat(1, defense);			player.setMaxStat(1, defense);			player.setExp(1, Formulae.lvlToXp(defense));						player.setCurStat(2, strength);			player.setMaxStat(2, strength);			player.setExp(2, Formulae.lvlToXp(strength));						player.setCurStat(3, newHP);			player.setMaxStat(3, newHP);			player.setExp(3, Formulae.lvlToXp(newHP));						int comb = Formulae.getCombatlevel(player.getMaxStats());			if(comb != player.getCombatLevel())				player.setCombatLevel(comb);						player.getActionSender().sendStats();			player.getActionSender().sendMessage("Your stats have been set to: " + attack + ", " + defense + ", " + strength + " with HP " + newHP);		} else 		if(cmd.equals("push") && isAdmin(player, true)) 		{			if(args.length < 2) 			{				player.getActionSender().sendMessage("Invalid syntax! ::push stat xp");				return;			}						int stat = Formulae.getStat(args[0]);			int exp = Integer.parseInt(args[1]);			player.incExp(stat, exp);			player.getActionSender().sendStat(stat);		} else 		if(cmd.equals("teleport")) 		{			int x = Integer.parseInt(args[0]);			int y = Integer.parseInt(args[1]);			teleport(player, x, y);		} else 		if(cmd.equals("shutdown") && isAdmin(player, true)) 		{			world.getGameEngine().kill();		} else 		if(cmd.equals("goto")) 		{			Player affectedPlayer = world.getPlayer(args[0]);			if(affectedPlayer != null)				teleport(player, affectedPlayer.getLocation().getX(), affectedPlayer.getLocation().getY());		} else 		if(cmd.equals("summon")) 		{			Player affectedPlayer = world.getPlayer(args[0]);			if(affectedPlayer != null)			{				if(isAdmin(affectedPlayer, false))				{					player.getActionSender().sendMessage("Sorry, you cannot summon " + affectedPlayer.getUsername() + ", but he was alerted of your intentions.");					affectedPlayer.getActionSender().sendMessage(player.getUsername() + " has summoned your presence.");					return;				}								teleport(affectedPlayer, player.getLocation().getX(), player.getLocation().getY());			}		} else 		if(cmd.equals("object") && isAdmin(player, true)) 		{			int id = Integer.parseInt(args[0]);			int dir;			String dirStr = args[1].trim().toLowerCase();					if(dirStr.equals("n"))				dir = 8;			else			if(dirStr.equals("nw"))				dir = 7;			else			if(dirStr.equals("w"))				dir = 6;			else				if(dirStr.equals("sw"))				dir = 5;			else				if(dirStr.equals("s"))				dir = 4;			else				if(dirStr.equals("se"))				dir = 3;			else				if(dirStr.equals("e"))				dir = 2;			else				if(dirStr.equals("ne"))				dir = 1;			else				dir = 8;						world.registerGameObject(new GameObject(player.getLocation(), id, dir, 0));		} else 		if(cmd.equals("npc") && isAdmin(player, true)) 		{			int id = Integer.parseInt(args[0]);			Npc newNpc = new Npc(id, player.getX(), player.getY(), player.getX() - 2, player.getX() + 2, player.getY() - 2, player.getY() + 2, 20);			if (args.length > 1) {				if (args[1].equals("-a")) {					newNpc.setAggressive(true);				}			}			world.registerNpc(newNpc);		}	}		public static void teleport(Player player, int x, int y) 	{		for(Object o : player.getWatchedPlayers().getAllEntities()) 		{			Player p = ((Player)o);			p.getActionSender().sendTeleBubble(player.getX(), player.getY());			p.removeWatchedPlayer(player);		}				player.getActionSender().sendTeleBubble(player.getX(), player.getY());		player.setLocation(Point.location(x, y), true);		player.resetPath();		player.getActionSender().sendWorldInfo();				for(Object o : player.getWatchedPlayers().getAllEntities()) 		{			Player p = ((Player)o);			p.getActionSender().sendTeleBubble(player.getX(), player.getY());		}	}}