read what i said 0.o
did it work?
Printable View
read what i said 0.o
did it work?
i did it, Fix Imports...
it says: nothing to fix in import statements
oh gosh replace your file with this
Code:package net.sf.odinms.client.messages;
import java.rmi.RemoteException;
import java.sql.*;
import java.text.DateFormat;
import java.util.*;
import java.util.logging.Level;
import net.sf.odinms.database.DatabaseConnection;
import net.sf.odinms.net.MaplePacket;
import net.sf.odinms.net.channel.ChannelServer;
import net.sf.odinms.net.world.remote.*;
import net.sf.odinms.server.*;
import net.sf.odinms.server.life.*;
import net.sf.odinms.server.maps.*;
import net.sf.odinms.tools.*;
import org.slf4j.Logger;
import java.net.*;
import java.io.*;
import net.sf.odinms.client.*;
import net.sf.odinms.net.world.PlayerCoolDownValueHolder;
import net.sf.odinms.server.maps.FakeCharacter;
public class GMCommand {
final private static String[] reasons = {"Hacking", "Botting", "Scamming", "Fake GM", "Harassment", "Advertising"};
private static int getNoticeType(String typestring) {
if (typestring.equals("n")) {
return 0;
} else if (typestring.equals("p")) {
return 1;
} else if (typestring.equals("l")) {
return 2;
} else if (typestring.equals("nv")) {
return 5;
} else if (typestring.equals("v")) {
return 5;
} else if (typestring.equals("b")) {
return 6;
}
return -1;
}
private static String joinAfterString(String splitted[], String str) {
for (int i = 1; i < splitted.length; i++) {
if (splitted[i].equalsIgnoreCase(str) && i + 1 < splitted.length) {
return StringUtil.joinStringFrom(splitted, i + 1);
}
}
return null;
}
public static int getOptionalIntArg(String splitted[], int position, int def) {
if (splitted.length > position) {
try {
return Integer.parseInt(splitted[position]);
} catch (NumberFormatException nfe) {
return def;
}
}
return def;
}
private static String getBannedReason(String name) {
boolean found = false;
int accid;
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("SELECT * FROM accounts WHERE name = ?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
found = true;
return "username: " + rs.getString("name") + " | banreason: " + rs.getString("banreason") + " | macs: " + rs.getString("macs");
}
rs.close();
ps.close();
} catch (Exception ex) {
}
if (!found) {
try {
PreparedStatement ps = con.prepareStatement("SELECT accountid FROM characters WHERE name = ?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
return "Error while trying to get banned reason";
}
accid = rs.getInt("accountid");
try {
PreparedStatement pse = con.prepareStatement("SELECT * FROM accounts WHERE id = ?");
pse.setInt(1, accid);
ResultSet rse = pse.executeQuery();
if (rse.next()) {
return "username: " + rs.getString("name") + " | banreason: " + rs.getString("banreason") + " | macs: " + rs.getString("macs");
}
rse.close();
pse.close();
} catch (Exception exe) {
}
rs.close();
ps.close();
} catch (Exception ee) {
}
}
return "Error while trying to get banned reason";
}
private static String getNamedArg(String splitted[], int startpos, String name) {
for (int i = startpos; i < splitted.length; i++) {
if (splitted[i].equalsIgnoreCase(name) && i + 1 < splitted.length) {
return splitted[i + 1];
}
}
return null;
}
private static Integer getNamedIntArg(String splitted[], int startpos, String name) {
String arg = getNamedArg(splitted, startpos, name);
if (arg != null) {
try {
return Integer.parseInt(arg);
} catch (NumberFormatException nfe) {
}
}
return null;
}
private static int getNamedIntArg(String splitted[], int startpos, String name, int def) {
Integer ret = getNamedIntArg(splitted, startpos, name);
if (ret == null) {
return def;
}
return ret.intValue();
}
private static ResultSet getReports() {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("SELECT * FROM reports");
return ps.executeQuery();
} catch (Exception ex) {
}
return null;
}
private static void deleteReport(int id) {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("DELETE FROM reports WHERE id = ?");
ps.setInt(1, id);
ps.executeUpdate();
ps.close();
} catch (Exception e) {
}
}
private static ResultSet getReport(int id) {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("SELECT * FROM reports where id = ?");
ps.setInt(1, id);
return ps.executeQuery();
} catch (Exception e) {
}
return null;
}
private static void setReportStatus(int id, String status) {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("UPDATE reports SET status = ? WHERE id = ?");
ps.setString(1, status);
ps.setInt(2, id);
ps.executeUpdate();
ps.close();
} catch (Exception e) {
}
}
private static String getCharInfoById(int id) {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("SELECT * FROM characters where id = ?");
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
return rs.getString("name");
}
} catch (Exception ex) {
}
return "error while trying to get name";
}
public static boolean executeGMCommand(MapleClient c, MessageCallback mc, String line, Logger log, List<Pair<MapleCharacter, String>> gmlog, Runnable persister) {
MapleCharacter player = c.getPlayer();
ChannelServer cserv = c.getChannelServer();
String[] splitted = line.split(" ");
if (splitted[0].equals("!chattype")) {
player.setGMChat(!c.getPlayer().getGMChat());
mc.dropMessage("Done.");
} else if (splitted[0].equals("!god")) {
player.setGodMode(!player.isGodMode());
mc.dropMessage("Done.");
} else if (splitted[0].equals("!warpmap")) {
for (MapleCharacter mch : c.getPlayer().getMap().getCharacters()) {
if (mch != null) {
int mapid = Integer.parseInt(splitted[1]);
MapleMap target = ChannelServer.getInstance(c.getChannel()).getMapFactory().getMap(mapid);
mch.changeMap(target, target.getPortal(0));
}
}
} else if (splitted[0].equals("!event")) {
if (c.getPlayer().getClient().getChannelServer().eventOn == false) {
int mapid = getOptionalIntArg(splitted, 1, c.getPlayer().getMapId());
c.getPlayer().getClient().getChannelServer().eventOn = true;
c.getPlayer().getClient().getChannelServer().eventMap = mapid;
try {
c.getChannelServer().getWorldInterface().broadcastMessage(null, MaplePacketCreator.serverNotice(6, c.getChannel(), "[Event] The event has started! Make sure you're in channel " + c.getChannel() + " And find the FM room in the FreeMarket where the event is starting!.").getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else {
c.getPlayer().getClient().getChannelServer().eventOn = false;
try {
c.getChannelServer().getWorldInterface().broadcastMessage(null, MaplePacketCreator.serverNotice(6, c.getChannel(), "[Event] The event has ended. Thanks to all of those who participated.").getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
}
} else if (splitted[0].equals("!fakechar")) {
for (int i = 0; i < getOptionalIntArg(splitted, 1, 1); i++) {
FakeCharacter fc = new FakeCharacter(c.getPlayer(), c.getPlayer().getId() + c.getPlayer().getFakeChars().size() + 1);
c.getPlayer().addFakeChar(fc);
}
mc.dropMessage("Please move around for it to take effect.");
} else if (splitted[0].equals("!resetcooldowns")) {
for (PlayerCoolDownValueHolder i : c.getPlayer().getAllCooldowns()) {
c.getPlayer().removeCooldown(i.skillId);
}
mc.dropMessage("Success.");
} else if (splitted[0].equals("!drop")) {
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
int itemId = Integer.parseInt(splitted[1]);
short quantity = (short) (short) getOptionalIntArg(splitted, 2, 1);
IItem toDrop;
if (ii.getInventoryType(itemId) == MapleInventoryType.EQUIP) {
toDrop = ii.getEquipById(itemId);
} else {
toDrop = new Item(itemId, (byte) 0, (short) quantity);
}
StringBuilder logMsg = new StringBuilder("Created by ");
logMsg.append(c.getPlayer().getName());
logMsg.append(" using !drop. Quantity: ");
logMsg.append(quantity);
toDrop.log(logMsg.toString(), false);
toDrop.setOwner(player.getName());
c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), toDrop, c.getPlayer().getPosition(), true, true);
} else if (splitted[0].equals("!goto")) {
HashMap<String, Integer> gotomaps = new HashMap<String, Integer>();
gotomaps.put("gmmap", 180000000);
gotomaps.put("southperry", 60000);
gotomaps.put("amherst", 1010000);
gotomaps.put("henesys", 100000000);
gotomaps.put("ellinia", 101000000);
gotomaps.put("perion", 102000000);
gotomaps.put("kerning", 103000000);
gotomaps.put("lith", 104000000);
gotomaps.put("sleepywood", 105040300);
gotomaps.put("florina", 110000000);
gotomaps.put("orbis", 200000000);
gotomaps.put("happy", 209000000);
gotomaps.put("elnath", 211000000);
gotomaps.put("ludi", 220000000);
gotomaps.put("aqua", 230000000);
gotomaps.put("leafre", 240000000);
gotomaps.put("mulung", 250000000);
gotomaps.put("herb", 251000000);
gotomaps.put("omega", 221000000);
gotomaps.put("korean", 222000000);
gotomaps.put("nlc", 600000000);
gotomaps.put("excavation", 990000000);
gotomaps.put("pianus", 230040420);
gotomaps.put("horntail", 240060200);
gotomaps.put("mushmom", 100000005);
gotomaps.put("griffey", 240020101);
gotomaps.put("manon", 240020401);
gotomaps.put("horseman", 682000001);
gotomaps.put("balrog", 105090900);
gotomaps.put("zakum", 280030000);
gotomaps.put("papu", 220080001);
gotomaps.put("showa", 801000000);
gotomaps.put("guild", 200000301);
gotomaps.put("shrine", 800000000);
gotomaps.put("skelegon", 240040511);
if (gotomaps.containsKey(splitted[1])) {
MapleMap target = cserv.getMapFactory().getMap(gotomaps.get(splitted[1]));
MaplePortal targetPortal = target.getPortal(0);
player.changeMap(target, targetPortal);
}
} else if (splitted[0].equals("!jail")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
int mapid = 200090300;
if (splitted.length > 2 && splitted[1].equals("2")) {
mapid = 980000404;
victim = cserv.getPlayerStorage().getCharacterByName(splitted[2]);
}
if (victim != null) {
MapleMap target = cserv.getMapFactory().getMap(mapid);
victim.changeMap(target, target.getPortal(0));
mc.dropMessage(victim.getName() + " was jailed!");
} else {
mc.dropMessage(splitted[1] + " not found!");
}
} else if (splitted[0].equals("!unjail")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim != null) {
MapleMap target = cserv.getMapFactory().getMap(100000000);
victim.changeMap(target, target.getPortal(0));
mc.dropMessage(victim.getName() + " was un-jailed!");
} else {
mc.dropMessage(splitted[1] + " not found!");
}
} else if (splitted[0].equals("!maxall")) {
c.getPlayer().setStr(32767);
c.getPlayer().setDex(32767);
c.getPlayer().setInt(32767);
c.getPlayer().setLuk(32767);
c.getPlayer().setLevel(255);
c.getPlayer().setFame(13337);
c.getPlayer().setMaxHp(30000);
c.getPlayer().setMaxMp(30000);
c.getPlayer().setHp(30000);
c.getPlayer().setMp(30000);
c.getPlayer().updateSingleStat(MapleStat.STR, 32767);
c.getPlayer().updateSingleStat(MapleStat.DEX, 32767);
c.getPlayer().updateSingleStat(MapleStat.INT, 32767);
c.getPlayer().updateSingleStat(MapleStat.LUK, 32767);
c.getPlayer().updateSingleStat(MapleStat.LEVEL, 255);
c.getPlayer().updateSingleStat(MapleStat.FAME, 13337);
c.getPlayer().updateSingleStat(MapleStat.MAXHP, 30000);
c.getPlayer().updateSingleStat(MapleStat.MAXMP, 30000);
c.getPlayer().updateSingleStat(MapleStat.HP, 30000);
c.getPlayer().updateSingleStat(MapleStat.MP, 30000);
} else if (splitted[0].equals("!mesos")) {
c.getPlayer().gainMeso(Integer.parseInt(splitted[1]), true);
} else if (splitted[0].equals("!job")) {
c.getPlayer().changeJob(MapleJob.getById(Integer.parseInt(splitted[1])));
} else if (splitted[0].equals("!allocate")) {
if (splitted[1].equals("str")) {
player.setStr(player.getStr() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.STR, player.getStr());
} else if (splitted[1].equals("dex")) {
player.setDex(player.getDex() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.DEX, player.getDex());
} else if (splitted[1].equals("int")) {
player.setInt(player.getInt() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.INT, player.getInt());
} else if (splitted[1].equals("luk")) {
player.setLuk(player.getLuk() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.LUK, player.getLuk());
} else if (splitted[1].equals("hp")) {
player.setMaxHp(player.getMaxHp() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.MAXHP, player.getMaxHp());
} else if (splitted[1].equals("mp")) {
player.setMaxMp(player.getMaxMp() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.MAXMP, player.getMaxMp());
} else {
mc.dropMessage(splitted[1] + " is not a valid stat (str/dex/int/luk/hp/mp).");
}
} else if (splitted[0].equals("!healmap")) {
for (MapleCharacter mch : c.getPlayer().getMap().getCharacters()) {
if (mch != null) {
mch.setHp(mch.getMaxHp());
mch.updateSingleStat(MapleStat.HP, mch.getMaxHp());
mch.setMp(mch.getMaxMp());
mch.updateSingleStat(MapleStat.MP, mch.getMaxMp());
}
}
} else if (splitted[0].equals("!song")) {
c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.musicChange(splitted[1]));
} else if (splitted[0].equals("!cancelbuffs")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim != null) {
victim.cancelAllBuffs();
}
} else if (splitted[0].equals("!pos")) {
mc.dropMessage("Your Pos: x = " + c.getPlayer().getPosition().x + ", y = " + c.getPlayer().getPosition().y + ", fh = " + c.getPlayer().getMap().getFootholds().findBelow(c.getPlayer().getPosition()).getId());
} else if (splitted[0].equals("!coke")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9500144);
MapleMonster mob1 = MapleLifeFactory.getMonster(9500151);
MapleMonster mob2 = MapleLifeFactory.getMonster(9500152);
MapleMonster mob3 = MapleLifeFactory.getMonster(9500153);
MapleMonster mob4 = MapleLifeFactory.getMonster(9500154);
MapleMonster mob5 = MapleLifeFactory.getMonster(9500143);
MapleMonster mob6 = MapleLifeFactory.getMonster(9500145);
MapleMonster mob7 = MapleLifeFactory.getMonster(9500149);
MapleMonster mob8 = MapleLifeFactory.getMonster(9500147);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob3, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob4, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob5, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob6, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob7, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob8, c.getPlayer().getPosition());
} else if (splitted[0].equals("!pap")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8500001);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!ergoth")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300028);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!ludimini")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8160000);
MapleMonster mob1 = MapleLifeFactory.getMonster(8170000);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!cornian")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8150201);
MapleMonster mob1 = MapleLifeFactory.getMonster(8150200);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!balrog")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8130100);
MapleMonster mob1 = MapleLifeFactory.getMonster(8150000);
MapleMonster mob2 = MapleLifeFactory.getMonster(9400536);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
} else if (splitted[0].equals("!mushmom")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(6130101);
MapleMonster mob1 = MapleLifeFactory.getMonster(6300005);
MapleMonster mob2 = MapleLifeFactory.getMonster(9400205);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
} else if (splitted[0].equals("!dragon")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8150300);
MapleMonster mob1 = MapleLifeFactory.getMonster(8150301);
MapleMonster mob2 = MapleLifeFactory.getMonster(8150302);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
} else if (splitted[0].equals("!pirate")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300119);
MapleMonster mob1 = MapleLifeFactory.getMonster(9300107);
MapleMonster mob2 = MapleLifeFactory.getMonster(9300105);
MapleMonster mob3 = MapleLifeFactory.getMonster(9300106);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob3, c.getPlayer().getPosition());
} else if (splitted[0].equals("!clone")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9001002);
MapleMonster mob1 = MapleLifeFactory.getMonster(9001000);
MapleMonster mob2 = MapleLifeFactory.getMonster(9001003);
MapleMonster mob3 = MapleLifeFactory.getMonster(9001001);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob3, c.getPlayer().getPosition());
} else if (splitted[0].equals("!levelup")) {
c.getPlayer().levelUp();
int newexp = c.getPlayer().getExp();
if (newexp < 0) {
c.getPlayer().gainExp(-newexp, false, false);
}
if (ExpTable.getExpNeededForLevel(c.getPlayer().getLevel() + 1) < newexp) {
c.getPlayer().setExp(0);
c.getPlayer().updateSingleStat(MapleStat.EXP, 0);
}
} else if (splitted[0].equals("!fame")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
int fame = Integer.parseInt(splitted[2]);
victim.setFame(fame);
player.updateSingleStat(MapleStat.FAME, fame);
} else if (splitted[0].equals("!killmap")) {
for (MapleCharacter mch : c.getPlayer().getMap().getCharacters()) {
if (mch != null) {
mch.setHp(0);
mch.updateSingleStat(MapleStat.HP, 0);
}
}
} else if (splitted[0].equals("!killeveryone")) {
for (MapleCharacter mch : cserv.getPlayerStorage().getAllCharacters()) {
if (mch != null) {
mch.setHp(0);
mch.updateSingleStat(MapleStat.HP, 0);
}
}
} else if (splitted[0].equals("!giftnx")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
int points = Integer.parseInt(splitted[2]);
victim.modifyCSPoints(0, points);
mc.dropMessage("Done");
} else if (splitted[0].equals("!giveItemBuff")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
String enterItemId = splitted[2];
int itemId = Integer.parseInt(enterItemId);
victim.setItemEffect(itemId);
} else if (splitted[0].equals("!str")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setStr(up);
player.updateSingleStat(MapleStat.STR, player.getStr());
} else if (splitted[0].equals("!dex")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setDex(up);
player.updateSingleStat(MapleStat.DEX, player.getStr());
} else if (splitted[0].equals("!luk")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setLuk(up);
player.updateSingleStat(MapleStat.LUK, player.getStr());
} else if (splitted[0].equals("!int")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setInt(up);
player.updateSingleStat(MapleStat.INT, player.getStr());
} else if (splitted[0].equals("!hp")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setHp(up);
player.updateSingleStat(MapleStat.HP, player.getHp());
} else if (splitted[0].equals("!mp")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setMp(up);
player.updateSingleStat(MapleStat.MP, player.getMp());
} else if (splitted[0].equals("!lolhaha")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
mc.dropMessage("You have switched the gender of " + victim + ".");
if (victim.getGender() == 1) {
victim.setGender(0);
} else {
victim.setGender(1);
}
} else if (splitted[0].equals("!anego")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400121);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!theboss")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400300);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!snackbar")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9500179);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!papapixie")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300039);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!horseman")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400549);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!nx")) {
for (int x = 0; x < 10; x++) {
MapleMonster nx = MapleLifeFactory.getMonster(9400202);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(nx, c.getPlayer().getPosition());
}
} else if (splitted[0].equals("!loki")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400567);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!blackcrow")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400014);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!leafreboss")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8180000);
MapleMonster mob1 = MapleLifeFactory.getMonster(8180001);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!shark")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8150101);
MapleMonster mob1 = MapleLifeFactory.getMonster(8150100);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!franken")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300139);
MapleMonster mob1 = MapleLifeFactory.getMonster(9300140);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!bird")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300090);
MapleMonster mob1 = MapleLifeFactory.getMonster(9300089);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!pianus")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8510000);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!rock")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300091);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!centipede")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9500177);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!slap")) {
int loss = Integer.parseInt(splitted[2]);
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setHp(victim.getHp() - loss);
victim.updateSingleStat(MapleStat.HP, victim.getHp() - loss);
mc.dropMessage("You slapped " + victim.getName() + ".");
} else if (splitted[0].equals("!mesorate")) {
if (splitted.length > 1) {
int meso = Integer.parseInt(splitted[1]);
cserv.setMesoRate(meso);
MaplePacket packet = MaplePacketCreator.serverNotice(6, "Meso Rate has been changed to " + meso + "x");
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
} else {
mc.dropMessage("Syntax: !mesorate <number>");
}
} else if (splitted[0].equals("!droprate")) {
if (splitted.length > 1) {
int drop = Integer.parseInt(splitted[1]);
if (drop > 10000) {
mc.dropMessage("Please set drop rate below 10000.");
} else {
cserv.setDropRate(drop);
MaplePacket packet = MaplePacketCreator.serverNotice(6, "Drop Rate has been changed to " + drop + "x");
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
}
} else {
mc.dropMessage("Syntax: !droprate <number>");
}
} else if (splitted[0].equals("!bossdroprate")) {
if (splitted.length > 1) {
int bossdrop = Integer.parseInt(splitted[1]);
cserv.setBossDropRate(bossdrop);
MaplePacket packet = MaplePacketCreator.serverNotice(6, "Boss Drop Rate has been changed to " + bossdrop + "x");
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
} else {
mc.dropMessage("Syntax: !bossdroprate <number>");
}
} else if (splitted[0].equals("!warpallhere")) {
for (MapleCharacter mch : cserv.getPlayerStorage().getAllCharacters()) {
if (mch.getMapId() != c.getPlayer().getMapId()) {
mch.changeMap(c.getPlayer().getMap(), c.getPlayer().getPosition());
}
}
} else if (splitted[0].equals("!hurt")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setHp(1);
victim.updateSingleStat(MapleStat.HP, 1);
} else if (splitted[0].equals("!bob")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400551);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.serverNotice(0, "Bob the snail is back!"));
} else if (splitted[0].equals("!healperson")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setHp(victim.getMaxHp());
victim.updateSingleStat(MapleStat.HP, victim.getMaxHp());
victim.setMp(victim.getMaxMp());
victim.updateSingleStat(MapleStat.MP, victim.getMaxMp());
} else if (splitted[0].equals("!lolcastle")) {
MapleMap target = c.getChannelServer().getEventSM().getEventManager("lolcastle").getInstance("lolcastle" + splitted[1]).getMapFactory().getMap(990000300, false, false);
player.changeMap(target, target.getPortal(0));
} else if (splitted[0].equals("!spawn")) {
for (int i = 0; i < Math.min(getOptionalIntArg(splitted, 2, 1), 500); i++) {
MapleMonster mob = MapleLifeFactory.getMonster(Integer.parseInt(splitted[1]));
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob, c.getPlayer().getPosition());
}
} else if (splitted[0].equals("!saveall")) {
for (ChannelServer chan : ChannelServer.getAllInstances()) {
for (MapleCharacter chr : chan.getPlayerStorage().getAllCharacters()) {
chr.saveToDB(true);
}
}
mc.dropMessage("save complete");
} else if (splitted[0].equals("!warpgms")) {
MessageCallback mc = new StringMessageCallback();
for (ChannelServer cservs : ChannelServer.getAllInstances()) {
for (MapleCharacter mch : cservs.getPlayerStorage().getAllCharacters()) {
if (mch.isGM()) {
}
}
}
} else if (splitted[0].equals("!say")) {
if (splitted.length > 1) {
MaplePacket packet = MaplePacketCreator.serverNotice(6, "[" + c.getPlayer().getName() + "] " + StringUtil.joinStringFrom(splitted, 1));
try {
ChannelServer.getInstance(c.getChannel()).getWorldInterface().broadcastMessage(
c.getPlayer().getName(), packet.getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else {
mc.dropMessage("Syntax: !say <message>");
}
} else if (splitted[0].equals("!job")) {
c.getPlayer().changeJob(MapleJob.getById(Integer.parseInt(splitted[1])));
} else if (splitted[0].equals("!clock")) {
player.getMap().broadcastMessage(MaplePacketCreator.getClock(getOptionalIntArg(splitted, 1, 60)));
} else if (splitted[0].equals("!item")) {
short quantity = (short) getOptionalIntArg(splitted, 2, 1);
if (Integer.parseInt(splitted[1]) >= 5000000 && Integer.parseInt(splitted[1]) <= 5000045) {
try {
if (quantity > 1) {
quantity = 1;
}
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO pets (name, level, closeness, fullness) VALUES (?, ?, ?, ?)");
ps.setString(1, ii.getName(Integer.parseInt(splitted[1])));
ps.setInt(2, 1);
ps.setInt(3, 0);
ps.setInt(4, 100);
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
rs.next();
MapleInventoryManipulator.addById(c, Integer.parseInt(splitted[1]), quantity, c.getPlayer().getName() +
"used !item with quantity " + quantity, player.getName(), rs.getInt(1));
rs.close();
ps.close();
} catch (SQLException ex) {
java.util.logging.Logger.getLogger(CommandProcessor.class.getName()).log(Level.SEVERE, null, ex);
}
}
MapleInventoryManipulator.addById(c, Integer.parseInt(splitted[1]), quantity, c.getPlayer().getName() +
"used !item with quantity " + quantity, player.getName());
} else if (splitted[0].equals("!cleardrops")) {
MapleMap map = c.getPlayer().getMap();
double range = Double.POSITIVE_INFINITY;
List<MapleMapObject> items = map.getMapObjectsInRange(c.getPlayer().getPosition(), range, Arrays.asList(MapleMapObjectType.ITEM));
for (MapleMapObject itemmo : items) {
map.removeMapObject(itemmo);
map.broadcastMessage(MaplePacketCreator.removeItemFromMap(itemmo.getObjectId(), 0, c.getPlayer().getId()));
}
mc.dropMessage("You have destroyed " + items.size() + " items on the ground.");
} else if (splitted[0].equals("!levelperson")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setLevel(getOptionalIntArg(splitted, 2, 2) - 1);
victim.levelUp();
victim.setExp(0);
victim.updateSingleStat(MapleStat.EXP, 0);
} else if (splitted[0].equals("!listreports")) {
ResultSet rs = getReports();
try {
while (rs.next()) {
mc.dropMessage("id: " + rs.getInt("id") + " | time reported: " + rs.getTimestamp("reporttime").toString() + " | reason: " + reasons[rs.getByte("reason")]);
}
} catch (Exception ex) {
}
} else if (splitted[0].equalsIgnoreCase("!showMonsterID")) {
MapleMap map = player.getMap();
double range = Double.POSITIVE_INFINITY;
List<MapleMapObject> monsters = map.getMapObjectsInRange(player.getPosition(), range, Arrays.asList(MapleMapObjectType.MONSTER));
for (MapleMapObject monstermo : monsters) {
MapleMonster monster = (MapleMonster) monstermo;
String alive = "false";
if (monster.isAlive()) {
alive = "true";
}
mc.dropMessage("name=" + monster.getName() + " ID=" + monster.getId() + " isAlive=" + alive);
}
} else if (splitted[0].equals("!openshop")) {
int shopid = Integer.parseInt(splitted[1]);
MapleShopFactory sfact = MapleShopFactory.getInstance();
MapleShop shop = sfact.getShop(shopid);
shop.sendShop(c);
} else if (splitted[0].equals("!level")) {
c.getPlayer().setExp(0);
c.getPlayer().setLevel(getOptionalIntArg(splitted, 1, 1) - 1);
c.getPlayer().levelUp();
c.getPlayer().setExp(0);
c.getPlayer().updateSingleStat(MapleStat.EXP, 0);
} else if (splitted[0].equals("!reborn")) {
c.getPlayer().setReborns(getOptionalIntArg(splitted, 1, 1));
} else if (splitted[0].equals("!rebornperson")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setReborns(getOptionalIntArg(splitted, 2, 2));
mc.dropMessage("Done.");
} else if (splitted[0].equals("!getnamebyid")) {
if (splitted.length != 2) {
return true;
}
int cid = Integer.parseInt(splitted[1]);
mc.dropMessage(getCharInfoById(cid));
} else if (splitted[0].equals("!exprate")) {
if (splitted.length > 1) {
int exp = Integer.parseInt(splitted[1]);
cserv.setExpRate(exp);
MaplePacket packet = MaplePacketCreator.serverNotice(6, "Exp Rate has been changed to " + exp + "x");
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
} else {
mc.dropMessage("Syntax: !exprate <number>");
}
} else if (splitted[0].equals("!mesoperson")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.gainMeso(Integer.parseInt(splitted[2]), true);
} else if (splitted[0].equals("!id") || splitted[0].equals("!search")) {
try {
URL url;
URLConnection urlConn;
BufferedReader dis;
url = new URL("http://www.mapletip.com/search_java.php?search_value=" + splitted[1] + "&check=true");
urlConn = url.openConnection();
urlConn.setDoInput(true);
urlConn.setUseCaches(false);
dis = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String s;
while ((s = dis.readLine()) != null) {
mc.dropMessage(s);
}
dis.close();
} catch (MalformedURLException mue) {
} catch (IOException ioe) {
}
} else if (splitted[0].equals("!warp")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim != null) {
if (splitted.length == 2) {
MapleMap target = victim.getMap();
c.getPlayer().changeMap(target, target.findClosestSpawnpoint(victim.getPosition()));
} else {
int mapid = Integer.parseInt(splitted[2]);
MapleMap target = ChannelServer.getInstance(c.getChannel()).getMapFactory().getMap(mapid);
victim.changeMap(target, target.getPortal(0));
}
} else {
try {
victim = c.getPlayer();
WorldLocation loc = c.getChannelServer().getWorldInterface().getLocation(splitted[1]);
if (loc != null) {
mc.dropMessage("You will be cross-channel warped. This may take a few seconds.");
MapleMap target = c.getChannelServer().getMapFactory().getMap(loc.map);
victim.cancelAllBuffs();
String ip = c.getChannelServer().getIP(loc.channel);
victim.getMap().removePlayer(victim);
victim.setMap(target);
String[] socket = ip.split(":");
if (victim.getTrade() != null) {
MapleTrade.cancelTrade(c.getPlayer());
}
victim.saveToDB(true);
if (victim.getCheatTracker() != null) {
victim.getCheatTracker().dispose();
}
ChannelServer.getInstance(c.getChannel()).removePlayer(c.getPlayer());
c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION);
try {
MaplePacket packet = MaplePacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]));
c.getSession().write(packet);
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
int map = Integer.parseInt(splitted[1]);
MapleMap target = cserv.getMapFactory().getMap(map);
player.changeMap(target, target.getPortal(0));
}
} catch (Exception e) {
}
}
} else if (splitted[0].equals("!exp")) {
int exp = Integer.parseInt(splitted[1]);
player.setExp(exp);
player.updateSingleStat(MapleStat.EXP, exp);
} else if (splitted[0].equals("!warphere")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.changeMap(c.getPlayer().getMap(), c.getPlayer().getMap().findClosestSpawnpoint(c.getPlayer().getPosition()));
} else if (splitted[0].equals("!servermessage")) {
Collection<ChannelServer> css = ChannelServer.getAllInstances();
for (int i = 1; i <= css.size(); ++i) {
ChannelServer.getInstance(i).setServerMessage(
StringUtil.joinStringFrom(splitted, 1));
}
} else if (splitted[0].equals("!notice")) {
int joinmod = 1;
int range = -1;
if (splitted[1].equals("m")) {
range = 0;
} else if (splitted[1].equals("c")) {
range = 1;
} else if (splitted[1].equals("w")) {
range = 2;
}
int tfrom = 2;
if (range == -1) {
range = 2;
tfrom = 1;
}
int type = getNoticeType(splitted[tfrom]);
if (type == -1) {
type = 0;
joinmod = 0;
}
String prefix = "";
if (splitted[tfrom].equals("nv")) {
prefix = "[Notice] ";
}
if (splitted[0].equals("!say") && type == 0) {
type = 6;
prefix = "[" + c.getPlayer().getName() + "] ";
}
joinmod += tfrom;
MaplePacket packet = MaplePacketCreator.serverNotice(type, prefix +
StringUtil.joinStringFrom(splitted, joinmod));
if (range == 0) {
c.getPlayer().getMap().broadcastMessage(packet);
} else if (range == 1) {
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
} else if (range == 2) {
try {
ChannelServer.getInstance(c.getChannel()).getWorldInterface().broadcastMessage(
c.getPlayer().getName(), packet.getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
}
} else if (splitted[0].equals("!gmsonline")) {
String list = "";
for (MapleCharacter mch : c.getChannelServer().getPlayerStorage().getAllCharacters()) {
if (mch.gmLevel() >= 1) {
list += mch.getName() + " ";
}
}
mc.dropMessage(list);
} else if (splitted[0].equals("!nearestPortal")) {
final MaplePortal portal = player.getMap().findClosestSpawnpoint(player.getPosition());
mc.dropMessage(portal.getName() + " id: " + portal.getId() + " script: " + portal.getScriptName() + "name: " + portal.getName());
} else if (splitted[0].equals("!sp")) {
player.setRemainingSp(getOptionalIntArg(splitted, 1, 1));
player.updateSingleStat(MapleStat.AVAILABLESP, player.getRemainingSp());
} else if (splitted[0].equals("!ap")) {
player.setRemainingAp(getOptionalIntArg(splitted, 1, 1));
player.updateSingleStat(MapleStat.AVAILABLEAP, player.getRemainingAp());
} else if (splitted[0].equals("!fakerelog")) {
c.getSession().write(MaplePacketCreator.getCharInfo(player));
player.getMap().removePlayer(player);
player.getMap().addPlayer(player);
} else if (splitted[0].equals("!charinfo")) {
StringBuilder builder = new StringBuilder();
MapleCharacter other = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
builder.append(MapleClient.getLogMessage(other, ""));
builder.append(" at ");
builder.append(other.getPosition().x);
builder.append("/");
builder.append(other.getPosition().y);
builder.append("/");
builder.append(other.getMap().getFootholds().findBelow(other.getPosition()).getId());
builder.append(" ");
builder.append(other.getHp());
builder.append("/");
builder.append(other.getCurrentMaxHp());
builder.append("hp ");
builder.append(other.getMp());
builder.append("/");
builder.append(other.getCurrentMaxMp());
builder.append("mp ");
builder.append(other.getExp());
builder.append("exp hasParty: ");
builder.append(other.getParty() != null);
builder.append(" hasTrade: ");
builder.append(other.getTrade() != null);
builder.append(" remoteAddress: ");
builder.append(other.getClient().getSession().getRemoteAddress());
mc.dropMessage(builder.toString());
other.getClient().dropDebugMessage(mc);
} else if (splitted[0].equals("!banreason")) {
String name = StringUtil.joinStringFrom(splitted, 1);
mc.dropMessage(getBannedReason(name));
} else if (splitted[0].equals("!ban")) {
if (splitted.length < 3) {
new ServernoticeMapleClientMessageCallback(2, c).dropMessage("Syntax: !ban charname reason");
return true;
} else {
try {
String originalReason = StringUtil.joinStringFrom(splitted, 2);
String reason = c.getPlayer().getName() + " banned " + splitted[1] + ": " + originalReason;
MapleCharacter target = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (target != null) {
if (target.gmLevel() <= 0) {
String readableTargetName = MapleCharacterUtil.makeMapleReadable(target.getName());
String ip = target.getClient().getSession().getRemoteAddress().toString().split(":")[0];
reason += " (IP: " + ip + ")";
target.ban(reason);
mc.dropMessage("Banned " + readableTargetName + " ipban for " + ip + " reason: " + originalReason);
MaplePacket packet = MaplePacketCreator.serverNotice(0, readableTargetName + " has been banned for " + originalReason + ".");
try {
ChannelServer.getInstance(c.getChannel()).getWorldInterface().broadcastMessage(
c.getPlayer().getName(), packet.getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else {
mc.dropMessage("May not ban GMs.");
}
} else {
if (MapleCharacter.ban(splitted[1], reason, false)) {
mc.dropMessage("Offline Banned " + splitted[1]);
} else {
mc.dropMessage("Failed to ban " + splitted[1]);
}
}
} catch (NullPointerException e) {
mc.dropMessage("There was a problem banning " + splitted[1] + ".");
}
}
} else if (splitted[0].equals("!tempban")) {
String originalReason = joinAfterString(splitted, ":");
if (splitted.length < 4 || originalReason == null) {
mc.dropMessage("Syntax helper: !tempban <name> [i / m / w / d / h] <amount> [r [reason id] : Text Reason");
return true;
} else {
try {
Calendar tempB = Calendar.getInstance();
int yChange = getNamedIntArg(splitted, 1, "y", 0);
int mChange = getNamedIntArg(splitted, 1, "m", 0);
int wChange = getNamedIntArg(splitted, 1, "w", 0);
int dChange = getNamedIntArg(splitted, 1, "d", 0);
int hChange = getNamedIntArg(splitted, 1, "h", 0);
int iChange = getNamedIntArg(splitted, 1, "i", 0);
int gReason = getNamedIntArg(splitted, 1, "r", 7);
String reason = c.getPlayer().getName() + " tempbanned " + splitted[1] + ": " + originalReason;
if (gReason > 14) {
mc.dropMessage("You have entered an incorrect ban reason ID, please try again.");
return true;
}
DateFormat df = DateFormat.getInstance();
tempB.set(tempB.get(Calendar.YEAR) + yChange, tempB.get(Calendar.MONTH) + mChange, tempB.get(Calendar.DATE) +
(wChange * 7) + dChange, tempB.get(Calendar.HOUR_OF_DAY) + hChange, tempB.get(Calendar.MINUTE) +
iChange);
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim == null) {
int accId = MapleClient.findAccIdForCharacterName(splitted[1]);
if (accId >= 0 && MapleCharacter.tempban(reason, tempB, gReason, accId)) {
mc.dropMessage("The character " + splitted[1] + " has been successfully offline-tempbanned till " +
df.format(tempB.getTime()) + ".");
} else {
mc.dropMessage("There was a problem offline banning character " + splitted[1] + ".");
}
} else {
if (victim.gmLevel() <= 0) {
victim.tempban(reason, tempB, gReason);
mc.dropMessage("The character " + splitted[1] + " has been successfully tempbanned till " +
df.format(tempB.getTime()));
MaplePacket packet = MaplePacketCreator.serverNotice(0, "[Notice] " + splitted[1] + " has been banned until " + df.format(tempB.getTime()) + " for " + reason + ".");
try {
ChannelServer.getInstance(c.getChannel()).getWorldInterface().broadcastMessage(
c.getPlayer().getName(), packet.getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else {
mc.dropMessage("May not ban GMs.");
}
}
} catch (NullPointerException e) {
mc.dropMessage("There was a problem banning " + splitted[1] + ".");
}
}
} else if (splitted[0].equals("!getreport")) {
if (splitted.length != 2) {
return true;
}
int reportid = Integer.parseInt(splitted[1]);
ResultSet rs = getReport(reportid);
try {
while (rs.next()) {
mc.dropMessage("id: " + rs.getInt("id") + " | time reported: " + rs.getTimestamp("reporttime").toString() + " | reason: " + reasons[rs.getByte("reason")]);
mc.dropMessage("reporter charid: " + rs.getInt("reporterid"));
mc.dropMessage("victim charid: " + rs.getInt("victimid"));
mc.dropMessage("chatlog: ");
mc.dropMessage(rs.getString("chatlog"));
mc.dropMessage("Status: " + rs.getString("status"));
}
} catch (Exception ex) {
}
} else if (splitted[0].equals("!delreport")) {
if (splitted.length != 2) {
return true;
}
int reportid = Integer.parseInt(splitted[1]);
deleteReport(reportid);
} else if (splitted[0].equals("!setreportstatus")) {
if (splitted.length < 3) {
return true;
}
int reportid = Integer.parseInt(splitted[1]);
String status = StringUtil.joinStringFrom(splitted, 2);
setReportStatus(reportid, status);
} else if (splitted[0].equals("!getidbyname")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim == null) {
mc.dropMessage("You must be on their channel and they must exist.");
return true;
} else {
mc.dropMessage("Done.");
}
} else if (splitted[0].equals("!whereami")) {
new ServernoticeMapleClientMessageCallback(c).dropMessage("You are on map " +
c.getPlayer().getMap().getId());
} else if (splitted[0].equals("!connected")) {
try {
Map<Integer, Integer> connected = cserv.getWorldInterface().getConnected();
StringBuilder conStr = new StringBuilder("Connected Clients: ");
boolean first = true;
for (int i : connected.keySet()) {
if (!first) {
conStr.append(", ");
} else {
first = false;
}
if (i == 0) {
conStr.append("Total: ");
conStr.append(connected.get(i));
} else {
conStr.append("Ch");
conStr.append(i);
conStr.append(": ");
conStr.append(connected.get(i));
}
}
new ServernoticeMapleClientMessageCallback(c).dropMessage(conStr.toString());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else if (splitted[0].equals("!whosthere")) {
MessageCallback callback = new ServernoticeMapleClientMessageCallback(c);
StringBuilder builder = new StringBuilder("Players on Map: ");
for (MapleCharacter chr : c.getPlayer().getMap().getCharacters()) {
if (builder.length() > 150) { // wild guess :o
builder.setLength(builder.length() - 2);
callback.dropMessage(builder.toString());
builder = new StringBuilder();
}
builder.append(MapleCharacterUtil.makeMapleReadable(chr.getName()));
builder.append(", ");
}
builder.setLength(builder.length() - 2);
c.getSession().write(MaplePacketCreator.serverNotice(6, builder.toString()));
} else if (splitted[0].equals("!killall") || splitted[0].equals("!monsterdebug")) {
MapleMap map = c.getPlayer().getMap();
double range = Double.POSITIVE_INFINITY;
List<MapleMapObject> monsters = map.getMapObjectsInRange(c.getPlayer().getPosition(), range, Arrays.asList(MapleMapObjectType.MONSTER));
boolean kill = splitted[0].equals("!killall");
for (MapleMapObject monstermo : monsters) {
MapleMonster monster = (MapleMonster) monstermo;
if (kill) {
map.killMonster(monster, c.getPlayer(), true);
monster.giveExpToCharacter(c.getPlayer(), monster.getExp(), true, 1);
} else {
mc.dropMessage("Monster " + monster.toString());
}
}
if (kill) {
mc.dropMessage("Killed " + monsters.size() + " monsters.");
}
} else if (splitted[0].equals("!droprandomstatitem")) {
int id = Integer.parseInt(splitted[1]);
IItem toDrop;
if (!MapleItemInformationProvider.getInstance().getInventoryType(id).equals(MapleInventoryType.EQUIP)) {
mc.dropMessage("Command can only be used for equips.");
} else if (splitted.length != 2) {
mc.dropMessage("Check your parameters.");
} else {
toDrop = MapleItemInformationProvider.getInstance().randomizeStats((Equip) MapleItemInformationProvider.getInstance().getEquipById(id));
c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), toDrop, c.getPlayer().getPosition(), true, true);
}
} else if (splitted[0].equals("!setall")) {
int x = Integer.parseInt(splitted[1]);
player.setStr(x);
player.setDex(x);
player.setInt(x);
player.setLuk(x);
player.updateSingleStat(MapleStat.STR, player.getStr());
player.updateSingleStat(MapleStat.DEX, player.getStr());
player.updateSingleStat(MapleStat.INT, player.getStr());
player.updateSingleStat(MapleStat.LUK, player.getStr());
} else if (splitted[0].equals("!skill")) {
int skill = Integer.parseInt(splitted[1]);
int level = getOptionalIntArg(splitted, 2, 1);
int masterlevel = getOptionalIntArg(splitted, 3, 1);
c.getPlayer().changeSkillLevel(SkillFactory.getSkill(skill), level, masterlevel);
} else if (splitted[0].equals("!heal")) {
player.setHp(player.getMaxHp());
player.updateSingleStat(MapleStat.HP, player.getMaxHp());
player.setMp(player.getMaxMp());
player.updateSingleStat(MapleStat.MP, player.getMaxMp());
} else {
if (player.gmLevel() == 3) {
mc.dropMessage("GM Command " + splitted[0] + " does not exist");
}
return false;
}
return true;
}
}
oh gosh!
http://pastebin.com/d1fa99dc
replace your file with this IM me on AIM if you need more help. Linux0545
Code:package net.sf.odinms.client.messages;
import java.rmi.RemoteException;
import java.sql.*;
import java.text.DateFormat;
import java.util.*;
import java.util.logging.Level;
import net.sf.odinms.database.DatabaseConnection;
import net.sf.odinms.net.MaplePacket;
import net.sf.odinms.net.channel.ChannelServer;
import net.sf.odinms.net.world.remote.*;
import net.sf.odinms.server.*;
import net.sf.odinms.server.life.*;
import net.sf.odinms.server.maps.*;
import net.sf.odinms.tools.*;
import org.slf4j.Logger;
import java.net.*;
import java.io.*;
import net.sf.odinms.client.*;
import net.sf.odinms.net.world.PlayerCoolDownValueHolder;
import net.sf.odinms.server.maps.FakeCharacter;
public class GMCommand {
final private static String[] reasons = {"Hacking", "Botting", "Scamming", "Fake GM", "Harassment", "Advertising"};
private static int getNoticeType(String typestring) {
if (typestring.equals("n")) {
return 0;
} else if (typestring.equals("p")) {
return 1;
} else if (typestring.equals("l")) {
return 2;
} else if (typestring.equals("nv")) {
return 5;
} else if (typestring.equals("v")) {
return 5;
} else if (typestring.equals("b")) {
return 6;
}
return -1;
}
private static String joinAfterString(String splitted[], String str) {
for (int i = 1; i < splitted.length; i++) {
if (splitted[i].equalsIgnoreCase(str) && i + 1 < splitted.length) {
return StringUtil.joinStringFrom(splitted, i + 1);
}
}
return null;
}
public static int getOptionalIntArg(String splitted[], int position, int def) {
if (splitted.length > position) {
try {
return Integer.parseInt(splitted[position]);
} catch (NumberFormatException nfe) {
return def;
}
}
return def;
}
private static String getBannedReason(String name) {
boolean found = false;
int accid;
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("SELECT * FROM accounts WHERE name = ?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
found = true;
return "username: " + rs.getString("name") + " | banreason: " + rs.getString("banreason") + " | macs: " + rs.getString("macs");
}
rs.close();
ps.close();
} catch (Exception ex) {
}
if (!found) {
try {
PreparedStatement ps = con.prepareStatement("SELECT accountid FROM characters WHERE name = ?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
return "Error while trying to get banned reason";
}
accid = rs.getInt("accountid");
try {
PreparedStatement pse = con.prepareStatement("SELECT * FROM accounts WHERE id = ?");
pse.setInt(1, accid);
ResultSet rse = pse.executeQuery();
if (rse.next()) {
return "username: " + rs.getString("name") + " | banreason: " + rs.getString("banreason") + " | macs: " + rs.getString("macs");
}
rse.close();
pse.close();
} catch (Exception exe) {
}
rs.close();
ps.close();
} catch (Exception ee) {
}
}
return "Error while trying to get banned reason";
}
private static String getNamedArg(String splitted[], int startpos, String name) {
for (int i = startpos; i < splitted.length; i++) {
if (splitted[i].equalsIgnoreCase(name) && i + 1 < splitted.length) {
return splitted[i + 1];
}
}
return null;
}
private static Integer getNamedIntArg(String splitted[], int startpos, String name) {
String arg = getNamedArg(splitted, startpos, name);
if (arg != null) {
try {
return Integer.parseInt(arg);
} catch (NumberFormatException nfe) {
}
}
return null;
}
private static int getNamedIntArg(String splitted[], int startpos, String name, int def) {
Integer ret = getNamedIntArg(splitted, startpos, name);
if (ret == null) {
return def;
}
return ret.intValue();
}
private static ResultSet getReports() {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("SELECT * FROM reports");
return ps.executeQuery();
} catch (Exception ex) {
}
return null;
}
private static void deleteReport(int id) {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("DELETE FROM reports WHERE id = ?");
ps.setInt(1, id);
ps.executeUpdate();
ps.close();
} catch (Exception e) {
}
}
private static ResultSet getReport(int id) {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("SELECT * FROM reports where id = ?");
ps.setInt(1, id);
return ps.executeQuery();
} catch (Exception e) {
}
return null;
}
private static void setReportStatus(int id, String status) {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("UPDATE reports SET status = ? WHERE id = ?");
ps.setString(1, status);
ps.setInt(2, id);
ps.executeUpdate();
ps.close();
} catch (Exception e) {
}
}
private static String getCharInfoById(int id) {
try {
Connection dcon = DatabaseConnection.getConnection();
PreparedStatement ps = dcon.prepareStatement("SELECT * FROM characters where id = ?");
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
return rs.getString("name");
}
} catch (Exception ex) {
}
return "error while trying to get name";
}
public static boolean executeGMCommand(MapleClient c, MessageCallback mc, String line, Logger log, List<Pair<MapleCharacter, String>> gmlog, Runnable persister) {
MapleCharacter player = c.getPlayer();
ChannelServer cserv = c.getChannelServer();
String[] splitted = line.split(" ");
if (splitted[0].equals("!chattype")) {
player.setGMChat(!c.getPlayer().getGMChat());
mc.dropMessage("Done.");
} else if (splitted[0].equals("!god")) {
player.setGodMode(!player.isGodMode());
mc.dropMessage("Done.");
} else if (splitted[0].equals("!warpmap")) {
for (MapleCharacter mch : c.getPlayer().getMap().getCharacters()) {
if (mch != null) {
int mapid = Integer.parseInt(splitted[1]);
MapleMap target = ChannelServer.getInstance(c.getChannel()).getMapFactory().getMap(mapid);
mch.changeMap(target, target.getPortal(0));
}
}
} else if (splitted[0].equals("!event")) {
if (c.getPlayer().getClient().getChannelServer().eventOn == false) {
int mapid = getOptionalIntArg(splitted, 1, c.getPlayer().getMapId());
c.getPlayer().getClient().getChannelServer().eventOn = true;
c.getPlayer().getClient().getChannelServer().eventMap = mapid;
try {
c.getChannelServer().getWorldInterface().broadcastMessage(null, MaplePacketCreator.serverNotice(6, c.getChannel(), "[Event] The event has started! Make sure you're in channel " + c.getChannel() + " And find the FM room in the FreeMarket where the event is starting!.").getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else {
c.getPlayer().getClient().getChannelServer().eventOn = false;
try {
c.getChannelServer().getWorldInterface().broadcastMessage(null, MaplePacketCreator.serverNotice(6, c.getChannel(), "[Event] The event has ended. Thanks to all of those who participated.").getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
}
} else if (splitted[0].equals("!fakechar")) {
for (int i = 0; i < getOptionalIntArg(splitted, 1, 1); i++) {
FakeCharacter fc = new FakeCharacter(c.getPlayer(), c.getPlayer().getId() + c.getPlayer().getFakeChars().size() + 1);
c.getPlayer().addFakeChar(fc);
}
mc.dropMessage("Please move around for it to take effect.");
} else if (splitted[0].equals("!resetcooldowns")) {
for (PlayerCoolDownValueHolder i : c.getPlayer().getAllCooldowns()) {
c.getPlayer().removeCooldown(i.skillId);
}
mc.dropMessage("Success.");
} else if (splitted[0].equals("!drop")) {
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
int itemId = Integer.parseInt(splitted[1]);
short quantity = (short) (short) getOptionalIntArg(splitted, 2, 1);
IItem toDrop;
if (ii.getInventoryType(itemId) == MapleInventoryType.EQUIP) {
toDrop = ii.getEquipById(itemId);
} else {
toDrop = new Item(itemId, (byte) 0, (short) quantity);
}
StringBuilder logMsg = new StringBuilder("Created by ");
logMsg.append(c.getPlayer().getName());
logMsg.append(" using !drop. Quantity: ");
logMsg.append(quantity);
toDrop.log(logMsg.toString(), false);
toDrop.setOwner(player.getName());
c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), toDrop, c.getPlayer().getPosition(), true, true);
} else if (splitted[0].equals("!goto")) {
HashMap<String, Integer> gotomaps = new HashMap<String, Integer>();
gotomaps.put("gmmap", 180000000);
gotomaps.put("southperry", 60000);
gotomaps.put("amherst", 1010000);
gotomaps.put("henesys", 100000000);
gotomaps.put("ellinia", 101000000);
gotomaps.put("perion", 102000000);
gotomaps.put("kerning", 103000000);
gotomaps.put("lith", 104000000);
gotomaps.put("sleepywood", 105040300);
gotomaps.put("florina", 110000000);
gotomaps.put("orbis", 200000000);
gotomaps.put("happy", 209000000);
gotomaps.put("elnath", 211000000);
gotomaps.put("ludi", 220000000);
gotomaps.put("aqua", 230000000);
gotomaps.put("leafre", 240000000);
gotomaps.put("mulung", 250000000);
gotomaps.put("herb", 251000000);
gotomaps.put("omega", 221000000);
gotomaps.put("korean", 222000000);
gotomaps.put("nlc", 600000000);
gotomaps.put("excavation", 990000000);
gotomaps.put("pianus", 230040420);
gotomaps.put("horntail", 240060200);
gotomaps.put("mushmom", 100000005);
gotomaps.put("griffey", 240020101);
gotomaps.put("manon", 240020401);
gotomaps.put("horseman", 682000001);
gotomaps.put("balrog", 105090900);
gotomaps.put("zakum", 280030000);
gotomaps.put("papu", 220080001);
gotomaps.put("showa", 801000000);
gotomaps.put("guild", 200000301);
gotomaps.put("shrine", 800000000);
gotomaps.put("skelegon", 240040511);
if (gotomaps.containsKey(splitted[1])) {
MapleMap target = cserv.getMapFactory().getMap(gotomaps.get(splitted[1]));
MaplePortal targetPortal = target.getPortal(0);
player.changeMap(target, targetPortal);
}
} else if (splitted[0].equals("!jail")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
int mapid = 200090300;
if (splitted.length > 2 && splitted[1].equals("2")) {
mapid = 980000404;
victim = cserv.getPlayerStorage().getCharacterByName(splitted[2]);
}
if (victim != null) {
MapleMap target = cserv.getMapFactory().getMap(mapid);
victim.changeMap(target, target.getPortal(0));
mc.dropMessage(victim.getName() + " was jailed!");
} else {
mc.dropMessage(splitted[1] + " not found!");
}
} else if (splitted[0].equals("!unjail")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim != null) {
MapleMap target = cserv.getMapFactory().getMap(100000000);
victim.changeMap(target, target.getPortal(0));
mc.dropMessage(victim.getName() + " was un-jailed!");
} else {
mc.dropMessage(splitted[1] + " not found!");
}
} else if (splitted[0].equals("!maxall")) {
c.getPlayer().setStr(32767);
c.getPlayer().setDex(32767);
c.getPlayer().setInt(32767);
c.getPlayer().setLuk(32767);
c.getPlayer().setLevel(255);
c.getPlayer().setFame(13337);
c.getPlayer().setMaxHp(30000);
c.getPlayer().setMaxMp(30000);
c.getPlayer().setHp(30000);
c.getPlayer().setMp(30000);
c.getPlayer().updateSingleStat(MapleStat.STR, 32767);
c.getPlayer().updateSingleStat(MapleStat.DEX, 32767);
c.getPlayer().updateSingleStat(MapleStat.INT, 32767);
c.getPlayer().updateSingleStat(MapleStat.LUK, 32767);
c.getPlayer().updateSingleStat(MapleStat.LEVEL, 255);
c.getPlayer().updateSingleStat(MapleStat.FAME, 13337);
c.getPlayer().updateSingleStat(MapleStat.MAXHP, 30000);
c.getPlayer().updateSingleStat(MapleStat.MAXMP, 30000);
c.getPlayer().updateSingleStat(MapleStat.HP, 30000);
c.getPlayer().updateSingleStat(MapleStat.MP, 30000);
} else if (splitted[0].equals("!mesos")) {
c.getPlayer().gainMeso(Integer.parseInt(splitted[1]), true);
} else if (splitted[0].equals("!job")) {
c.getPlayer().changeJob(MapleJob.getById(Integer.parseInt(splitted[1])));
} else if (splitted[0].equals("!allocate")) {
if (splitted[1].equals("str")) {
player.setStr(player.getStr() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.STR, player.getStr());
} else if (splitted[1].equals("dex")) {
player.setDex(player.getDex() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.DEX, player.getDex());
} else if (splitted[1].equals("int")) {
player.setInt(player.getInt() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.INT, player.getInt());
} else if (splitted[1].equals("luk")) {
player.setLuk(player.getLuk() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.LUK, player.getLuk());
} else if (splitted[1].equals("hp")) {
player.setMaxHp(player.getMaxHp() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.MAXHP, player.getMaxHp());
} else if (splitted[1].equals("mp")) {
player.setMaxMp(player.getMaxMp() + Integer.parseInt(splitted[2]));
player.updateSingleStat(MapleStat.MAXMP, player.getMaxMp());
} else {
mc.dropMessage(splitted[1] + " is not a valid stat (str/dex/int/luk/hp/mp).");
}
} else if (splitted[0].equals("!healmap")) {
for (MapleCharacter mch : c.getPlayer().getMap().getCharacters()) {
if (mch != null) {
mch.setHp(mch.getMaxHp());
mch.updateSingleStat(MapleStat.HP, mch.getMaxHp());
mch.setMp(mch.getMaxMp());
mch.updateSingleStat(MapleStat.MP, mch.getMaxMp());
}
}
} else if (splitted[0].equals("!song")) {
c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.musicChange(splitted[1]));
} else if (splitted[0].equals("!cancelbuffs")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim != null) {
victim.cancelAllBuffs();
}
} else if (splitted[0].equals("!pos")) {
mc.dropMessage("Your Pos: x = " + c.getPlayer().getPosition().x + ", y = " + c.getPlayer().getPosition().y + ", fh = " + c.getPlayer().getMap().getFootholds().findBelow(c.getPlayer().getPosition()).getId());
} else if (splitted[0].equals("!coke")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9500144);
MapleMonster mob1 = MapleLifeFactory.getMonster(9500151);
MapleMonster mob2 = MapleLifeFactory.getMonster(9500152);
MapleMonster mob3 = MapleLifeFactory.getMonster(9500153);
MapleMonster mob4 = MapleLifeFactory.getMonster(9500154);
MapleMonster mob5 = MapleLifeFactory.getMonster(9500143);
MapleMonster mob6 = MapleLifeFactory.getMonster(9500145);
MapleMonster mob7 = MapleLifeFactory.getMonster(9500149);
MapleMonster mob8 = MapleLifeFactory.getMonster(9500147);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob3, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob4, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob5, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob6, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob7, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob8, c.getPlayer().getPosition());
} else if (splitted[0].equals("!pap")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8500001);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!ergoth")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300028);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!ludimini")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8160000);
MapleMonster mob1 = MapleLifeFactory.getMonster(8170000);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!cornian")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8150201);
MapleMonster mob1 = MapleLifeFactory.getMonster(8150200);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!balrog")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8130100);
MapleMonster mob1 = MapleLifeFactory.getMonster(8150000);
MapleMonster mob2 = MapleLifeFactory.getMonster(9400536);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
} else if (splitted[0].equals("!mushmom")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(6130101);
MapleMonster mob1 = MapleLifeFactory.getMonster(6300005);
MapleMonster mob2 = MapleLifeFactory.getMonster(9400205);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
} else if (splitted[0].equals("!dragon")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8150300);
MapleMonster mob1 = MapleLifeFactory.getMonster(8150301);
MapleMonster mob2 = MapleLifeFactory.getMonster(8150302);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
} else if (splitted[0].equals("!pirate")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300119);
MapleMonster mob1 = MapleLifeFactory.getMonster(9300107);
MapleMonster mob2 = MapleLifeFactory.getMonster(9300105);
MapleMonster mob3 = MapleLifeFactory.getMonster(9300106);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob3, c.getPlayer().getPosition());
} else if (splitted[0].equals("!clone")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9001002);
MapleMonster mob1 = MapleLifeFactory.getMonster(9001000);
MapleMonster mob2 = MapleLifeFactory.getMonster(9001003);
MapleMonster mob3 = MapleLifeFactory.getMonster(9001001);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob2, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob3, c.getPlayer().getPosition());
} else if (splitted[0].equals("!levelup")) {
c.getPlayer().levelUp();
int newexp = c.getPlayer().getExp();
if (newexp < 0) {
c.getPlayer().gainExp(-newexp, false, false);
}
if (ExpTable.getExpNeededForLevel(c.getPlayer().getLevel() + 1) < newexp) {
c.getPlayer().setExp(0);
c.getPlayer().updateSingleStat(MapleStat.EXP, 0);
}
} else if (splitted[0].equals("!fame")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
int fame = Integer.parseInt(splitted[2]);
victim.setFame(fame);
player.updateSingleStat(MapleStat.FAME, fame);
} else if (splitted[0].equals("!killmap")) {
for (MapleCharacter mch : c.getPlayer().getMap().getCharacters()) {
if (mch != null) {
mch.setHp(0);
mch.updateSingleStat(MapleStat.HP, 0);
}
}
} else if (splitted[0].equals("!killeveryone")) {
for (MapleCharacter mch : cserv.getPlayerStorage().getAllCharacters()) {
if (mch != null) {
mch.setHp(0);
mch.updateSingleStat(MapleStat.HP, 0);
}
}
} else if (splitted[0].equals("!giftnx")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
int points = Integer.parseInt(splitted[2]);
victim.modifyCSPoints(0, points);
mc.dropMessage("Done");
} else if (splitted[0].equals("!giveItemBuff")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
String enterItemId = splitted[2];
int itemId = Integer.parseInt(enterItemId);
victim.setItemEffect(itemId);
} else if (splitted[0].equals("!str")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setStr(up);
player.updateSingleStat(MapleStat.STR, player.getStr());
} else if (splitted[0].equals("!dex")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setDex(up);
player.updateSingleStat(MapleStat.DEX, player.getStr());
} else if (splitted[0].equals("!luk")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setLuk(up);
player.updateSingleStat(MapleStat.LUK, player.getStr());
} else if (splitted[0].equals("!int")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setInt(up);
player.updateSingleStat(MapleStat.INT, player.getStr());
} else if (splitted[0].equals("!hp")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setHp(up);
player.updateSingleStat(MapleStat.HP, player.getHp());
} else if (splitted[0].equals("!mp")) {
int up;
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
up = Integer.parseInt(splitted[2]);
victim.setMp(up);
player.updateSingleStat(MapleStat.MP, player.getMp());
} else if (splitted[0].equals("!lolhaha")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
mc.dropMessage("You have switched the gender of " + victim + ".");
if (victim.getGender() == 1) {
victim.setGender(0);
} else {
victim.setGender(1);
}
} else if (splitted[0].equals("!anego")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400121);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!theboss")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400300);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!snackbar")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9500179);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!papapixie")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300039);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!horseman")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400549);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!nx")) {
for (int x = 0; x < 10; x++) {
MapleMonster nx = MapleLifeFactory.getMonster(9400202);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(nx, c.getPlayer().getPosition());
}
} else if (splitted[0].equals("!loki")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400567);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!blackcrow")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400014);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!leafreboss")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8180000);
MapleMonster mob1 = MapleLifeFactory.getMonster(8180001);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!shark")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8150101);
MapleMonster mob1 = MapleLifeFactory.getMonster(8150100);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!franken")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300139);
MapleMonster mob1 = MapleLifeFactory.getMonster(9300140);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!bird")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300090);
MapleMonster mob1 = MapleLifeFactory.getMonster(9300089);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob1, c.getPlayer().getPosition());
} else if (splitted[0].equals("!pianus")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(8510000);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!rock")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9300091);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!centipede")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9500177);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
} else if (splitted[0].equals("!slap")) {
int loss = Integer.parseInt(splitted[2]);
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setHp(victim.getHp() - loss);
victim.updateSingleStat(MapleStat.HP, victim.getHp() - loss);
mc.dropMessage("You slapped " + victim.getName() + ".");
} else if (splitted[0].equals("!mesorate")) {
if (splitted.length > 1) {
int meso = Integer.parseInt(splitted[1]);
cserv.setMesoRate(meso);
MaplePacket packet = MaplePacketCreator.serverNotice(6, "Meso Rate has been changed to " + meso + "x");
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
} else {
mc.dropMessage("Syntax: !mesorate <number>");
}
} else if (splitted[0].equals("!droprate")) {
if (splitted.length > 1) {
int drop = Integer.parseInt(splitted[1]);
if (drop > 10000) {
mc.dropMessage("Please set drop rate below 10000.");
} else {
cserv.setDropRate(drop);
MaplePacket packet = MaplePacketCreator.serverNotice(6, "Drop Rate has been changed to " + drop + "x");
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
}
} else {
mc.dropMessage("Syntax: !droprate <number>");
}
} else if (splitted[0].equals("!bossdroprate")) {
if (splitted.length > 1) {
int bossdrop = Integer.parseInt(splitted[1]);
cserv.setBossDropRate(bossdrop);
MaplePacket packet = MaplePacketCreator.serverNotice(6, "Boss Drop Rate has been changed to " + bossdrop + "x");
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
} else {
mc.dropMessage("Syntax: !bossdroprate <number>");
}
} else if (splitted[0].equals("!warpallhere")) {
for (MapleCharacter mch : cserv.getPlayerStorage().getAllCharacters()) {
if (mch.getMapId() != c.getPlayer().getMapId()) {
mch.changeMap(c.getPlayer().getMap(), c.getPlayer().getPosition());
}
}
} else if (splitted[0].equals("!hurt")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setHp(1);
victim.updateSingleStat(MapleStat.HP, 1);
} else if (splitted[0].equals("!bob")) {
MapleMonster mob0 = MapleLifeFactory.getMonster(9400551);
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob0, c.getPlayer().getPosition());
c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.serverNotice(0, "Bob the snail is back!"));
} else if (splitted[0].equals("!healperson")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setHp(victim.getMaxHp());
victim.updateSingleStat(MapleStat.HP, victim.getMaxHp());
victim.setMp(victim.getMaxMp());
victim.updateSingleStat(MapleStat.MP, victim.getMaxMp());
} else if (splitted[0].equals("!lolcastle")) {
MapleMap target = c.getChannelServer().getEventSM().getEventManager("lolcastle").getInstance("lolcastle" + splitted[1]).getMapFactory().getMap(990000300, false, false);
player.changeMap(target, target.getPortal(0));
} else if (splitted[0].equals("!spawn")) {
for (int i = 0; i < Math.min(getOptionalIntArg(splitted, 2, 1), 500); i++) {
MapleMonster mob = MapleLifeFactory.getMonster(Integer.parseInt(splitted[1]));
c.getPlayer().getMap().spawnMonsterOnGroudBelow(mob, c.getPlayer().getPosition());
}
} else if (splitted[0].equals("!saveall")) {
for (ChannelServer chan : ChannelServer.getAllInstances()) {
for (MapleCharacter chr : chan.getPlayerStorage().getAllCharacters()) {
chr.saveToDB(true);
}
}
mc.dropMessage("save complete");
} else if (splitted[0].equals("!warpgms")) {
MessageCallback mc = new StringMessageCallback();
for (ChannelServer cservs : ChannelServer.getAllInstances()) {
for (MapleCharacter mch : cservs.getPlayerStorage().getAllCharacters()) {
if (mch.isGM()) {
}
}
}
} else if (splitted[0].equals("!say")) {
if (splitted.length > 1) {
MaplePacket packet = MaplePacketCreator.serverNotice(6, "[" + c.getPlayer().getName() + "] " + StringUtil.joinStringFrom(splitted, 1));
try {
ChannelServer.getInstance(c.getChannel()).getWorldInterface().broadcastMessage(
c.getPlayer().getName(), packet.getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else {
mc.dropMessage("Syntax: !say <message>");
}
} else if (splitted[0].equals("!job")) {
c.getPlayer().changeJob(MapleJob.getById(Integer.parseInt(splitted[1])));
} else if (splitted[0].equals("!clock")) {
player.getMap().broadcastMessage(MaplePacketCreator.getClock(getOptionalIntArg(splitted, 1, 60)));
} else if (splitted[0].equals("!item")) {
short quantity = (short) getOptionalIntArg(splitted, 2, 1);
if (Integer.parseInt(splitted[1]) >= 5000000 && Integer.parseInt(splitted[1]) <= 5000045) {
try {
if (quantity > 1) {
quantity = 1;
}
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO pets (name, level, closeness, fullness) VALUES (?, ?, ?, ?)");
ps.setString(1, ii.getName(Integer.parseInt(splitted[1])));
ps.setInt(2, 1);
ps.setInt(3, 0);
ps.setInt(4, 100);
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
rs.next();
MapleInventoryManipulator.addById(c, Integer.parseInt(splitted[1]), quantity, c.getPlayer().getName() +
"used !item with quantity " + quantity, player.getName(), rs.getInt(1));
rs.close();
ps.close();
} catch (SQLException ex) {
java.util.logging.Logger.getLogger(CommandProcessor.class.getName()).log(Level.SEVERE, null, ex);
}
}
MapleInventoryManipulator.addById(c, Integer.parseInt(splitted[1]), quantity, c.getPlayer().getName() +
"used !item with quantity " + quantity, player.getName());
} else if (splitted[0].equals("!cleardrops")) {
MapleMap map = c.getPlayer().getMap();
double range = Double.POSITIVE_INFINITY;
List<MapleMapObject> items = map.getMapObjectsInRange(c.getPlayer().getPosition(), range, Arrays.asList(MapleMapObjectType.ITEM));
for (MapleMapObject itemmo : items) {
map.removeMapObject(itemmo);
map.broadcastMessage(MaplePacketCreator.removeItemFromMap(itemmo.getObjectId(), 0, c.getPlayer().getId()));
}
mc.dropMessage("You have destroyed " + items.size() + " items on the ground.");
} else if (splitted[0].equals("!levelperson")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setLevel(getOptionalIntArg(splitted, 2, 2) - 1);
victim.levelUp();
victim.setExp(0);
victim.updateSingleStat(MapleStat.EXP, 0);
} else if (splitted[0].equals("!listreports")) {
ResultSet rs = getReports();
try {
while (rs.next()) {
mc.dropMessage("id: " + rs.getInt("id") + " | time reported: " + rs.getTimestamp("reporttime").toString() + " | reason: " + reasons[rs.getByte("reason")]);
}
} catch (Exception ex) {
}
} else if (splitted[0].equalsIgnoreCase("!showMonsterID")) {
MapleMap map = player.getMap();
double range = Double.POSITIVE_INFINITY;
List<MapleMapObject> monsters = map.getMapObjectsInRange(player.getPosition(), range, Arrays.asList(MapleMapObjectType.MONSTER));
for (MapleMapObject monstermo : monsters) {
MapleMonster monster = (MapleMonster) monstermo;
String alive = "false";
if (monster.isAlive()) {
alive = "true";
}
mc.dropMessage("name=" + monster.getName() + " ID=" + monster.getId() + " isAlive=" + alive);
}
} else if (splitted[0].equals("!openshop")) {
int shopid = Integer.parseInt(splitted[1]);
MapleShopFactory sfact = MapleShopFactory.getInstance();
MapleShop shop = sfact.getShop(shopid);
shop.sendShop(c);
} else if (splitted[0].equals("!level")) {
c.getPlayer().setExp(0);
c.getPlayer().setLevel(getOptionalIntArg(splitted, 1, 1) - 1);
c.getPlayer().levelUp();
c.getPlayer().setExp(0);
c.getPlayer().updateSingleStat(MapleStat.EXP, 0);
} else if (splitted[0].equals("!reborn")) {
c.getPlayer().setReborns(getOptionalIntArg(splitted, 1, 1));
} else if (splitted[0].equals("!rebornperson")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.setReborns(getOptionalIntArg(splitted, 2, 2));
mc.dropMessage("Done.");
} else if (splitted[0].equals("!getnamebyid")) {
if (splitted.length != 2) {
return true;
}
int cid = Integer.parseInt(splitted[1]);
mc.dropMessage(getCharInfoById(cid));
} else if (splitted[0].equals("!exprate")) {
if (splitted.length > 1) {
int exp = Integer.parseInt(splitted[1]);
cserv.setExpRate(exp);
MaplePacket packet = MaplePacketCreator.serverNotice(6, "Exp Rate has been changed to " + exp + "x");
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
} else {
mc.dropMessage("Syntax: !exprate <number>");
}
} else if (splitted[0].equals("!mesoperson")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.gainMeso(Integer.parseInt(splitted[2]), true);
} else if (splitted[0].equals("!id") || splitted[0].equals("!search")) {
try {
URL url;
URLConnection urlConn;
BufferedReader dis;
url = new URL("http://www.mapletip.com/search_java.php?search_value=" + splitted[1] + "&check=true");
urlConn = url.openConnection();
urlConn.setDoInput(true);
urlConn.setUseCaches(false);
dis = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String s;
while ((s = dis.readLine()) != null) {
mc.dropMessage(s);
}
dis.close();
} catch (MalformedURLException mue) {
} catch (IOException ioe) {
}
} else if (splitted[0].equals("!warp")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim != null) {
if (splitted.length == 2) {
MapleMap target = victim.getMap();
c.getPlayer().changeMap(target, target.findClosestSpawnpoint(victim.getPosition()));
} else {
int mapid = Integer.parseInt(splitted[2]);
MapleMap target = ChannelServer.getInstance(c.getChannel()).getMapFactory().getMap(mapid);
victim.changeMap(target, target.getPortal(0));
}
} else {
try {
victim = c.getPlayer();
WorldLocation loc = c.getChannelServer().getWorldInterface().getLocation(splitted[1]);
if (loc != null) {
mc.dropMessage("You will be cross-channel warped. This may take a few seconds.");
MapleMap target = c.getChannelServer().getMapFactory().getMap(loc.map);
victim.cancelAllBuffs();
String ip = c.getChannelServer().getIP(loc.channel);
victim.getMap().removePlayer(victim);
victim.setMap(target);
String[] socket = ip.split(":");
if (victim.getTrade() != null) {
MapleTrade.cancelTrade(c.getPlayer());
}
victim.saveToDB(true);
if (victim.getCheatTracker() != null) {
victim.getCheatTracker().dispose();
}
ChannelServer.getInstance(c.getChannel()).removePlayer(c.getPlayer());
c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION);
try {
MaplePacket packet = MaplePacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]));
c.getSession().write(packet);
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
int map = Integer.parseInt(splitted[1]);
MapleMap target = cserv.getMapFactory().getMap(map);
player.changeMap(target, target.getPortal(0));
}
} catch (Exception e) {
}
}
} else if (splitted[0].equals("!exp")) {
int exp = Integer.parseInt(splitted[1]);
player.setExp(exp);
player.updateSingleStat(MapleStat.EXP, exp);
} else if (splitted[0].equals("!warphere")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
victim.changeMap(c.getPlayer().getMap(), c.getPlayer().getMap().findClosestSpawnpoint(c.getPlayer().getPosition()));
} else if (splitted[0].equals("!servermessage")) {
Collection<ChannelServer> css = ChannelServer.getAllInstances();
for (int i = 1; i <= css.size(); ++i) {
ChannelServer.getInstance(i).setServerMessage(
StringUtil.joinStringFrom(splitted, 1));
}
} else if (splitted[0].equals("!notice")) {
int joinmod = 1;
int range = -1;
if (splitted[1].equals("m")) {
range = 0;
} else if (splitted[1].equals("c")) {
range = 1;
} else if (splitted[1].equals("w")) {
range = 2;
}
int tfrom = 2;
if (range == -1) {
range = 2;
tfrom = 1;
}
int type = getNoticeType(splitted[tfrom]);
if (type == -1) {
type = 0;
joinmod = 0;
}
String prefix = "";
if (splitted[tfrom].equals("nv")) {
prefix = "[Notice] ";
}
if (splitted[0].equals("!say") && type == 0) {
type = 6;
prefix = "[" + c.getPlayer().getName() + "] ";
}
joinmod += tfrom;
MaplePacket packet = MaplePacketCreator.serverNotice(type, prefix +
StringUtil.joinStringFrom(splitted, joinmod));
if (range == 0) {
c.getPlayer().getMap().broadcastMessage(packet);
} else if (range == 1) {
ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
} else if (range == 2) {
try {
ChannelServer.getInstance(c.getChannel()).getWorldInterface().broadcastMessage(
c.getPlayer().getName(), packet.getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
}
} else if (splitted[0].equals("!gmsonline")) {
String list = "";
for (MapleCharacter mch : c.getChannelServer().getPlayerStorage().getAllCharacters()) {
if (mch.gmLevel() >= 1) {
list += mch.getName() + " ";
}
}
mc.dropMessage(list);
} else if (splitted[0].equals("!nearestPortal")) {
final MaplePortal portal = player.getMap().findClosestSpawnpoint(player.getPosition());
mc.dropMessage(portal.getName() + " id: " + portal.getId() + " script: " + portal.getScriptName() + "name: " + portal.getName());
} else if (splitted[0].equals("!sp")) {
player.setRemainingSp(getOptionalIntArg(splitted, 1, 1));
player.updateSingleStat(MapleStat.AVAILABLESP, player.getRemainingSp());
} else if (splitted[0].equals("!ap")) {
player.setRemainingAp(getOptionalIntArg(splitted, 1, 1));
player.updateSingleStat(MapleStat.AVAILABLEAP, player.getRemainingAp());
} else if (splitted[0].equals("!fakerelog")) {
c.getSession().write(MaplePacketCreator.getCharInfo(player));
player.getMap().removePlayer(player);
player.getMap().addPlayer(player);
} else if (splitted[0].equals("!charinfo")) {
StringBuilder builder = new StringBuilder();
MapleCharacter other = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
builder.append(MapleClient.getLogMessage(other, ""));
builder.append(" at ");
builder.append(other.getPosition().x);
builder.append("/");
builder.append(other.getPosition().y);
builder.append("/");
builder.append(other.getMap().getFootholds().findBelow(other.getPosition()).getId());
builder.append(" ");
builder.append(other.getHp());
builder.append("/");
builder.append(other.getCurrentMaxHp());
builder.append("hp ");
builder.append(other.getMp());
builder.append("/");
builder.append(other.getCurrentMaxMp());
builder.append("mp ");
builder.append(other.getExp());
builder.append("exp hasParty: ");
builder.append(other.getParty() != null);
builder.append(" hasTrade: ");
builder.append(other.getTrade() != null);
builder.append(" remoteAddress: ");
builder.append(other.getClient().getSession().getRemoteAddress());
mc.dropMessage(builder.toString());
other.getClient().dropDebugMessage(mc);
} else if (splitted[0].equals("!banreason")) {
String name = StringUtil.joinStringFrom(splitted, 1);
mc.dropMessage(getBannedReason(name));
} else if (splitted[0].equals("!ban")) {
if (splitted.length < 3) {
new ServernoticeMapleClientMessageCallback(2, c).dropMessage("Syntax: !ban charname reason");
return true;
} else {
try {
String originalReason = StringUtil.joinStringFrom(splitted, 2);
String reason = c.getPlayer().getName() + " banned " + splitted[1] + ": " + originalReason;
MapleCharacter target = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (target != null) {
if (target.gmLevel() <= 0) {
String readableTargetName = MapleCharacterUtil.makeMapleReadable(target.getName());
String ip = target.getClient().getSession().getRemoteAddress().toString().split(":")[0];
reason += " (IP: " + ip + ")";
target.ban(reason);
mc.dropMessage("Banned " + readableTargetName + " ipban for " + ip + " reason: " + originalReason);
MaplePacket packet = MaplePacketCreator.serverNotice(0, readableTargetName + " has been banned for " + originalReason + ".");
try {
ChannelServer.getInstance(c.getChannel()).getWorldInterface().broadcastMessage(
c.getPlayer().getName(), packet.getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else {
mc.dropMessage("May not ban GMs.");
}
} else {
if (MapleCharacter.ban(splitted[1], reason, false)) {
mc.dropMessage("Offline Banned " + splitted[1]);
} else {
mc.dropMessage("Failed to ban " + splitted[1]);
}
}
} catch (NullPointerException e) {
mc.dropMessage("There was a problem banning " + splitted[1] + ".");
}
}
} else if (splitted[0].equals("!tempban")) {
String originalReason = joinAfterString(splitted, ":");
if (splitted.length < 4 || originalReason == null) {
mc.dropMessage("Syntax helper: !tempban <name> [i / m / w / d / h] <amount> [r [reason id] : Text Reason");
return true;
} else {
try {
Calendar tempB = Calendar.getInstance();
int yChange = getNamedIntArg(splitted, 1, "y", 0);
int mChange = getNamedIntArg(splitted, 1, "m", 0);
int wChange = getNamedIntArg(splitted, 1, "w", 0);
int dChange = getNamedIntArg(splitted, 1, "d", 0);
int hChange = getNamedIntArg(splitted, 1, "h", 0);
int iChange = getNamedIntArg(splitted, 1, "i", 0);
int gReason = getNamedIntArg(splitted, 1, "r", 7);
String reason = c.getPlayer().getName() + " tempbanned " + splitted[1] + ": " + originalReason;
if (gReason > 14) {
mc.dropMessage("You have entered an incorrect ban reason ID, please try again.");
return true;
}
DateFormat df = DateFormat.getInstance();
tempB.set(tempB.get(Calendar.YEAR) + yChange, tempB.get(Calendar.MONTH) + mChange, tempB.get(Calendar.DATE) +
(wChange * 7) + dChange, tempB.get(Calendar.HOUR_OF_DAY) + hChange, tempB.get(Calendar.MINUTE) +
iChange);
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim == null) {
int accId = MapleClient.findAccIdForCharacterName(splitted[1]);
if (accId >= 0 && MapleCharacter.tempban(reason, tempB, gReason, accId)) {
mc.dropMessage("The character " + splitted[1] + " has been successfully offline-tempbanned till " +
df.format(tempB.getTime()) + ".");
} else {
mc.dropMessage("There was a problem offline banning character " + splitted[1] + ".");
}
} else {
if (victim.gmLevel() <= 0) {
victim.tempban(reason, tempB, gReason);
mc.dropMessage("The character " + splitted[1] + " has been successfully tempbanned till " +
df.format(tempB.getTime()));
MaplePacket packet = MaplePacketCreator.serverNotice(0, "[Notice] " + splitted[1] + " has been banned until " + df.format(tempB.getTime()) + " for " + reason + ".");
try {
ChannelServer.getInstance(c.getChannel()).getWorldInterface().broadcastMessage(
c.getPlayer().getName(), packet.getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else {
mc.dropMessage("May not ban GMs.");
}
}
} catch (NullPointerException e) {
mc.dropMessage("There was a problem banning " + splitted[1] + ".");
}
}
} else if (splitted[0].equals("!getreport")) {
if (splitted.length != 2) {
return true;
}
int reportid = Integer.parseInt(splitted[1]);
ResultSet rs = getReport(reportid);
try {
while (rs.next()) {
mc.dropMessage("id: " + rs.getInt("id") + " | time reported: " + rs.getTimestamp("reporttime").toString() + " | reason: " + reasons[rs.getByte("reason")]);
mc.dropMessage("reporter charid: " + rs.getInt("reporterid"));
mc.dropMessage("victim charid: " + rs.getInt("victimid"));
mc.dropMessage("chatlog: ");
mc.dropMessage(rs.getString("chatlog"));
mc.dropMessage("Status: " + rs.getString("status"));
}
} catch (Exception ex) {
}
} else if (splitted[0].equals("!delreport")) {
if (splitted.length != 2) {
return true;
}
int reportid = Integer.parseInt(splitted[1]);
deleteReport(reportid);
} else if (splitted[0].equals("!setreportstatus")) {
if (splitted.length < 3) {
return true;
}
int reportid = Integer.parseInt(splitted[1]);
String status = StringUtil.joinStringFrom(splitted, 2);
setReportStatus(reportid, status);
} else if (splitted[0].equals("!getidbyname")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
if (victim == null) {
mc.dropMessage("You must be on their channel and they must exist.");
return true;
} else {
mc.dropMessage("Done.");
}
} else if (splitted[0].equals("!whereami")) {
new ServernoticeMapleClientMessageCallback(c).dropMessage("You are on map " +
c.getPlayer().getMap().getId());
} else if (splitted[0].equals("!connected")) {
try {
Map<Integer, Integer> connected = cserv.getWorldInterface().getConnected();
StringBuilder conStr = new StringBuilder("Connected Clients: ");
boolean first = true;
for (int i : connected.keySet()) {
if (!first) {
conStr.append(", ");
} else {
first = false;
}
if (i == 0) {
conStr.append("Total: ");
conStr.append(connected.get(i));
} else {
conStr.append("Ch");
conStr.append(i);
conStr.append(": ");
conStr.append(connected.get(i));
}
}
new ServernoticeMapleClientMessageCallback(c).dropMessage(conStr.toString());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
} else if (splitted[0].equals("!whosthere")) {
MessageCallback callback = new ServernoticeMapleClientMessageCallback(c);
StringBuilder builder = new StringBuilder("Players on Map: ");
for (MapleCharacter chr : c.getPlayer().getMap().getCharacters()) {
if (builder.length() > 150) { // wild guess :o
builder.setLength(builder.length() - 2);
callback.dropMessage(builder.toString());
builder = new StringBuilder();
}
builder.append(MapleCharacterUtil.makeMapleReadable(chr.getName()));
builder.append(", ");
}
builder.setLength(builder.length() - 2);
c.getSession().write(MaplePacketCreator.serverNotice(6, builder.toString()));
} else if (splitted[0].equals("!killall") || splitted[0].equals("!monsterdebug")) {
MapleMap map = c.getPlayer().getMap();
double range = Double.POSITIVE_INFINITY;
List<MapleMapObject> monsters = map.getMapObjectsInRange(c.getPlayer().getPosition(), range, Arrays.asList(MapleMapObjectType.MONSTER));
boolean kill = splitted[0].equals("!killall");
for (MapleMapObject monstermo : monsters) {
MapleMonster monster = (MapleMonster) monstermo;
if (kill) {
map.killMonster(monster, c.getPlayer(), true);
monster.giveExpToCharacter(c.getPlayer(), monster.getExp(), true, 1);
} else {
mc.dropMessage("Monster " + monster.toString());
}
}
if (kill) {
mc.dropMessage("Killed " + monsters.size() + " monsters.");
}
} else if (splitted[0].equals("!droprandomstatitem")) {
int id = Integer.parseInt(splitted[1]);
IItem toDrop;
if (!MapleItemInformationProvider.getInstance().getInventoryType(id).equals(MapleInventoryType.EQUIP)) {
mc.dropMessage("Command can only be used for equips.");
} else if (splitted.length != 2) {
mc.dropMessage("Check your parameters.");
} else {
toDrop = MapleItemInformationProvider.getInstance().randomizeStats((Equip) MapleItemInformationProvider.getInstance().getEquipById(id));
c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), toDrop, c.getPlayer().getPosition(), true, true);
}
} else if (splitted[0].equals("!setall")) {
int x = Integer.parseInt(splitted[1]);
player.setStr(x);
player.setDex(x);
player.setInt(x);
player.setLuk(x);
player.updateSingleStat(MapleStat.STR, player.getStr());
player.updateSingleStat(MapleStat.DEX, player.getStr());
player.updateSingleStat(MapleStat.INT, player.getStr());
player.updateSingleStat(MapleStat.LUK, player.getStr());
} else if (splitted[0].equals("!skill")) {
int skill = Integer.parseInt(splitted[1]);
int level = getOptionalIntArg(splitted, 2, 1);
int masterlevel = getOptionalIntArg(splitted, 3, 1);
c.getPlayer().changeSkillLevel(SkillFactory.getSkill(skill), level, masterlevel);
} else if (splitted[0].equals("!heal")) {
player.setHp(player.getMaxHp());
player.updateSingleStat(MapleStat.HP, player.getMaxHp());
player.setMp(player.getMaxMp());
player.updateSingleStat(MapleStat.MP, player.getMaxMp());
} else {
if (player.gmLevel() == 3) {
mc.dropMessage("GM Command " + splitted[0] + " does not exist");
}
return false;
}
return true;
}
}
nice release, this calls for a gamemaster meeting >:L
Fucking hell, stop spoonfeeding this noob and let him fix it himself...
To looney: I fixed up your code:
Just made it so it forces them to CC if they aren't inyour channelCode:} else if (splitted[0].equals("!warpgms")) {
for (ChannelServer cservs : ChannelServer.getAllInstances()) {
for (MapleCharacter mch : cservs.getPlayerStorage().getAllCharacters()) {
if (mch.isGM()) {
if (c.getClient() != mch.getClient()) {
String ip = ChannelServer.getInstance(c.getChannel()).getIP(c.getChannel());
String[] sock = ip.split();
ChannelServer.getInstance(mch.getClient().getChannel()).removePlayer(mch);
try {
MaplePacket packet = MaplePacketCreator.getChannelChange(
InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]));
c.getSession().write(packet);
// c.getSession().close();
} catch (Exception e) {
throw new RuntimeException(e);
}
mch.changeMap(player.getMap(), player.getMap().findClosestSpawnpoint(player.getPosition()));
mc.dropMessage("You have been warped to " + c.getPlayer().getMap().getMapName() + " by " + c.getPlayer().getName());
}
}
}
To everyone else : Change mch to mc -_-
This command is avaliable for Admin only or GMs can use it too?
you may have dropMessage at MapleCharacter, add it looney.
Also, this will not woks only for Admind/etc, only if the "gmLevel" is set, and is set as the admin only can use it. (which is common sense)
OMFG, change mch to mc dipshit -_-
Great idea that I would have never thought of :O Thanks
nice release