Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

V83 | HeliosMS | Cant get past Character Selection screen!

Initiate Mage
Joined
Apr 3, 2015
Messages
46
Reaction score
0
Hey guys i need some help. I'm using HeliosMS Source and i've been having all kinds of errors. I have read through most of the code and fixed most errors and im getting further and further into my server development. Well now im getting stuck at character selection AND character creation. If i go to create a character it lags and if i use the mouse it D/C's, but if i press [Enter] through the whole process it will create my character, BUT once i click start it ask for my pic and i type it in, that part goes away then it just hangs and hangs, i click start again and nothing happens and just keeps sitting there. I get no errors in my .bats so i cant figure out whats going on, any help would be appreciated, thanks!
 
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
You should learn to debug with e.printStackTrace. For every exception in loadCharFromDB and saveToDB there's SQL Exceptions. Print a stack trace at the bottom within the } catch of exception and it will print the errors to your bat. From what you're saying, you can't create/select a character because it fails to load and/or save.
 
Upvote 0
Initiate Mage
Joined
Apr 3, 2015
Messages
46
Reaction score
0
You should learn to debug with e.printStackTrace. For every exception in loadCharFromDB and saveToDB there's SQL Exceptions. Print a stack trace at the bottom within the } catch of exception and it will print the errors to your bat. From what you're saying, you can't create/select a character because it fails to load and/or save.

is there a tutorial you can link me to for doing that? thanks
 
Upvote 0
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
is there a tutorial you can link me to for doing that? thanks

s58bjPM - V83 | HeliosMS | Cant get past Character Selection screen! - RaGEZONE Forums


bN2erBv - V83 | HeliosMS | Cant get past Character Selection screen! - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Upvote 0
Initiate Mage
Joined
Apr 3, 2015
Messages
46
Reaction score
0
cool thanks. ill try that and see what the errors are and repost



My MapleCharacter file looks different on that section. should i change it to look like yours??
this is my MapleCharacter file
public static MapleCharacter loadCharFromDB(int charid, MapleClient client, boolean channelserver) throws SQLException {
try {
MapleCharacter ret = new MapleCharacter();
ret.client = client;
ret.id = charid;
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT * FROM characters WHERE id = ?");
ps.setInt(1, charid);
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
rs.close();
ps.close();
throw new RuntimeException("Loading char failed (not found)");
}
ret.name = rs.getString("name");
ret.level = rs.getInt("level");
ret.fame = rs.getInt("fame");
ret.str = rs.getInt("str");
ret.dex = rs.getInt("dex");
ret.int_ = rs.getInt("int");
ret.luk = rs.getInt("luk");
ret.exp.set(rs.getInt("exp"));
ret.hp = rs.getInt("hp");
ret.reborns = rs.getInt("reborns");
ret.FishingExp = rs.getInt("fishingexp");
ret.FishingLevel = rs.getInt("fishinglevel");
ret.ESP = rs.getInt("ESP");
ret.CookingExp = rs.getInt("cookingexp");
ret.CookingLevel = rs.getInt("cookinglevel");
ret.maxhp = rs.getInt("maxhp");
ret.mp = rs.getInt("mp");
ret.maxmp = rs.getInt("maxmp");
ret.hpMpApUsed = rs.getInt("hpMpUsed");
ret.hasMerchant = rs.getInt("HasMerchant") == 1;
ret.remainingSp = rs.getInt("sp");
ret.remainingAp = rs.getInt("ap");
ret.meso.set(rs.getInt("meso"));
ret.gmLevel = rs.getInt("gm");
ret.skinColor = MapleSkinColor.getById(rs.getInt("skincolor"));
ret.gender = rs.getInt("gender");
ret.job = MapleJob.getById(rs.getInt("job"));
ret.occupation = MapleOccupations.getById(rs.getInt("occupation"));
ret.finishedDojoTutorial = rs.getInt("finishedDojoTutorial") == 1;
ret.vanquisherKills = rs.getInt("vanquisherKills");
ret.omokwins = rs.getInt("omokwins");
ret.omoklosses = rs.getInt("omoklosses");
ret.omokties = rs.getInt("omokties");
ret.matchcardwins = rs.getInt("matchcardwins");
ret.matchcardlosses = rs.getInt("matchcardlosses");
ret.matchcardties = rs.getInt("matchcardties");
ret.receivedMOTB = rs.getInt("receivedMOTB") == 1;
ret.hair = rs.getInt("hair");
ret.face = rs.getInt("face");
ret.accountid = rs.getInt("accountid");
ret.mapid = rs.getInt("map");
ret.initialSpawnPoint = rs.getInt("spawnpoint");
ret.world = rs.getInt("world");
ret.rank = rs.getInt("rank");
ret.rankMove = rs.getInt("rankMove");
ret.jobRank = rs.getInt("jobRank");
ret.jobRankMove = rs.getInt("jobRankMove");
int mountexp = rs.getInt("mountexp");
int mountlevel = rs.getInt("mountlevel");
int mounttiredness = rs.getInt("mounttiredness");
ret.guildid = rs.getInt("guildid");
ret.guildrank = rs.getInt("guildrank");
ret.allianceRank = rs.getInt("allianceRank");
ret.familyId = rs.getInt("familyId");
ret.bookCover = rs.getInt("monsterbookcover");
ret.monsterbook = new MonsterBook();
ret.monsterbook.loadCards(charid);
ret.watchedCygnusIntro = rs.getInt("watchedcygnusintro") == 1;
ret.vanquisherStage = rs.getInt("vanquisherStage");
ret.dojoPoints = rs.getInt("dojoPoints");
ret.dojoStage = rs.getInt("lastDojoStage");
ret.whitechat = ret.gmLevel > 0;
ret.givenRiceCakes = rs.getInt("givenRiceCakes");
ret.partyquestitems = rs.getString("partyquestitems");
if (ret.guildid > 0) {
ret.mgc = new MapleGuildCharacter(ret);
}



i added the printStackTrace code and its still not showing any errors. it just keeps hanging on character selection
 
Upvote 0
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
any help?

if you did it properly and still no errors, try making a new character. I also suggest to try debugging saveToDB when doing so (not sure if you did both or just loadChar) to see if that will show any errors. When you click a character and/or select a channel it loads all of your characters with "loadCharFromDB". I suggest just trying to re-execute the SQL though as it's probably messed up.
 
Upvote 0
Initiate Mage
Joined
Apr 3, 2015
Messages
46
Reaction score
0
i think whats going on is the PIC isn't registering, saving, or anything. It freezes after PIC is put in, and i sometimes get errors saying PIC isn't registered and PIC could not be saved.
 
Upvote 0
Junior Spellweaver
Joined
Jun 25, 2011
Messages
100
Reaction score
5
still not working? Try re-copying and pasting the java policy files, that tends to be a common area where people go wrong.
 
Upvote 0
Initiate Mage
Joined
Apr 3, 2015
Messages
46
Reaction score
0
i have many times. It's not that. it seems my problems are with the PIC/PIN code, but idk what. After i put in the PIC it just hangs on character selection screen. I will get this source working and fix all the problems and re-release it with all these fixes :thumbup:



ill get a screen recorder and post a quick vid showing that nothing happens and no errors show and see if anyone could enlighten this error for me



This is what's going on with my server. I can't figure out whats wrong.
 
Upvote 0
Initiate Mage
Joined
Apr 3, 2015
Messages
46
Reaction score
0
PIC isn't disabled if it's asking you to register one.. Your packet may be wrong for charlist.

thats what im saying! idk whats going on. the pic is disabled and its still asking for one and freezing on char select. what source do you suggest i use? is there a clean v83 source with no add-ons like MoopleDEV but HAS commands? because i cant find tutorials on adding commands in MoopleDEV
 
Upvote 0
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
thats what im saying! idk whats going on. the pic is disabled and its still asking for one and freezing on char select. what source do you suggest i use? is there a clean v83 source with no add-ons like MoopleDEV but HAS commands? because i cant find tutorials on adding commands in MoopleDEV

you could change the byte in getCharlist within MaplePacketCreator to like 1 or 2 for Fake PIC, and then just enter a random number. That, or you can find some other source. I think most v83 sources are based off of Moople and include commands, you could check out like NakedStory or look around the release section
 
Upvote 0
not a programmer
Joined
Mar 30, 2015
Messages
532
Reaction score
62
Update 2: Sort of fixed.
Here are some ripped commands.
Replace your .Commands.java
Code:
/* This file is part of the OdinMS Maple Story Server
 Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
 Matthias Butz <matze@odinms.de>
 Jan Christian Meyer <vimes@odinms.de>


 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Affero General Public License as
 published by the Free Software Foundation version 3 as published by
 the Free Software Foundation. You may not use, modify or distribute
 this program under any other version of the GNU Affero General Public
 License.te


 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU Affero General Public License for more details.


 You should have received a copy of the GNU Affero General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package client.command;


import client.MapleBuffStat;
import client.MapleCharacter;
import client.MapleClient;
import client.MapleJob;
import client.MapleStat;
import client.Skill;
import client.SkillFactory;
import client.inventory.Item;
import client.inventory.MapleInventoryType;
import client.inventory.MaplePet;
import constants.ItemConstants;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import net.server.Server;
import net.server.channel.Channel;
import net.server.world.World;
import provider.MapleData;
import provider.MapleDataProvider;
import provider.MapleDataProviderFactory;
import provider.MapleDataTool;
import scripting.npc.NPCScriptManager;
import server.MapleInventoryManipulator;
import server.MapleItemInformationProvider;
import server.MapleShopFactory;
import server.TimerManager;
import server.events.gm.MapleEvent;
import server.life.MapleLifeFactory;
import server.life.MapleMonster;
import server.life.MapleNPC;
import server.maps.MapleMap;
import server.maps.MapleMapItem;
import server.maps.MapleMapObject;
import server.maps.MapleMapObjectType;
import tools.DatabaseConnection;
import tools.MaplePacketCreator;
import tools.Pair;


public class Commands {


    public static boolean executePlayerCommand(MapleClient c, String[] sub, char heading) {
        MapleCharacter chr = c.getPlayer();
        if (heading != '/' && chr.gmLevel() == 0) {
            chr.yellowMessage("You may not use " + heading + ", please try /");
            return false;
        }
        switch (sub[0]) {
            case "dispose":
                NPCScriptManager.getInstance().dispose(c);
                c.announce(MaplePacketCreator.enableActions());
                chr.message("Disposed.");
                break;
            case "whyevendothis":
                List<Pair<MapleBuffStat, Integer>> list = new ArrayList<>();
                list.add(new Pair<>(MapleBuffStat.MORPH, 8));
                list.add(new Pair<>(MapleBuffStat.CONFUSE, 1));
                chr.announce(MaplePacketCreator.giveBuff(0, 0, list));
                chr.getMap().broadcastMessage(chr, MaplePacketCreator.giveForeignBuff(chr.getId(), list));
                break;
            case "save":
                if(System.currentTimeMillis() > 60000) {
                chr.saveToDB();
                chr.dropMessage("Saved."); 
                }
                else {
                chr.dropMessage("10min wait."); }
                break;
            case "resetstats":
                chr.resetStats();
                break;
            case "resetexp":
                chr.setExp(0);
                break;
            case "go":
            case "goto":
            case "warp":
                HashMap<String, Integer> maps = new HashMap<String, Integer>();
                    maps.put("henesys", 100000000);
                    maps.put("ellinia", 101000000);
                    maps.put("perion", 102000000);
                    maps.put("kerning", 103000000);
                    maps.put("lith", 104000000);
                    maps.put("sleepywood", 105040300);
                    maps.put("florina", 110000000);
                    maps.put("orbis", 200000000);
                    maps.put("happy", 209000000);
                    maps.put("elnath", 211000000);
		    maps.put("ereve", 130000000);
                    maps.put("ludi", 220000000);
                    maps.put("omega", 221000000);
                    maps.put("korean", 222000000);
                    maps.put("aqua", 230000000);
                    maps.put("leafre", 240000000);
                    maps.put("mulung", 250000000);
                    maps.put("herb", 251000000);
                    maps.put("nlc", 600000000);
                    maps.put("shrine", 800000000);
                    maps.put("showa", 801000000);
                    maps.put("fm", 910000000);
                    maps.put("guild", 200000301);
                    maps.put("fog", 105040306);
            if (sub.length != 2) {
                StringBuilder builder = new StringBuilder("Syntax: /goto <mapname>");
                int i = 0;
                for (String mapss : maps.keySet()) {
                    if (1 % 10 == 0) {// 10 maps per line
                        chr.dropMessage(builder.toString());
                    } else {
                        builder.append(mapss + ", ");
                    }
                }
                chr.dropMessage(builder.toString());
            } else if (maps.containsKey(sub[1])) {
                int map = maps.get(sub[1]);
                if (map == 910000000) {
                    chr.saveLocation("FREE_MARKET");
                }
                chr.changeMap(map);
            } else {
                        chr.dropMessage("========================================================================");
                        chr.dropMessage("                ..::| Goto Map Selections |::..                 ");
                        chr.dropMessage("========================================================================");
                        chr.dropMessage("| henesys | ellinia | perion | kerning | lith   | sleepywood | florina |");
                        chr.dropMessage("| fog     | orbis   | happy  | elnath  | ereve  | ludi       | omega   |");
                        chr.dropMessage("| korean  | aqua    | leafre | mulung  | herb   | nlc        | shrine  |");
                        chr.dropMessage("| shower  | fm      | guild  |");
                }
            maps.clear();
                break;
            case "commands":
                chr.dropMessage("/dispose");
                chr.dropMessage("/save");
                chr.dropMessage("/go or /goto or /warp");
                chr.dropMessage("/resetstats");
                chr.dropMessage("/resetexp");
                break;
            default:
                if (heading == '/') {
                chr.yellowMessage("Player Command " + heading + sub[0] + " does not exist. Use " + heading + "commands");
                }
                return false;
        }
        return true;
    }


    public static boolean executeGMCommand(MapleClient c, String[] sub, char heading) {
        MapleCharacter player = c.getPlayer();
        Channel cserv = c.getChannelServer();
        Server srv = Server.getInstance();
        if (sub[0].equals("ap")) {
            player.setRemainingAp(Integer.parseInt(sub[1]));
        } else if (sub[0].equals("buffme")) {
            final int[] array = {9001000, 9101002, 9101003, 9101008, 2001002, 1101007, 1005, 2301003, 5121009, 1111002, 4111001, 4111002, 4211003, 4211005, 1321000, 2321004, 3121002};
            for (int i : array) {
                SkillFactory.getSkill(i).getEffect(SkillFactory.getSkill(i).getMaxLevel()).applyTo(player);
            }
        } else if (sub[0].equals("spawn")) {
            MapleMonster monster = MapleLifeFactory.getMonster(Integer.parseInt(sub[1]));
            if (monster == null) {
                return true;
            }
            if (sub.length > 2) {
                for (int i = 0; i < Integer.parseInt(sub[2]); i++) {
                    player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(Integer.parseInt(sub[1])), player.getPosition());
                }
            } else {
                player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(Integer.parseInt(sub[1])), player.getPosition());
            }
        } else if (sub[0].equals("cleardrops")) {
            player.getMap().clearDrops(player);
        } else if (sub[0].equals("gmchat")) {
            String message = joinStringFrom(sub, 1);
            Server.getInstance().gmChat(player.getName() + " : " + message, null);
        } else if (sub[0].equals("dc")) {
            MapleCharacter victim = c.getWorldServer().getPlayerStorage().getCharacterByName(sub[1]);
            if (victim == null) {
                victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]);
                if (victim == null) {
                    victim = player.getMap().getCharacterByName(sub[1]);
                    if (victim != null) {
                        try {//sometimes bugged because the map = null
                            victim.getClient().getSession().close();
                            player.getMap().removePlayer(victim);
                        } catch (Exception e) {
                        }
                    } else {
                        return true;
                    }
                }
            }
            if (player.gmLevel() < victim.gmLevel()) {
                victim = player;
            }
            victim.getClient().disconnect(false, false);
        } else if (sub[0].equals("exprate")) {
            c.getWorldServer().setExpRate(Integer.parseInt(sub[1]));
            for (MapleCharacter mc : c.getWorldServer().getPlayerStorage().getAllCharacters()) {
                mc.setRates();
            }
        } else if (sub[0].equals("fame")) {
            MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(sub[1]);
            victim.setFame(Integer.parseInt(sub[2]));
            victim.updateSingleStat(MapleStat.FAME, victim.getFame());
        } else if (sub[0].equals("giftnx")) {
            cserv.getPlayerStorage().getCharacterByName(sub[1]).getCashShop().gainCash(1, Integer.parseInt(sub[2]));
            player.message("Done");
        } else if (sub[0].equals("gmshop")) {
            MapleShopFactory.getInstance().getShop(1337).sendShop(c);
        } else if (sub[0].equals("heal")) {
            player.setHpMp(30000);
        } else if (sub[0].equals("id")) {
            try {
                try (BufferedReader dis = new BufferedReader(new InputStreamReader(new URL("http://www.mapletip.com/search_java.php?search_value=" + sub[1] + "&check=true").openConnection().getInputStream()))) {
                    String s;
                    while ((s = dis.readLine()) != null) {
                        player.dropMessage(s);
                    }
                }
            } catch (Exception e) {
            }
        } else if (sub[0].equals("item") || sub[0].equals("drop")) {
            int itemId = Integer.parseInt(sub[1]);
            short quantity = 1;
            try {
                quantity = Short.parseShort(sub[2]);
            } catch (Exception e) {
            }
            if (sub[0].equals("item")) {
                int petid = -1;
                if (ItemConstants.isPet(itemId)) {
                    petid = MaplePet.createPet(itemId);
                }
                MapleInventoryManipulator.addById(c, itemId, quantity, player.getName(), petid, -1);
            } else {
                Item toDrop;
                if (MapleItemInformationProvider.getInstance().getInventoryType(itemId) == MapleInventoryType.EQUIP) {
                    toDrop = MapleItemInformationProvider.getInstance().getEquipById(itemId);
                } else {
                    toDrop = new Item(itemId, (byte) 0, quantity);
                }
                c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), toDrop, c.getPlayer().getPosition(), true, true);
            }
        } else if (sub[0].equals("job")) {
            player.changeJob(MapleJob.getById(Integer.parseInt(sub[1])));
            player.equipChanged();
        } else if (sub[0].equals("kill")) {
            if (sub.length >= 2) {
                cserv.getPlayerStorage().getCharacterByName(sub[1]).setHpMp(0);
            }
        } else if (sub[0].equals("killall")) {
            List<MapleMapObject> monsters = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER));
            MapleMap map = player.getMap();
            for (MapleMapObject monstermo : monsters) {
                MapleMonster monster = (MapleMonster) monstermo;
                map.killMonster(monster, player, true);
                monster.giveExpToCharacter(player, monster.getExp() * c.getPlayer().getExpRate(), true, 1);
            }
            player.dropMessage("Killed " + monsters.size() + " monsters.");
        } else if (sub[0].equals("monsterdebug")) {
            List<MapleMapObject> monsters = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER));
            for (MapleMapObject monstermo : monsters) {
                MapleMonster monster = (MapleMonster) monstermo;
                player.message("Monster ID: " + monster.getId());
            }
        } else if (sub[0].equals("unbug")) {
            c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.enableActions());
        } else if (sub[0].equals("level")) {
            player.setLevel(Integer.parseInt(sub[1]));
            player.gainExp(-player.getExp(), false, false);
            player.updateSingleStat(MapleStat.LEVEL, player.getLevel());
        } else if (sub[0].equals("levelperson")) {
            MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(sub[1]);
            victim.setLevel(Integer.parseInt(sub[2]));
            victim.gainExp(-victim.getExp(), false, false);
            victim.updateSingleStat(MapleStat.LEVEL, victim.getLevel());
        } else if (sub[0].equals("levelpro")) {
            while (player.getLevel() < Math.min(255, Integer.parseInt(sub[1]))) {
                player.levelUp(false);
            }
        } else if (sub[0].equals("levelup")) {
            player.levelUp(false);
        } else if (sub[0].equals("maxstat")) {
            final String[] s = {"setall", String.valueOf(Short.MAX_VALUE)};
            executeGMCommand(c, s, heading);
            player.setLevel(255);
            player.setFame(13337);
            player.setMaxHp(30000);
            player.setMaxMp(30000);
            player.updateSingleStat(MapleStat.LEVEL, 255);
            player.updateSingleStat(MapleStat.FAME, 13337);
            player.updateSingleStat(MapleStat.MAXHP, 30000);
            player.updateSingleStat(MapleStat.MAXMP, 30000);
        } else if (sub[0].equals("maxskills")) {
            for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
                try {
                    Skill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
                    player.changeSkillLevel(skill, (byte) skill.getMaxLevel(), skill.getMaxLevel(), -1);
                } catch (NumberFormatException nfe) {
                    break;
                } catch (NullPointerException npe) {
                    continue;
                }
            }
        } else if (sub[0].equals("mesoperson")) {
            cserv.getPlayerStorage().getCharacterByName(sub[1]).gainMeso(Integer.parseInt(sub[2]), true);
        } else if (sub[0].equals("mesos")) {
            player.gainMeso(Integer.parseInt(sub[1]), true);
        } else if (sub[0].equals("notice")) {
            Server.getInstance().broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(6, "[Notice] " + joinStringFrom(sub, 1)));
        } else if (sub[0].equals("openportal")) {
            player.getMap().getPortal(sub[1]).setPortalState(true);
        } else if (sub[0].equals("closeportal")) {
            player.getMap().getPortal(sub[1]).setPortalState(false);
        } else if (sub[0].equals("startevent")) {
            for (MapleCharacter chr : player.getMap().getCharacters()) {
                player.getMap().startEvent(chr);
            }
            c.getChannelServer().setEvent(null);
        } else if (sub[0].equals("scheduleevent")) {
            if (c.getPlayer().getMap().hasEventNPC()) {
                switch (sub[1]) {
                    case "treasure":
                        c.getChannelServer().setEvent(new MapleEvent(109010000, 50));
                        break;
                    case "ox":
                        c.getChannelServer().setEvent(new MapleEvent(109020001, 50));
                        srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                        break;
                    case "ola":
                        c.getChannelServer().setEvent(new MapleEvent(109030101, 50)); // Wrong map but still Ola Ola
                        srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                        break;
                    case "fitness":
                        c.getChannelServer().setEvent(new MapleEvent(109040000, 50));
                        srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                        break;
                    case "snowball":
                        c.getChannelServer().setEvent(new MapleEvent(109060001, 50));
                        srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                        break;
                    case "coconut":
                        c.getChannelServer().setEvent(new MapleEvent(109080000, 50));
                        srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                        break;
                    default:
                        player.message("Wrong Syntax: /scheduleevent treasure, ox, ola, fitness, snowball or coconut");
                        break;
                }
            } else {
                player.message("You can only use this command in the following maps: 60000, 104000000, 200000000, 220000000");
            }


        } else if (sub[0].equals("online")) {
            for (Channel ch : srv.getChannelsFromWorld(player.getWorld())) {
                String s = "Characters online (Channel " + ch.getId() + " Online: " + ch.getPlayerStorage().getAllCharacters().size() + ") : ";
                if (ch.getPlayerStorage().getAllCharacters().size() < 50) {
                    for (MapleCharacter chr : ch.getPlayerStorage().getAllCharacters()) {
                        s += MapleCharacter.makeMapleReadable(chr.getName()) + ", ";
                    }
                    player.dropMessage(s.substring(0, s.length() - 2));
                }
            }
        } else if (sub[0].equals("pap")) {
            player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8500001), player.getPosition());
        } else if (sub[0].equals("pianus")) {
            player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8510000), player.getPosition());
        } else if (sub[0].equalsIgnoreCase("search")) {
            StringBuilder sb = new StringBuilder();
            if (sub.length > 2) {
                String search = joinStringFrom(sub, 2);
                long start = System.currentTimeMillis();//for the lulz
                MapleData data = null;
                MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File("wz/String.wz"));
                if (!sub[1].equalsIgnoreCase("ITEM")) {
                    if (sub[1].equalsIgnoreCase("NPC")) {
                        data = dataProvider.getData("Npc.img");
                    } else if (sub[1].equalsIgnoreCase("MOB") || sub[1].equalsIgnoreCase("MONSTER")) {
                        data = dataProvider.getData("Mob.img");
                    } else if (sub[1].equalsIgnoreCase("SKILL")) {
                        data = dataProvider.getData("Skill.img");
                    } else if (sub[1].equalsIgnoreCase("MAP")) {
                        sb.append("#bUse the '/m' command to find a map. If it finds a map with the same name, it will warp you to it.");
                    } else {
                        sb.append("#bInvalid search.\r\nSyntax: '/search [type] [name]', where [type] is NPC, ITEM, MOB, or SKILL.");
                    }
                    if (data != null) {
                        String name;
                        for (MapleData searchData : data.getChildren()) {
                            name = MapleDataTool.getString(searchData.getChildByPath("name"), "NO-NAME");
                            if (name.toLowerCase().contains(search.toLowerCase())) {
                                sb.append("#b").append(Integer.parseInt(searchData.getName())).append("#k - #r").append(name).append("\r\n");
                            }
                        }
                    }
                } else {
                    for (Pair<Integer, String> itemPair : MapleItemInformationProvider.getInstance().getAllItems()) {
                        if (sb.length() < 32654) {//ohlol
                            if (itemPair.getRight().toLowerCase().contains(search.toLowerCase())) {
                                //#v").append(id).append("# #k- 
                                sb.append("#b").append(itemPair.getLeft()).append("#k - #r").append(itemPair.getRight()).append("\r\n");
                            }
                        } else {
                            sb.append("#bCouldn't load all items, there are too many results.\r\n");
                            break;
                        }
                    }
                }
                if (sb.length() == 0) {
                    sb.append("#bNo ").append(sub[1].toLowerCase()).append("s found.\r\n");
                }


                sb.append("\r\n#kLoaded within ").append((double) (System.currentTimeMillis() - start) / 1000).append(" seconds.");//because I can, and it's free


            } else {
                sb.append("#bInvalid search.\r\nSyntax: '/search [type] [name]', where [type] is NPC, ITEM, MOB, or SKILL.");
            }
            c.announce(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, sb.toString(), "00 00", (byte) 0));
        } else if (sub[0].equals("servermessage")) {
            c.getWorldServer().setServerMessage(joinStringFrom(sub, 1));
        } else if (sub[0].equals("warpsnowball")) {
            for (MapleCharacter chr : player.getMap().getCharacters()) {
                chr.changeMap(109060000, chr.getTeam());
            }
        } else if (sub[0].equals("setall")) {
            final int x = Short.parseShort(sub[1]);
            player.setStr(x);
            player.setDex(x);
            player.setInt(x);
            player.setLuk(x);
            player.updateSingleStat(MapleStat.STR, x);
            player.updateSingleStat(MapleStat.DEX, x);
            player.updateSingleStat(MapleStat.INT, x);
            player.updateSingleStat(MapleStat.LUK, x);
        } else if (sub[0].equals("sp")) {
            player.setRemainingSp(Integer.parseInt(sub[1]));
            player.updateSingleStat(MapleStat.AVAILABLESP, player.getRemainingSp());
        } else if (sub[0].equals("command")) {
                player.dropMessage("@apall");
                player.dropMessage("@buffme");
                player.dropMessage("@Spawn");
                player.dropMessage("@Clear");
                player.dropMessage("@dc");
                player.dropMessage("@exprate");
                player.dropMessage("@Fame");
                player.dropMessage("@Giftnx");
                player.dropMessage("@gmshop");
                player.dropMessage("@heal");
                player.dropMessage("@item");
                player.dropMessage("@job");
                player.dropMessage("@kill");
                player.dropMessage("@killall");
                player.dropMessage("@level");
                player.dropMessage("@levelperson");
                player.dropMessage("@levelup");
                player.dropMessage("@maxstat");
                player.dropMessage("@maxskills");
                player.dropMessage("@mesoperson amount");
                player.dropMessage("@mesos amount");
                player.dropMessage("@notice");
                player.dropMessage("@openportal");
                player.dropMessage("@Closeportal");
                player.dropMessage("@Startevent");
                player.dropMessage("@Scheduleevent event");
                player.dropMessage("@OnLine");
                player.dropMessage("@Servermessage");
                player.dropMessage("@Setall amount");
                player.dropMessage("@sp amount");
                player.dropMessage("@unban accountid");
                player.dropMessage("@Pap");
                player.dropMessage("@pianus");
                player.dropMessage("@warpsnowball");
                player.dropMessage("@unbug");
        } else if (sub[0].equals("unban")) {
            try {
                try (PreparedStatement p = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET banned = -1 WHERE id = " + MapleCharacter.getIdByName(sub[1]))) {
                    p.executeUpdate();
                }
            } catch (Exception e) {
                player.message("Failed to unban " + sub[1]);
                return true;
            }
            player.message("Unbanned " + sub[1]);
        } else {
            if (heading == '@' && player.gmLevel() >= 2) { 
            player.yellowMessage("GM Command " + heading + sub[0] + " does not exist. Use " + heading + "command");
            }
            return false;
        }
        return true;
    }


    public static void executeAdminCommand(MapleClient c, String[] sub, char heading) {
        MapleCharacter player = c.getPlayer();
        switch (sub[0]) {
            case "horntail":
                player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8810026), player.getPosition());
                break;
            case "packet":
                player.getMap().broadcastMessage(MaplePacketCreator.customPacket(joinStringFrom(sub, 1)));
                break;
            case "warpworld":
                Server server = Server.getInstance();
                byte worldb = Byte.parseByte(sub[1]);
                if (worldb <= (server.getWorlds().size() - 1)) {
                    try {
                        String[] socket = server.getIP(worldb, c.getChannel()).split(":");
                        c.getWorldServer().removePlayer(player);
                        player.getMap().removePlayer(player);//LOL FORGOT THIS ><                    
                        c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION);
                        player.setWorld(worldb);
                        player.saveToDB();//To set the new world :O (true because else 2 player instances are created, one in both worlds)
                        c.announce(MaplePacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1])));
                    } catch (UnknownHostException | NumberFormatException ex) {
                        player.message("Error when trying to change worlds, are you sure the world you are trying to warp to has the same amount of channels?");
                    }


                } else {
                    player.message("Invalid world; highest number available: " + (server.getWorlds().size() - 1));
                }
                break;
            case "saveall"://fyi this is a stupid command
                for (World world : Server.getInstance().getWorlds()) {
                    for (MapleCharacter chr : world.getPlayerStorage().getAllCharacters()) {
                        chr.saveToDB();
                    }
                }
                break;
                case "pmob":
            int mobId = Integer.parseInt(sub[1]);
            int mobTime = Integer.parseInt(sub[2]);
            int xpos2 = player.getPosition().x;
            int ypos2 = player.getPosition().y;
            int fh2 = player.getMap().getFootholds().findBelow(player.getPosition()).getId();
            if (sub[2] == null) {
                mobTime = 0;
            }
            MapleMonster mob = MapleLifeFactory.getMonster(mobId);
            if (mob != null && !mob.getName().equals("MISSINGNO")) {
                mob.setPosition(player.getPosition());
                mob.setCy(ypos2);
                mob.setRx0(xpos2 + 50);
                mob.setRx1(xpos2 - 50);
                mob.setFh(fh2);
                try {
                    Connection con = DatabaseConnection.getConnection();
                    PreparedStatement ps = con.prepareStatement("INSERT INTO spawns ( idd, f, fh2, cy, rx0, rx1, type, x, y, mid, mobtime ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )");
                    ps.setInt(1, mobId);
                    ps.setInt(2, 0);
                    ps.setInt(3, fh2);
                    ps.setInt(4, ypos2);
                    ps.setInt(5, xpos2 + 50);
                    ps.setInt(6, xpos2 - 50);
                    ps.setString(7, "m");
                    ps.setInt(8, xpos2);
                    ps.setInt(9, ypos2);
                    ps.setInt(10, player.getMapId());
                    ps.setInt(11, mobTime);
                    ps.executeUpdate();
                } catch (SQLException e) {
                    player.dropMessage("Failed to save MOB to the database");
                }
                player.getMap().addMonsterSpawn(mob, mobTime, 0);
            } else {
                player.dropMessage("You have entered an invalid Mob-Id");
            }
                break;
            case "npc":
                if (sub.length < 1) {
                    break;
                }
                MapleNPC npc = MapleLifeFactory.getNPC(Integer.parseInt(sub[1]));
                if (npc != null) {
                    npc.setPosition(player.getPosition());
                    npc.setCy(player.getPosition().y);
                    npc.setRx0(player.getPosition().x + 50);
                    npc.setRx1(player.getPosition().x - 50);
                    npc.setFh(player.getMap().getFootholds().findBelow(c.getPlayer().getPosition()).getId());
                    player.getMap().addMapObject(npc);
                    player.getMap().broadcastMessage(MaplePacketCreator.spawnNPC(npc));
                }
                break;
            case "pnpc":
            int pnpcId = Integer.parseInt(sub[1]);
            MapleNPC pnpc = MapleLifeFactory.getNPC(pnpcId);
            int xpos = player.getPosition().x;
            int ypos = player.getPosition().y;
            int fh = player.getMap().getFootholds().findBelow(player.getPosition()).getId();
            if (pnpc != null && !pnpc.getName().equalsIgnoreCase("MISSINGNO")) {
                pnpc.setPosition(player.getPosition());
                pnpc.setCy(ypos);
                pnpc.setRx0(xpos + 50);
                pnpc.setRx1(xpos - 50);
                pnpc.setFh(fh);
                try {
                    Connection con = DatabaseConnection.getConnection();
                    PreparedStatement ps = con.prepareStatement("INSERT INTO spawns ( idd, f, fh, cy, rx0, rx1, type, x, y, mid ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )");
                    ps.setInt(1, pnpcId);
                    ps.setInt(2, 0);
                    ps.setInt(3, fh);
                    ps.setInt(4, ypos);
                    ps.setInt(5, xpos + 50);
                    ps.setInt(6, xpos - 50);
                    ps.setString(7, "n");
                    ps.setInt(8, xpos);
                    ps.setInt(9, ypos);
                    ps.setInt(10, player.getMapId());
                    ps.executeUpdate();
                } catch (SQLException e) {
                    player.dropMessage("Failed to save NPC to the database");
                }
                player.getMap().addMapObject(pnpc);
                player.getMap().broadcastMessage(MaplePacketCreator.spawnNPC(pnpc));
            } else {
                player.dropMessage("You have entered an invalid Npc-Id");
            }
		break;
            case "jobperson": {
                MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]);
                victim.changeJob(MapleJob.getById(Integer.parseInt(sub[2])));
                player.equipChanged();
                break;
            }
            case "pinkbean":
                player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8820009), player.getPosition());
                break;
            case "playernpc":
                player.playerNPC(c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]), Integer.parseInt(sub[2]));
                break;
            case "setgmlevel": {
                MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]);
                victim.setGM(Integer.parseInt(sub[2]));
                player.message("Done.");
                victim.getClient().disconnect(false, false);
                break;
            }
            case "shutdown":
            case "shutdownnow":
                int time = 60000;
                if (sub[0].equals("shutdownnow")) {
                    time = 1;
                } else if (sub.length > 1) {
                    time *= Integer.parseInt(sub[1]);
                }
                TimerManager.getInstance().schedule(Server.getInstance().shutdown(false), time);
                break;
            case "sql": {
                final String query = Commands.joinStringFrom(sub, 1);
                try {
                    try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement(query)) {
                        ps.executeUpdate();
                    }
                    player.message("Done " + query);
                } catch (SQLException e) {
                    player.message("Query Failed: " + query);
                }
                break;
            }
            case "sqlwithresult": {
                String name = sub[1];
                final String query = Commands.joinStringFrom(sub, 2);
                try {
                    try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement(query); ResultSet rs = ps.executeQuery()) {
                        while (rs.next()) {
                            player.dropMessage(String.valueOf(rs.getObject(name)));
                        }
                    }
                } catch (SQLException e) {
                    player.message("Query Failed: " + query);
                }
                break;
            }
            case "itemvac":
                List<MapleMapObject> items = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM));
                for (MapleMapObject item : items) {
                    MapleMapItem mapitem = (MapleMapItem) item;
                    if (!MapleInventoryManipulator.addFromDrop(c, mapitem.getItem(), true)) {
                        continue;
                    }
                    mapitem.setPickedUp(true);
                    player.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 2, player.getId()), mapitem.getPosition());
                    player.getMap().removeMapObject(item);


                }
                break;
            case "zakum":
                player.getMap().spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(8800000), player.getPosition());
                for (int x = 8800003; x < 8800011; x++) {
                    player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(x), player.getPosition());
                }
                break;
            case "ahelp":
            case "comm":
                player.dropMessage("!saveall");
                player.dropMessage("!pmob mobid time");
                player.dropMessage("!npc npcid");
                player.dropMessage("!pnpc npcid");
                player.dropMessage("!jobperson");
                player.dropMessage("!playernpc charname npcid");
                player.dropMessage("!setgmlevel charname level");
                player.dropMessage("!shutdown time or !shutdownnow");
                player.dropMessage("!sql statement");
                player.dropMessage("!sqlwithresult name statement");
                player.dropMessage("!zakum");
                player.dropMessage("!horntail");
                player.dropMessage("!pinkbean");
                player.dropMessage("!packet");
                player.dropMessage("!itemvac");
                player.dropMessage("!warpworld");
                break;
            default:
                if (heading == '!' && player.gmLevel() >= 3) {
                player.yellowMessage("Admin Command " + heading + sub[0] + " does not exist. Use " + heading + "ahelp or " + heading + "comm");
                }
                break;
        }
    }


    private static String joinStringFrom(String arr[], int start) {
        StringBuilder builder = new StringBuilder();
        for (int i = start; i < arr.length; i++) {
            builder.append(arr[i]);
            if (i != arr.length - 1) {
                builder.append(" ");
            }
        }
        return builder.toString();
    }
}
Player Commands: "/" help
dispose
save
go or goto or warp
resetstats
resetexp
GM Commands: "@" command
apall
buffme
spawn
clear
dc
exprate
fame
giftnx
gmshop
heal
item
job
kill
killall
level
levelperson
levelup
maxstat
maxskills
mesoperson amount
mesos amount
notice
openportal
closeportal
startevent
scheduleevent event
online
servermessage
setall amount
sp amount
unban accountid
pap
pianus
warpsnowball
unbug
search
Admin Commands: "!" ahelp or comm
saveall
pmob mobid time
npc npcid
pnpc npcid
jobperson
playernpc charname npcid
setgmlevel charname level
shutdown time or shutdownnow
sql statement
sqlwithresult name statement
zakum
horntail
pinkbean
packet
itemvac
warpworld
 
Last edited:
Upvote 0
Initiate Mage
Joined
Apr 3, 2015
Messages
46
Reaction score
0
you could change the byte in getCharlist within MaplePacketCreator to like 1 or 2 for Fake PIC, and then just enter a random number. That, or you can find some other source. I think most v83 sources are based off of Moople and include commands, you could check out like NakedStory or look around the release section
Ill try changing the byte. and i've tried every repack for v83 i could fine and none of them want to work. MoopleDEV is the only one that works, but i can not play the game because all the pictures of everything is all distorted and stretched out and you cant even tell what anything is. and idk how to fix that



Here are some ripped commands for MoopleDEV.
Replace your .Commands.java
Code:
/* This file is part of the OdinMS Maple Story Server
 Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
 Matthias Butz <matze@odinms.de>
 Jan Christian Meyer <vimes@odinms.de>


 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Affero General Public License as
 published by the Free Software Foundation version 3 as published by
 the Free Software Foundation. You may not use, modify or distribute
 this program under any other version of the GNU Affero General Public
 License.te


 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU Affero General Public License for more details.


 You should have received a copy of the GNU Affero General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package client.command;


import client.MapleBuffStat;
import client.MapleCharacter;
import client.MapleClient;
import client.MapleJob;
import client.MapleStat;
import client.Skill;
import client.SkillFactory;
import client.inventory.Item;
import client.inventory.MapleInventoryType;
import client.inventory.MaplePet;
import constants.ItemConstants;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import net.server.Server;
import net.server.channel.Channel;
import net.server.world.World;
import provider.MapleData;
import provider.MapleDataProvider;
import provider.MapleDataProviderFactory;
import provider.MapleDataTool;
import scripting.npc.NPCScriptManager;
import server.MapleInventoryManipulator;
import server.MapleItemInformationProvider;
import server.MapleShopFactory;
import server.TimerManager;
import server.events.gm.MapleEvent;
import server.life.MapleLifeFactory;
import server.life.MapleMonster;
import server.life.MapleNPC;
import server.maps.MapleMap;
import server.maps.MapleMapItem;
import server.maps.MapleMapObject;
import server.maps.MapleMapObjectType;
import tools.DatabaseConnection;
import tools.MaplePacketCreator;
import tools.Pair;


public class Commands {


    public static boolean executePlayerCommand(MapleClient c, String[] sub, char heading) {
        MapleCharacter chr = c.getPlayer();
        if (heading == '!' && chr.gmLevel() == 0) {
            chr.yellowMessage("You may not use !" + sub + ", please try /" + sub);
            return false;
        }
        switch (sub[0]) {
            case "dispose":
                NPCScriptManager.getInstance().dispose(c);
                c.announce(MaplePacketCreator.enableActions());
                chr.message("Done.");
                break;
            case "why":
                List<Pair<MapleBuffStat, Integer>> list = new ArrayList<>();
                list.add(new Pair<>(MapleBuffStat.MORPH, 8));
                list.add(new Pair<>(MapleBuffStat.CONFUSE, 1));
                chr.announce(MaplePacketCreator.giveBuff(0, 0, list));
                chr.getMap().broadcastMessage(chr, MaplePacketCreator.giveForeignBuff(chr.getId(), list));
                break;
            case "save":
                if(System.currentTimeMillis() > 60000) {
                chr.saveToDB();
                chr.dropMessage("Saved."); }
                else {
                chr.dropMessage("10min wait."); }
                break;
            case "resetstats":
                chr.resetStats();
                break;
            case "resetexp":
                chr.setExp(0);
                break;
            case "goto":
            case "go":
            case "warp":
                HashMap<String, Integer> maps = new HashMap<String, Integer>();
                    maps.put("henesys", 100000000);
                    maps.put("ellinia", 101000000);
                    maps.put("perion", 102000000);
                    maps.put("kerning", 103000000);
                    maps.put("lith", 104000000);
                    maps.put("sleepywood", 105040300);
                    maps.put("florina", 110000000);
                    maps.put("orbis", 200000000);
                    maps.put("happy", 209000000);
                    maps.put("elnath", 211000000);
            maps.put("ereve", 130000000);
                    maps.put("ludi", 220000000);
                    maps.put("omega", 221000000);
                    maps.put("korean", 222000000);
                    maps.put("aqua", 230000000);
                    maps.put("leafre", 240000000);
                    maps.put("mulung", 250000000);
                    maps.put("herb", 251000000);
                    maps.put("nlc", 600000000);
                    maps.put("shrine", 800000000);
                    maps.put("showa", 801000000);
                    maps.put("fm", 910000000);
                    maps.put("guild", 200000301);
                    maps.put("fog", 105040306);
                    
            if (sub.length != 2) {
                StringBuilder builder = new StringBuilder("Syntax: /go <mapname>");
                int i = 0;
                for (String mapss : maps.keySet()) {
                    if (1 % 10 == 0) {// 10 maps per line
                        chr.dropMessage(builder.toString());
                    } else {
                        builder.append(mapss + ", ");
                    }
                }
                chr.dropMessage(builder.toString());
                } else if (maps.containsKey(sub[1])) {
                    int map = maps.get(sub[1]);
                    if (map == 910000000) {
                        chr.saveLocation("FREE_MARKET");
                    }
                        chr.changeMap(map);
                } else {
                        chr.dropMessage("========================================================================");
                        chr.dropMessage("                  ..::| Go Map Selections |::..                 ");
                        chr.dropMessage("========================================================================");
                        chr.dropMessage("| henesys | ellinia | perion | kerning | lith   | sleepywood | florina |");
                        chr.dropMessage("| fog     | orbis   | happy  | elnath  | ereve  | ludi       | omega   |");
                        chr.dropMessage("| korean  | aqua    | leafre | mulung  | herb   | nlc        | shrine  |");
                        chr.dropMessage("| showa   | fm      | guild  |");
                    }
                maps.clear();
                break;
            case "commands":
                chr.dropMessage("/dispose");
                chr.dropMessage("/save");
                chr.dropMessage("/go or /goto or /warp");
                chr.dropMessage("/resetstats");
                chr.dropMessage("/resetexp");
                break;
            default:
                if (chr.gmLevel() == 0) {
                    chr.yellowMessage("Player Command " + heading + sub[0] + " does not exist. Use /commands");
                }
                return false;
        }
        return true;
}


    public static boolean executeGMCommand(MapleClient c, String[] sub, char heading) {
        MapleCharacter player = c.getPlayer();
        Channel cserv = c.getChannelServer();
        Server srv = Server.getInstance();
        MapleCharacter cvictim = cserv.getPlayerStorage().getCharacterByName(sub[1]);
        switch (sub[0]) {
            case "apall":
                player.setRemainingAp(Integer.parseInt(sub[1]));
            case "buffme":
                final int[] array = {9001000, 9101002, 9101003, 9101008, 2001002, 1101007, 1005, 2301003, 5121009, 1111002, 4111001, 4111002, 4211003, 4211005, 1321000, 2321004, 3121002};
                for (int i : array) {
                    SkillFactory.getSkill(i).getEffect(SkillFactory.getSkill(i).getMaxLevel()).applyTo(player);
                }
            case "spawn":
                MapleMonster monsterid = MapleLifeFactory.getMonster(Integer.parseInt(sub[1]));
                if (monsterid == null) {
                    return true;
                }
                if (sub.length > 2) {
                    for (int i = 0; i < Integer.parseInt(sub[2]); i++) {
                        player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(Integer.parseInt(sub[1])), player.getPosition());
                    }
                } else {
                    player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(Integer.parseInt(sub[1])), player.getPosition());
                }
            case "clear":
                player.getMap().clearDrops(player);
            case "gmchat":
                String message = joinStringFrom(sub, 1);
                Server.getInstance().gmChat(player.getName() + " : " + message, null);
            case "dc":
                MapleCharacter victim = c.getWorldServer().getPlayerStorage().getCharacterByName(sub[1]);
                if (victim == null) {
                    victim = cvictim;
                if (victim == null) {
                    victim = player.getMap().getCharacterByName(sub[1]);
                    if (victim != null) {
                        try {//sometimes bugged because the map = null
                            victim.getClient().getSession().close();
                            player.getMap().removePlayer(victim);
                        } catch (Exception e) {
                        }
                    } else {


                        return true;
                    }
                }
                }
                if (player.gmLevel() < victim.gmLevel()) {
                    victim = player;
                }
                    victim.getClient().disconnect(false, false);
            case "exprate":
                c.getWorldServer().setExpRate(Integer.parseInt(sub[1]));
                for (MapleCharacter mc : c.getWorldServer().getPlayerStorage().getAllCharacters()) {
                    mc.setRates();
                }
            case "fame":


                cvictim.setFame(Integer.parseInt(sub[2]));
                cvictim.updateSingleStat(MapleStat.FAME, cvictim.getFame());
            case "giftnx":
                cvictim.getCashShop().gainCash(1, Integer.parseInt(sub[2]));
                player.message("Done");
            case "gmshop":
                MapleShopFactory.getInstance().getShop(1337).sendShop(c);
            case "heal":
                player.setHpMp(30000);
            case "id":
                try {
                    try (BufferedReader dis = new BufferedReader(new InputStreamReader(new URL("http://www.mapletip.com/search_java.php?search_value=" + sub[1] + "&check=true").openConnection().getInputStream()))) {
                        String s;
                        while ((s = dis.readLine()) != null) {
                            player.dropMessage(s);
                        }
                    }
                } catch (Exception e) {
                }
            case "item":
            case "drop":
                int itemId = Integer.parseInt(sub[1]);
                short quantity = 1;
                try {
                    quantity = Short.parseShort(sub[2]);
                } catch (Exception e) {
                }
                if (sub[0].equals("item")) {
                    int petid = -1;
                if (ItemConstants.isPet(itemId)) {
                    petid = MaplePet.createPet(itemId);
                }
                MapleInventoryManipulator.addById(c, itemId, quantity, player.getName(), petid, -1);
                } else {
                    Item toDrop;
                if (MapleItemInformationProvider.getInstance().getInventoryType(itemId) == MapleInventoryType.EQUIP) {
                    toDrop = MapleItemInformationProvider.getInstance().getEquipById(itemId);
                } else {
                    toDrop = new Item(itemId, (byte) 0, quantity);
                }
                c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), toDrop, c.getPlayer().getPosition(), true, true);
                }
            case "job":
                player.changeJob(MapleJob.getById(Integer.parseInt(sub[1])));
                player.equipChanged();
            case "kill":
                if (sub.length >= 2) {
                    cvictim.setHpMp(0);
                }
            case "killall":
                List<MapleMapObject> monsters = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER));
                MapleMap map = player.getMap();
                for (MapleMapObject monstermo : monsters) {
                    MapleMonster monster = (MapleMonster) monstermo;
                    map.killMonster(monster, player, true);
                    monster.giveExpToCharacter(player, monster.getExp() * c.getPlayer().getExpRate(), true, 1);
                }
                player.dropMessage("Killed " + monsters.size() + " monsters.");
            case "monsterdebug":
                List<MapleMapObject> monsterz = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER));
                for (MapleMapObject monstermo : monsterz) {
                    MapleMonster monster = (MapleMonster) monstermo;
                    player.message("Monster ID: " + monster.getId());
                }
            case "unbug":
                c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.enableActions());
            case "level":
                player.setLevel(Integer.parseInt(sub[1]));
                player.gainExp(-player.getExp(), false, false);
                player.updateSingleStat(MapleStat.LEVEL, player.getLevel());
            case "levelperson":
                cvictim.setLevel(Integer.parseInt(sub[2]));
                cvictim.gainExp(-cvictim.getExp(), false, false);
                cvictim.updateSingleStat(MapleStat.LEVEL, cvictim.getLevel());
            case "levelpro":
                while (player.getLevel() <= 249) {
                    player.levelUp(false);
                }
            case "levelup":
                player.levelUp(false);
            case "maxstat":
                final String[] s = {"setall", String.valueOf(Short.MAX_VALUE)};
                executeGMCommand(c, s, heading);
                player.setLevel(255);
                player.setFame(13337);
                player.setMaxHp(30000);
                player.setMaxMp(30000);
                player.updateSingleStat(MapleStat.LEVEL, 255);
                player.updateSingleStat(MapleStat.FAME, 13337);
                player.updateSingleStat(MapleStat.MAXHP, 30000);
                player.updateSingleStat(MapleStat.MAXMP, 30000);
            case "maxskills":
                for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
                    try {
                        Skill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
                        player.changeSkillLevel(skill, (byte) skill.getMaxLevel(), skill.getMaxLevel(), -1);
                    } catch (NumberFormatException nfe) {
                        break;
                    } catch (NullPointerException npe) {
                        continue;
                    }
                }
            case "mesoperson":
                cvictim.gainMeso(Integer.parseInt(sub[2]), true);
            case "mesos":
                player.gainMeso(Integer.parseInt(sub[1]), true);
            case "notice":
                Server.getInstance().broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(6, "[Notice] " + joinStringFrom(sub, 1)));
            case "openportal":
                player.getMap().getPortal(sub[1]).setPortalState(true);
            case "closeportal":
                player.getMap().getPortal(sub[1]).setPortalState(false);
            case "startevent":
                for (MapleCharacter chr : player.getMap().getCharacters()) {
                    player.getMap().startEvent(chr);
                }
                c.getChannelServer().setEvent(null);
            case "scheduleevent":
                if (c.getPlayer().getMap().hasEventNPC()) {
                    switch (sub[1]) {
                        case "treasure":
                            c.getChannelServer().setEvent(new MapleEvent(109010000, 50));
                            break;
                        case "ox":
                            c.getChannelServer().setEvent(new MapleEvent(109020001, 50));
                            srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                            break;
                         case "ola":
                            c.getChannelServer().setEvent(new MapleEvent(109030101, 50)); // Wrong map but still Ola Ola
                            srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                            break;
                        case "fitness":
                            c.getChannelServer().setEvent(new MapleEvent(109040000, 50));
                            srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                            break;
                        case "snowball":
                            c.getChannelServer().setEvent(new MapleEvent(109060001, 50));
                            srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                            break;
                        case "coconut":
                            c.getChannelServer().setEvent(new MapleEvent(109080000, 50));
                            srv.broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(0, "Hello Scania let's play an event in " + player.getMap().getMapName() + " CH " + c.getChannel() + "! " + player.getMap().getEventNPC()));
                            break;
                        default:
                            player.message("Wrong Syntax: /scheduleevent treasure, ox, ola, fitness, snowball or coconut");
                            break;
                    }
                } else {
                    player.message("You can only use this command in the following maps: 60000, 104000000, 200000000, 220000000");
                }


            case "online":
                for (Channel ch : srv.getChannelsFromWorld(player.getWorld())) {
                    String os = "Characters online (Channel " + ch.getId() + " Online: " + ch.getPlayerStorage().getAllCharacters().size() + ") : ";
                    if (ch.getPlayerStorage().getAllCharacters().size() < 50) {
                        for (MapleCharacter chr : ch.getPlayerStorage().getAllCharacters()) {
                            os += MapleCharacter.makeMapleReadable(chr.getName()) + ", ";
                        }
                        player.dropMessage(os.substring(0, os.length() - 2));
                    }
                }
            case "pap":
                player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8500001), player.getPosition());
            case "pianus":
                player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8510000), player.getPosition());
            case "search":
                StringBuilder sb = new StringBuilder();
                if (sub.length > 2) {
                    String search = joinStringFrom(sub, 2);
                    long start = System.currentTimeMillis();//for the lulz
                    MapleData data = null;
                    MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File("wz/String.wz"));
                    if (!sub[1].equalsIgnoreCase("ITEM")) {
                        if (sub[1].equalsIgnoreCase("NPC")) {
                            data = dataProvider.getData("Npc.img");
                        } else if (sub[1].equalsIgnoreCase("MOB") || sub[1].equalsIgnoreCase("MONSTER")) {
                            data = dataProvider.getData("Mob.img");
                        } else if (sub[1].equalsIgnoreCase("SKILL")) {
                            data = dataProvider.getData("Skill.img");
                        } else if (sub[1].equalsIgnoreCase("MAP")) {
                            sb.append("#bUse the '/m' command to find a map. If it finds a map with the same name, it will warp you to it.");
                        } else {
                            sb.append("#bInvalid search.\r\nSyntax: '/search [type] [name]', where [type] is NPC, ITEM, MOB, or SKILL.");
                        }
                        if (data != null) {
                            String name;
                            for (MapleData searchData : data.getChildren()) {
                                name = MapleDataTool.getString(searchData.getChildByPath("name"), "NO-NAME");
                                if (name.toLowerCase().contains(search.toLowerCase())) {
                                sb.append("#b").append(Integer.parseInt(searchData.getName())).append("#k - #r").append(name).append("\r\n");
                                }
                            }
                        }
                    } else {
                        for (Pair<Integer, String> itemPair : MapleItemInformationProvider.getInstance().getAllItems()) {
                            if (sb.length() < 32654) {//ohlol
                                if (itemPair.getRight().toLowerCase().contains(search.toLowerCase())) {
                                    //#v").append(id).append("# #k- 
                                    sb.append("#b").append(itemPair.getLeft()).append("#k - #r").append(itemPair.getRight()).append("\r\n");
                                }
                            } else {
                                sb.append("#bCouldn't load all items, there are too many results.\r\n");
                                break;
                            }
                        }
                    }
                    if (sb.length() == 0) {
                        sb.append("#bNo ").append(sub[1].toLowerCase()).append("s found.\r\n");
                    }
                    sb.append("\r\n#kLoaded within ").append((double) (System.currentTimeMillis() - start) / 1000).append(" seconds.");//because I can, and it's free
                } else {
                    sb.append("#bInvalid search.\r\nSyntax: '/search [type] [name]', where [type] is NPC, ITEM, MOB, or SKILL.");
                }
                c.announce(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, sb.toString(), "00 00", (byte) 0));
            case "servermessage":
                c.getWorldServer().setServerMessage(joinStringFrom(sub, 1));
            case "warpsnowball":
                for (MapleCharacter chr : player.getMap().getCharacters()) {
                    chr.changeMap(109060000, chr.getTeam());
                }
            case "setall":
                final int x = Short.parseShort(sub[1]);
                player.setStr(x);
                player.setDex(x);
                player.setInt(x);
                player.setLuk(x);
                player.updateSingleStat(MapleStat.STR, x);
                player.updateSingleStat(MapleStat.DEX, x);
                player.updateSingleStat(MapleStat.INT, x);
                player.updateSingleStat(MapleStat.LUK, x);
            case "sp":
                player.setRemainingSp(Integer.parseInt(sub[1]));
                player.updateSingleStat(MapleStat.AVAILABLESP, player.getRemainingSp());
            case "command":
                player.dropMessage("@apall");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/727615.html"]buffme[/URL][/B][/I]");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/2000166965.html"]Spawn[/URL][/B][/I]");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/1333429346.html"]Clear[/URL][/B][/I]");
                player.dropMessage("@dc");
                player.dropMessage("@exprate");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/1333384735.html"]Fame[/URL][/B][/I]");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/734115.html"]Gift[/URL][/B][/I]nx");
                player.dropMessage("@gmshop");
                player.dropMessage("@heal");
                player.dropMessage("@item");
                player.dropMessage("@job");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/39035.html"]kill[/URL][/B][/I]");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/501318.html"]killall[/URL][/B][/I]");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/501312.html"]level[/URL][/B][/I]");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/501312.html"]level[/URL][/B][/I]person");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/501312.html"]level[/URL][/B][/I]up");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/693815.html"]maxs[/URL][/B][/I]tat");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/693815.html"]maxs[/URL][/B][/I]kills");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/2000153219.html"]meso[/URL][/B][/I]person amount");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/2000153219.html"]meso[/URL][/B][/I]s amount");
                player.dropMessage("@notice");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/2000107803.html"]ope[/URL][/B][/I]nportal");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/843703.html"]Clo[/URL][/B][/I]seportal");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/829527.html"]Start[/URL][/B][/I]event");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/515508.html"]Sch[/URL][/B][/I]eduleevent event");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/27501.html"]OnLine[/URL][/B][/I]");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/412249.html"]Server[/URL][/B][/I]message");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/1333350597.html"]Set[/URL][/B][/I]all amount");
                player.dropMessage("@sp amount");
                player.dropMessage("@unban accountid");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/433969.html"]Pap[/URL][/B][/I]");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/1333407204.html"]pianus[/URL][/B][/I]");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/318766.html"]war[/URL][/B][/I]psnowball");
                player.dropMessage("@unbug");
                player.dropMessage( @[I][B][URL="https://forum.ragezone.com/members/111754.html"]search[/URL][/B][/I]");
             case "unban":
                try {
                    try (PreparedStatement p = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET banned = -1 WHERE id = " + MapleCharacter.getIdByName(sub[1]))) {
                        p.executeUpdate();
                    }
                } catch (Exception e) {
                    player.message("Failed to unban " + sub[1]);
                    return true;
                }
                player.message("Unbanned " + sub[1]);
                default:
                    player.yellowMessage("GM Command " + heading + sub[0] + " does not exist. Use @[I][B][URL="https://forum.ragezone.com/members/2000161204.html"]comman[/URL][/B][/I]d");
                    return false;
            }
}
    public static void executeAdminCommand(MapleClient c, String[] sub, char heading) {
        MapleCharacter player = c.getPlayer();
        switch (sub[0]) {
            case "horntail":
                player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8810026), player.getPosition());
                break;
            case "packet":
                player.getMap().broadcastMessage(MaplePacketCreator.customPacket(joinStringFrom(sub, 1)));
                break;
            case "warpworld":
                Server server = Server.getInstance();
                byte worldb = Byte.parseByte(sub[1]);
                if (worldb <= (server.getWorlds().size() - 1)) {
                    try {
                        String[] socket = server.getIP(worldb, c.getChannel()).split(":");
                        c.getWorldServer().removePlayer(player);
                        player.getMap().removePlayer(player);//LOL FORGOT THIS ><                    
                        c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION);
                        player.setWorld(worldb);
                        player.saveToDB();//To set the new world :O (true because else 2 player instances are created, one in both worlds)
                        c.announce(MaplePacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1])));
                    } catch (UnknownHostException | NumberFormatException ex) {
                        player.message("Error when trying to change worlds, are you sure the world you are trying to warp to has the same amount of channels?");
                    }


                } else {
                    player.message("Invalid world; highest number available: " + (server.getWorlds().size() - 1));
                }
                break;
            case "saveall"://fyi this is a stupid command
                for (World world : Server.getInstance().getWorlds()) {
                    for (MapleCharacter chr : world.getPlayerStorage().getAllCharacters()) {
                        chr.saveToDB();
                    }
                }
                break;
                case "pmob":
            int mobId = Integer.parseInt(sub[1]);
            int mobTime = Integer.parseInt(sub[2]);
            int xpos2 = player.getPosition().x;
            int ypos2 = player.getPosition().y;
            int fh2 = player.getMap().getFootholds().findBelow(player.getPosition()).getId();
            if (sub[2] == null) {
                mobTime = 0;
            }
            MapleMonster mob = MapleLifeFactory.getMonster(mobId);
            if (mob != null && !mob.getName().equals("MISSINGNO")) {
                mob.setPosition(player.getPosition());
                mob.setCy(ypos2);
                mob.setRx0(xpos2 + 50);
                mob.setRx1(xpos2 - 50);
                mob.setFh(fh2);
                try {
                    Connection con = DatabaseConnection.getConnection();
                    PreparedStatement ps = con.prepareStatement("INSERT INTO spawns ( idd, f, fh2, cy, rx0, rx1, type, x, y, mid, mobtime ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )");
                    ps.setInt(1, mobId);
                    ps.setInt(2, 0);
                    ps.setInt(3, fh2);
                    ps.setInt(4, ypos2);
                    ps.setInt(5, xpos2 + 50);
                    ps.setInt(6, xpos2 - 50);
                    ps.setString(7, "m");
                    ps.setInt(8, xpos2);
                    ps.setInt(9, ypos2);
                    ps.setInt(10, player.getMapId());
                    ps.setInt(11, mobTime);
                    ps.executeUpdate();
                } catch (SQLException e) {
                    player.dropMessage("Failed to save MOB to the database");
                }
                player.getMap().addMonsterSpawn(mob, mobTime, 0);
            } else {
                player.dropMessage("You have entered an invalid Mob-Id");
            }
                break;
            case "npc":
                if (sub.length < 1) {
                    break;
                }
                MapleNPC npc = MapleLifeFactory.getNPC(Integer.parseInt(sub[1]));
                if (npc != null) {
                    npc.setPosition(player.getPosition());
                    npc.setCy(player.getPosition().y);
                    npc.setRx0(player.getPosition().x + 50);
                    npc.setRx1(player.getPosition().x - 50);
                    npc.setFh(player.getMap().getFootholds().findBelow(c.getPlayer().getPosition()).getId());
                    player.getMap().addMapObject(npc);
                    player.getMap().broadcastMessage(MaplePacketCreator.spawnNPC(npc));
                }
                break;
            case "pnpc":
            int pnpcId = Integer.parseInt(sub[1]);
            MapleNPC pnpc = MapleLifeFactory.getNPC(pnpcId);
            int xpos = player.getPosition().x;
            int ypos = player.getPosition().y;
            int fh = player.getMap().getFootholds().findBelow(player.getPosition()).getId();
            if (pnpc != null && !pnpc.getName().equalsIgnoreCase("MISSINGNO")) {
                pnpc.setPosition(player.getPosition());
                pnpc.setCy(ypos);
                pnpc.setRx0(xpos + 50);
                pnpc.setRx1(xpos - 50);
                pnpc.setFh(fh);
                try {
                    Connection con = DatabaseConnection.getConnection();
                    PreparedStatement ps = con.prepareStatement("INSERT INTO spawns ( idd, f, fh, cy, rx0, rx1, type, x, y, mid ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )");
                    ps.setInt(1, pnpcId);
                    ps.setInt(2, 0);
                    ps.setInt(3, fh);
                    ps.setInt(4, ypos);
                    ps.setInt(5, xpos + 50);
                    ps.setInt(6, xpos - 50);
                    ps.setString(7, "n");
                    ps.setInt(8, xpos);
                    ps.setInt(9, ypos);
                    ps.setInt(10, player.getMapId());
                    ps.executeUpdate();
                } catch (SQLException e) {
                    player.dropMessage("Failed to save NPC to the database");
                }
                player.getMap().addMapObject(pnpc);
                player.getMap().broadcastMessage(MaplePacketCreator.spawnNPC(pnpc));
            } else {
                player.dropMessage("You have entered an invalid Npc-Id");
            }
        break;
            case "jobperson": {
                MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]);
                victim.changeJob(MapleJob.getById(Integer.parseInt(sub[2])));
                player.equipChanged();
                break;
            }
            case "pinkbean":
                player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8820009), player.getPosition());
                break;
            case "playernpc":
                player.playerNPC(c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]), Integer.parseInt(sub[2]));
                break;
            case "setgmlevel": {
                MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]);
                victim.setGM(Integer.parseInt(sub[2]));
                player.message("Done.");
                victim.getClient().disconnect(false, false);
                break;
            }
            case "shutdown":
            case "shutdownnow":
                Server.getInstance().broadcastMessage(player.getWorld(), MaplePacketCreator.serverNotice(6, "[Notice] Server is shutting down.. "
                        + "Please logoff for account safety."));                
                int time = 60000;
                if (sub[0].equals("shutdownnow")) {
                    time = 1;
                } else if (sub.length > 1) {
                    time *= Integer.parseInt(sub[1]);
                }
                TimerManager.getInstance().schedule(Server.getInstance().shutdown(false), time);
                break;
            case "sql": {
                final String query = Commands.joinStringFrom(sub, 1);
                try {
                    try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement(query)) {
                        ps.executeUpdate();
                    }
                    player.message("Done " + query);
                } catch (SQLException e) {
                    player.message("Query Failed: " + query);
                }
                break;
            }
            case "sqlwithresult": {
                String name = sub[1];
                final String query = Commands.joinStringFrom(sub, 2);
                try {
                    try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement(query); ResultSet rs = ps.executeQuery()) {
                        while (rs.next()) {
                            player.dropMessage(String.valueOf(rs.getObject(name)));
                        }
                    }
                } catch (SQLException e) {
                    player.message("Query Failed: " + query);
                }
                break;
            }
            case "itemvac":
                List<MapleMapObject> items = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM));
                for (MapleMapObject item : items) {
                    MapleMapItem mapitem = (MapleMapItem) item;
                    if (!MapleInventoryManipulator.addFromDrop(c, mapitem.getItem(), true)) {
                        continue;
                    }
                    mapitem.setPickedUp(true);
                    player.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 2, player.getId()), mapitem.getPosition());
                    player.getMap().removeMapObject(item);


                }
                break;
            case "zakum":
                player.getMap().spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(8800000), player.getPosition());
                for (int x = 8800003; x < 8800011; x++) {
                    player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(x), player.getPosition());
                }
                break;
            case "ahelp":
            case "comm":
                player.dropMessage("!saveall");
                player.dropMessage("!pmob mobid time");
                player.dropMessage("!npc npcid");
                player.dropMessage("!pnpc npcid");
                player.dropMessage("!jobperson");
                player.dropMessage("!playernpc charname npcid");
                player.dropMessage("!setgmlevel charname level");
                player.dropMessage("!shutdown time or !shutdownnow");
                player.dropMessage("!sql statement");
                player.dropMessage("!sqlwithresult name statement");
                player.dropMessage("!zakum");
                player.dropMessage("!horntail");
                player.dropMessage("!pinkbean");
                player.dropMessage("!packet");
                player.dropMessage("!itemvac");
                player.dropMessage("!warpworld");
                break;
            default:
                player.yellowMessage("Admin Command " + heading + sub[0] + " does not exist. Use !comm or !ahelp");
                break;
        }
    }
    private static String joinStringFrom(String arr[], int start) {
        StringBuilder builder = new StringBuilder();
        for (int i = start; i < arr.length; i++) {
            builder.append(arr[i]);
            if (i != arr.length - 1) {
                builder.append(" ");
            }
        }
        return builder.toString();
    }
}
Player Commands: "/" help
dispose
save
go or goto or warp
resetstats
resetexp
GM Commands: "@" command
apall
buffme
spawn
clear
dc
exprate
fame
giftnx
gmshop
heal
item
job
kill
killall
level
levelperson
levelup
maxstat
maxskills
mesoperson amount
mesos amount
notice
openportal
closeportal
startevent
scheduleevent event
online
servermessage
setall amount
sp amount
unban accountid
pap
pianus
warpsnowball
unbug
search
Admin Commands: "!" ahelp or comm
saveall
pmob mobid time
npc npcid
pnpc npcid
jobperson
playernpc charname npcid
setgmlevel charname level
shutdown time or shutdownnow
sql statement
sqlwithresult name statement
zakum
horntail
pinkbean
packet
itemvac
warpworld
cool thanks ill add this in. Although i have other problems with MoopleDEV that i havent seen in any other source. The pictures are all distorted and stretched out and you cant make out what they are or say.
 
Upvote 0
not a programmer
Joined
Mar 30, 2015
Messages
532
Reaction score
62
Maybe your xml wz or maple is corrupt?
Or uninstall and reinstall Java and copy the two jce files over again.
 
Upvote 0
Initiate Mage
Joined
Apr 3, 2015
Messages
46
Reaction score
0
i have reinstalled java and placed the jce files 3 times already and i have redownloaded the wv xmls along with a clean version and they still look all blurry and shiz
 
Upvote 0
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
i have reinstalled java and placed the jce files 3 times already and i have redownloaded the wv xmls along with a clean version and they still look all blurry and shiz

Mind sending a screenshot? Blurry images are either corrupted WZ files, or your computer's screen resolution.

Another possibility is that your System Settings within MapleStory have the resolution at the minimum, rather than at the maximum. If you're sure it's not your WZ's and computer, then while in-game press ESC->System Settings and the very top option for the quality of the game change the scroller all the way to the right.
 
Upvote 0
Back
Top