MSI NPC Error. This NPC has Stopped working.

Results 1 to 4 of 4
  1. #1
    Enthusiast MonoicEcho is offline
    MemberRank
    Jul 2013 Join Date
    MYLocation
    30Posts

    ! MSI NPC Error. This NPC has Stopped working.

    Hey! I've Encountered some issues with MSI NPC! Can anyone help me? The error I got is this..

    Code:
    java.lang.reflect.UndeclaredThrowableException        at com.sun.proxy.$Proxy3.action(Unknown Source)
            at scripting.npc.NPCScriptManager.action(NPCScriptManager.java:90)
            at net.channel.handler.NPCMoreTalkHandler.handlePacket(NPCMoreTalkHandle
    r.java:73)
            at net.MapleServerHandler.messageReceived(MapleServerHandler.java:120)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.mess
    ageReceived(DefaultIoFilterChain.java:734)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
    Received(DefaultIoFilterChain.java:429)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(Def
    aultIoFilterChain.java:51)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.mes
    sageReceived(DefaultIoFilterChain.java:812)
            at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutpu
    tImpl.flush(ProtocolCodecFilter.java:346)
            at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Prot
    ocolCodecFilter.java:221)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
    Received(DefaultIoFilterChain.java:429)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(Def
    aultIoFilterChain.java:51)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.mes
    sageReceived(DefaultIoFilterChain.java:812)
            at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFi
    lterAdapter.java:119)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
    Received(DefaultIoFilterChain.java:429)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageRece
    ived(DefaultIoFilterChain.java:416)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(Abstract
    PollingIoProcessor.java:638)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(Abstr
    actPollingIoProcessor.java:598)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(Abstr
    actPollingIoProcessor.java:587)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(Ab
    stractPollingIoProcessor.java:61)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run
    (AbstractPollingIoProcessor.java:969)
            at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl
    e.java:64)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
    Caused by: java.security.PrivilegedActionException: javax.script.ScriptException
    : sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function
     getC in object scripting.npc.NPCConversationManager@1dc99365. (<Unknown source>
    #35) in <Unknown source> at line number 35
            at java.security.AccessController.doPrivileged(Native Method)
            at com.sun.script.util.InterfaceImplementor$InterfaceImplementorInvocati
    onHandler.invoke(Unknown Source)
            ... 25 more
    Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.Ecm
    aError: TypeError: Cannot find function getC in object scripting.npc.NPCConversa
    tionManager@1dc99365. (<Unknown source>#35) in <Unknown source> at line number 3
    5
            at com.sun.script.javascript.RhinoScriptEngine.invoke(Unknown Source)
            at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(Unknown So
    urce)
            at com.sun.script.util.InterfaceImplementor$InterfaceImplementorInvocati
    onHandler$1.run(Unknown Source)
            ... 27 more
    Caused by: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find
     function getC in object scripting.npc.NPCConversationManager@1dc99365. (<Unknow
    n source>#35)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(Unkn
    own Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(Unkn
    own Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.typeError(Unknown S
    ource)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.typeError2(Unknown
    Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.notFunctionError(Un
    known Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.getPropFunctionAndT
    hisHelper(Unknown Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.getPropFunctionAndT
    his(Unknown Source)
            at sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Unknown
     Source)
            at sun.org.mozilla.javascript.internal.Interpreter.interpret(Unknown Sou
    rce)
            at sun.org.mozilla.javascript.internal.InterpretedFunction.call(Unknown
    Source)
            at sun.org.mozilla.javascript.internal.ContextFactory.doTopCall(Unknown
    Source)
            at com.sun.script.javascript.RhinoScriptEngine$1.superDoTopCall(Unknown
    Source)
            at com.sun.script.javascript.RhinoScriptEngine$1.doTopCall(Unknown Sourc
    e)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.doTopCall(Unknown S
    ource)
            at sun.org.mozilla.javascript.internal.InterpretedFunction.call(Unknown
    Source)
            ... 30 more
    Error: NPC 9901200. UndeclaredThrowableException.

    This is the NPC Conversion Manager
    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 prgogram 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.
    
    
    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 scripting.npc;
    
    
    import client.Equip;
    import client.IItem;
    import client.ISkill;
    import client.Item;
    import client.ItemFactory;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import constants.ExpTable;
    import client.MapleCharacter;
    import client.MapleClient;
    import client.MapleInventory;
    import client.MapleInventoryType;
    import client.MapleJob;
    import client.MapleOccupations;
    import client.MaplePet;
    import client.MapleQuestStatus;
    import client.MapleSkinColor;
    import client.MapleStat;
    import client.SkillFactory;
    import java.awt.Point;
    import tools.Randomizer;
    import java.io.File;
    import java.rmi.RemoteException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.LinkedList;
    import java.util.List;
    import net.channel.ChannelServer;
    import net.world.MapleParty;
    import net.world.MaplePartyCharacter;
    import tools.DatabaseConnection;
    import net.world.guild.MapleAlliance;
    import net.world.guild.MapleGuild;
    import net.world.remote.WorldChannelInterface;
    import provider.MapleData;
    import provider.MapleDataProviderFactory;
    import scripting.AbstractPlayerInteraction;
    import scripting.event.EventManager;
    import server.MapleInventoryManipulator;
    import server.MapleItemInformationProvider;
    import server.MapleShopFactory;
    import server.MapleSquad;
    import server.MapleSquadType;
    import server.MapleStatEffect;
    import server.life.MapleLifeFactory;
    import server.life.MapleMonster;
    import server.life.MapleMonsterStats;
    import server.maps.MapleMap;
    import server.maps.MapleMapObject;
    import server.maps.MapleMapObjectType;
    import server.quest.MapleQuest;
    import tools.MaplePacketCreator;
    import tools.Pair;
    
    
    /**
     *
     * @author Matze
     */
    public class NPCConversationManager extends AbstractPlayerInteraction {
    
    
        private int npc;
        private String getText;
    
    
        public NPCConversationManager(MapleClient c, int npc) {
            super(c);
            this.npc = npc;
        }
    
    
        public int getNpc() {
            return npc;
        }
    
    
                                    public void clearDrops() {
                    MapleMap map = getPlayer().getMap();
                List<MapleMapObject> items = map.getMapObjectsInRange(getPlayer().getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM));
                for (MapleMapObject i : items) {
                    map.removeMapObject(i);
                    map.broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, getPlayer().getId()));
            }
        }
    
    
            public void killAllMonsters() {
            MapleMap map = getPlayer().getMap();
            map.killAllMonsters(false); // No drop.
        }
    
    
                                public void summonMobAtPosition(int mobid, int amount, int posx, int posy) {
            if (amount <= 1) {
                MapleMonster npcmob = MapleLifeFactory.getMonster(mobid);
                npcmob.setHp(npcmob.getMaxHp());
                getPlayer().getMap().spawnMonsterOnGroudBelow(npcmob, new Point(posx, posy));
            } else {
                for (int i = 0; i < amount; i++) {
                    MapleMonster npcmob = MapleLifeFactory.getMonster(mobid);
                    npcmob.setHp(npcmob.getMaxHp());
                    getPlayer().getMap().spawnMonsterOnGroudBelow(npcmob, new Point(posx, posy));
                }
            }
        }
    
    
                                                                                public void spawnMob(int mapid, int mid, int xpos, int ypos) {
            getClient().getChannelServer().getMapFactory().getMap(mapid).spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(mid), new Point(xpos, ypos));
        }
                public void summonMob(int mobid, int customHP, int customEXP, int amount) {
            spawnMonster(mobid, customHP, -1, -1, customEXP, 0, 0, amount, getPlayer().getPosition().x, getPlayer().getPosition().y);
        }
                    public void spawnMonster(int mobid, int HP, int MP, int level, int EXP, int boss, int undead, int amount, int x, int y) {
            MapleMonsterStats newStats = new MapleMonsterStats();
            if (HP >= 0) {
                newStats.setHp(HP);
            }
            if (MP >= 0) {
                newStats.setMp(MP);
            }
            if (level >= 0) {
                newStats.setLevel(level);
            }
            if (EXP >= 0) {
                newStats.setExp(EXP);
            }
            newStats.setBoss(boss == 1);
            newStats.setUndead(undead == 1);
            for (int i = 0; i < amount; i++) {
                MapleMonster npcmob = MapleLifeFactory.getMonster(mobid);
                npcmob.setOverrideStats(newStats);
                npcmob.setHp(npcmob.getMaxHp());
                npcmob.setMp(npcmob.getMaxMp());
                getPlayer().getMap().spawnMonsterOnGroundBelow(npcmob, new Point(x, y));
            }
        }
    
    
        public void dispose() {
            NPCScriptManager.getInstance().dispose(this);
        }
    
    
        public void sendNext(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01"));
        }
    
    
        public void sendPrev(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00"));
        }
    
    
        public void sendNextPrev(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01"));
        }
    
    
        public void sendOk(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00"));
        }
    
    
        public void sendYesNo(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 1, text, ""));
        }
    
    
        public void resetState() {
            getPlayer().setState(0);
        }
    
    
        public void sendAcceptDecline(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0x0C, text, ""));
        }
    
    
                public void openShop(int id) {
            MapleShopFactory.getInstance().getShop(id).sendShop(getClient());
        }
    
    
        public void sendSimple(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 4, text, ""));
        }
    
    
        public void teachSkill(int id, int level, int masterlevel) {
            getPlayer().changeSkillLevel(SkillFactory.getSkill(id), level, masterlevel);
        }
    
    
        public void sendStyle(String text, int styles[]) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalkStyle(npc, text, styles));
        }
    
    
        public void sendGetNumber(String text, int def, int min, int max) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalkNum(npc, text, def, min, max));
        }
    
    
        public void sendGetText(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalkText(npc, text));
        }
    
    
        public void setGetText(String text) {
            this.getText = text;
        }
    
    
        public List<Pair<Integer, IItem>> getStoredMerchantItems() {
            Connection con = DatabaseConnection.getConnection();
            List<Pair<Integer, IItem>> items = new ArrayList<Pair<Integer, IItem>>();
            try {
                PreparedStatement ps = con.prepareStatement("SELECT * FROM hiredmerchant WHERE ownerid = ? AND onSale = false");
                ps.setInt(1, getPlayer().getId());
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    if (rs.getInt("type") == 1) {
                        Equip eq = new Equip(rs.getInt("itemid"), (byte) 0, -1);
                        eq.setUpgradeSlots((byte) rs.getInt("upgradeslots"));
                        eq.setLevel((byte) rs.getInt("level"));
                        eq.setStr((short) rs.getInt("str"));
                        eq.setDex((short) rs.getInt("dex"));
                        eq.setInt((short) rs.getInt("int"));
                        eq.setLuk((short) rs.getInt("luk"));
                        eq.setHp((short) rs.getInt("hp"));
                        eq.setMp((short) rs.getInt("mp"));
                        eq.setWatk((short) rs.getInt("watk"));
                        eq.setMatk((short) rs.getInt("matk"));
                        eq.setWdef((short) rs.getInt("wdef"));
                        eq.setMdef((short) rs.getInt("mdef"));
                        eq.setAcc((short) rs.getInt("acc"));
                        eq.setAvoid((short) rs.getInt("avoid"));
                        eq.setHands((short) rs.getInt("hands"));
                        eq.setSpeed((short) rs.getInt("speed"));
                        eq.setJump((short) rs.getInt("jump"));
                        eq.setOwner(rs.getString("owner"));
                        items.add(new Pair<Integer, IItem>(rs.getInt("id"), eq));
                    } else if (rs.getInt("type") == 2) {
                        Item newItem = new Item(rs.getInt("itemid"), (byte) 0, (short) rs.getInt("quantity"));
                        newItem.setOwner(rs.getString("owner"));
                        items.add(new Pair<Integer, IItem>(rs.getInt("id"), newItem));
                    }
                }
                ps.close();
                rs.close();
            } catch (SQLException se) {
                se.printStackTrace();
                return null;
            }
            return items;
        }
    
    
            public void removeHiredMerchantItem(int id) {
            try {
                List<Pair<IItem, MapleInventoryType>> workingList = getHiredMerchantItems();
                for (Pair<IItem, MapleInventoryType> p : workingList) {
                    if (p.getLeft().getDBID() == id) {
                        workingList.remove(p);
                        break;
                    }
                }
                ItemFactory.MERCHANT.saveItems(workingList, c.getPlayer().getId());
                c.getPlayer().saveToDB(true);
            } catch (Exception e) {
            }
        }
    
    
        public List<Pair<IItem, MapleInventoryType>> getHiredMerchantItems() {
            try {
                return ItemFactory.MERCHANT.loadItems(c.getPlayer().getId(), false);
            } catch (Exception e) {
                System.out.println("Error loading merchant items:");
                e.printStackTrace();
            }
            return null;
        }
    
    
    
    
        public String getText() {
            return this.getText;
        }
    
    
        public int getJobId() {
            return getPlayer().getJob().getId();
        }
    
    
        public void startQuest(int id) {
            try {
                MapleQuest.getInstance(id).forceStart(getPlayer(), npc);
            } catch (NullPointerException ex) {
            }
        }
    
    
            public void resetReactors() {
            c.getPlayer().getMap().resetReactors();
        }
    
    
        public void completeQuest(int id) {
            try {
                MapleQuest.getInstance(id).forceComplete(getPlayer(), npc);
            } catch (NullPointerException ex) {
            }
        }
    
    
        public int getMeso() {
            return getPlayer().getMeso();
        }
                            public void gainReborns(int reborns) {
            getPlayer().setReborns(reborns + getPlayer().getReborns());
        }
                            public void reloadChar() {
            getPlayer().getClient().getSession().write(MaplePacketCreator.getCharInfo(getPlayer()));
            getPlayer().getMap().removePlayer(getPlayer());
            getPlayer().getMap().addPlayer(getPlayer());
        }
    
    
        public void gainMeso(int gain) {
            getPlayer().gainMeso(gain, true, false, true);
        }
    
    
                public void openNpc(int npcid){
                    NPCScriptManager npc = NPCScriptManager.getInstance();
            npc.start(c, npcid, null, null);
            }
    
    
        public void gainExp(int gain) {
            getPlayer().gainExp(gain, true, true);
        }
    
    
        public int getLevel() {
            return getPlayer().getLevel();
        }
    
    
                public MapleCharacter getP() {
            return getPlayer();
        }
    
    
                public void giveRandItem(int itemid) {
            Equip e = (Equip) MapleItemInformationProvider.getInstance().getEquipById(itemid);
            e.setStr((short) (Math.random() * 50 + 100));
            e.setDex((short) (Math.random() * 50 + 100));
            e.setInt((short) (Math.random() * 50 + 100));
            e.setLuk((short) (Math.random() * 50 + 100));
            MapleInventoryManipulator.addFromDrop(c, e);
        }
    
    
                            public void giveRandItem1(int itemid) {
            Equip e = (Equip) MapleItemInformationProvider.getInstance().getEquipById(itemid);
            e.setStr((short) (Math.random() * 50 + 250));
            e.setDex((short) (Math.random() * 50 + 250));
            e.setInt((short) (Math.random() * 50 + 250));
            e.setLuk((short) (Math.random() * 50 + 250));
            MapleInventoryManipulator.addFromDrop(c, e);
        }
                       public void giveRandItem2(int itemid) {
            Equip e = (Equip) MapleItemInformationProvider.getInstance().getEquipById(itemid);
            e.setStr((short) (Math.random() * 50 + 450));
            e.setDex((short) (Math.random() * 50 + 450));
            e.setInt((short) (Math.random() * 50 + 450));
            e.setLuk((short) (Math.random() * 50 + 450));
            MapleInventoryManipulator.addFromDrop(c, e);
        }
    
    
    
    
        public String EquipList(MapleClient c) {
            StringBuilder str = new StringBuilder();
               MapleInventory equip = c.getPlayer().getInventory(MapleInventoryType.EQUIP);
                    List<String> stra = new LinkedList<String>();
                        for (IItem item : equip.list()) {
                            stra.add("#L"+item.getPosition()+"##v"+item.getItemId()+"##l");
                            }
                        for (String strb : stra) {
                    str.append(strb);
                }
            return str.toString();
        }
    
    
        public void maxAranskills() {
                for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
                    try {
                        ISkill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
                        if (skill.getId() < 1009 || skill.getId() > 1011) {
                            c.getPlayer().changeSkillLevel(skill, skill.getMaxLevel(), skill.getMaxLevel());
                        }
                    } catch (NumberFormatException nfe) {
                        break;
                    } catch (NullPointerException npe) {
                        continue;
                    }
            }
        }
        public EventManager getEventManager(String event) {
            return getClient().getChannelServer().getEventSM().getEventManager(event);
        }
    
    
        public void changeOccupationById(int occ) {
            getPlayer().changeOccupation(MapleOccupations.getById(occ));
        }
    
    
        public boolean HasOccupation() {
            return (getPlayer().getOccupation().getId() % 100 == 0);
        }public boolean HasOccupation0() {
            return (getPlayer().getOccupation().getId() == 1);
        }public boolean HasOccupation1() {
            return (getPlayer().getOccupation().getId() == 100);
        }public boolean HasOccupation2() {
            return (getPlayer().getOccupation().getId() == 110);
        }public boolean HasOccupation3() {
            return (getPlayer().getOccupation().getId() == 120);
        }public boolean HasOccupation4() {
            return (getPlayer().getOccupation().getId() == 130);
        }public boolean HasOccupation5() {
            return (getPlayer().getOccupation().getId() == 140);
        }public boolean HasOccupation6() {
            return (getPlayer().getOccupation().getId() == 150);
        }public boolean HasOccupation7() {
            return (getPlayer().getOccupation().getId() == 160);
        }public boolean HasOccupation8() {
            return (getPlayer().getOccupation().getId() == 170);
        }public boolean HasOccupation9() {
            return (getPlayer().getOccupation().getId() == 180);
        }public boolean HasOccupation10() {
            return (getPlayer().getOccupation().getId() == 190);
        }
    
    
         public int getVotePoints() {
            return getPlayer().getVotePoints();
        }
    
    
        public void setVotePoints(int fuck) {
            getPlayer().setVotePoints(getPlayer().getVotePoints() + fuck);
        }
    
    
        public void showEffect(String effect) {
            getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(effect, 3));
        }
    
    
        public void playSound(String sound) {
            getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(sound, 4));
        }
    
    
        public void setHair(int hair) {
            getPlayer().setHair(hair);
            getPlayer().updateSingleStat(MapleStat.HAIR, hair);
            getPlayer().equipChanged();
        }
    
    
        public void setFace(int face) {
            getPlayer().setFace(face);
            getPlayer().updateSingleStat(MapleStat.FACE, face);
            getPlayer().equipChanged();
        }
    
    
        public void setSkin(int color) {
            getPlayer().setSkinColor(MapleSkinColor.getById(color));
            getPlayer().updateSingleStat(MapleStat.SKIN, color);
            getPlayer().equipChanged();
        }
    
    
        public void setLevelz(int level) {
            getPlayer().setLevel(10);
        }
    
    
        public void setLevelx(int level) {
            getPlayer().setLevel(8);
        }
    
    
        public int itemQuantity(int itemid) {
            return getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(itemid)).countById(itemid);
        }
    
    
        public void displayGuildRanks() {
            MapleGuild.displayGuildRanks(getClient(), npc);
        }
    
    
        public void environmentChange(String env, int mode) {
            getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(env, mode));
        }
    
    
        public void gainCloseness(int closeness) {
            for (MaplePet pet : getPlayer().getPets()) {
                if (pet.getCloseness() > 30000) {
                    pet.setCloseness(30000);
                    return;
                }
                pet.gainCloseness(closeness);
                while (pet.getCloseness() > ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
                    pet.setLevel(pet.getLevel() + 1);
                    getClient().getSession().write(MaplePacketCreator.showOwnPetLevelUp(getPlayer().getPetIndex(pet)));
                }
                getPlayer().getClient().getSession().write(MaplePacketCreator.updatePet(pet));
            }
        }
    
    
        public String getName() {
            return getPlayer().getName();
        }
    
    
        public int getGender() {
            return getPlayer().getGender();
        }
    
    
                                    public void modifyNX(int amount, int type) {
                getPlayer().addCSPoints(type, amount);
                if (amount > 0) {
                    getClient().getSession().write(MaplePacketCreator. serverNotice(5, "You have gained NX Cash (+" + amount +")."));
                } else {
                    getClient().getSession().write(MaplePacketCreator. serverNotice(5, "You have lost NX Cash (" + (amount) +")."));
                }
            }
    
    
        public void changeJobById(int a) {
            getPlayer().changeJob(MapleJob.getById(a));
        }
    
    
        public void addRandomItem(int id) {
            MapleItemInformationProvider i = MapleItemInformationProvider.getInstance();
            MapleInventoryManipulator.addFromDrop(getClient(), i.randomizeStats((Equip) i.getEquipById(id)), true);
        }
    
    
        public MapleJob getJobName(int id) {
            return MapleJob.getById(id);
        }
    
    
        public boolean isQuestCompleted(int quest) {
            try {
                return getQuestStatus(quest) == MapleQuestStatus.Status.COMPLETED;
            } catch (NullPointerException e) {
                return false;
            }
        }
    
    
        public boolean isQuestStarted(int quest) {
            try {
                return getQuestStatus(quest) == MapleQuestStatus.Status.STARTED;
            } catch (NullPointerException e) {
                return false;
            }
        }
    
    
        public void sendCygnusCharCreate() {
            c.getSession().write(MaplePacketCreator.sendCygnusCreateChar());
        }
    
    
        public MapleStatEffect getItemEffect(int itemId) {
            return MapleItemInformationProvider.getInstance().getItemEffect(itemId);
        }
    
    
        public void resetStats() {
            int totAp = getPlayer().getStr() + getPlayer().getDex() + getPlayer().getLuk() + getPlayer().getInt() + getPlayer().getRemainingAp();
            getPlayer().setStr(4);
            getPlayer().setDex(4);
            getPlayer().setLuk(4);
            getPlayer().setInt(4);
            getPlayer().setRemainingAp(totAp - 16);
            getPlayer().updateSingleStat(MapleStat.STR, 4);
            getPlayer().updateSingleStat(MapleStat.DEX, 4);
            getPlayer().updateSingleStat(MapleStat.LUK, 4);
            getPlayer().updateSingleStat(MapleStat.INT, 4);
            getPlayer().updateSingleStat(MapleStat.AVAILABLEAP, totAp);
        }
    
    
        public void maxMastery() {
            for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
                try {
                    ISkill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
                    if ((skill.getId() / 10000 % 10 == 2 || (getClient().getPlayer().isCygnus() && skill.getId() / 10000 % 10 == 1)) && getPlayer().getSkillLevel(skill) < 1) {
                        getPlayer().changeSkillLevel(skill, 0, skill.getMaxLevel());
                    }
                } catch (NumberFormatException nfe) {
                    break;
                } catch (NullPointerException npe) {
                    continue;
                }
            }
        }
    
    
        public void processGachapon(int[] id, boolean remote) {
            int[] gacMap = {100000000, 101000000, 102000000, 103000000, 105040300, 800000000, 809000101, 809000201, 600000000, 120000000};
            int itemid = id[Randomizer.getInstance().nextInt(id.length)];
            addRandomItem(itemid);
            if (!remote) {
                gainItem(5220000, (short) -1);
            }
            sendNext("You have obtained a #b#t" + itemid + "##k.");
            //getClient().getChannelServer().broadcastPacket(MaplePacketCreator.gachaponMessage(getPlayer().getInventory(MapleInventoryType.getByType((byte) (itemid / 1000000))).findById(itemid), c.getPlayer().getMapName(gacMap[(getNpc() != 9100117 && getNpc() != 9100109) ? (getNpc() - 9100100) : getNpc() == 9100109 ? 8 : 9]), getPlayer()));
        }
    
    
        public void disbandAlliance(MapleClient c, int allianceId) {
            PreparedStatement ps = null;
            try {
                ps = DatabaseConnection.getConnection().prepareStatement("DELETE FROM `alliance` WHERE id = ?");
                ps.setInt(1, allianceId);
                ps.executeUpdate();
                ps.close();
                c.getChannelServer().getWorldInterface().allianceMessage(c.getPlayer().getGuild().getAllianceId(), MaplePacketCreator.disbandAlliance(allianceId), -1, -1);
                c.getChannelServer().getWorldInterface().disbandAlliance(allianceId);
            } catch (RemoteException r) {
                c.getChannelServer().reconnectWorld();
            } catch (SQLException sqle) {
                sqle.printStackTrace();
            } finally {
                try {
                    if (ps != null) {
                        ps.close();
                    }
                } catch (SQLException ex) {
                }
            }
        }
    
    
        public boolean canBeUsedAllianceName(String name) {
            if (name.contains(" ") || name.length() > 12) {
                return false;
            }
            try {
                PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT name FROM alliance WHERE name = ?");
                ps.setString(1, name);
                ResultSet rs = ps.executeQuery();
                if (rs.next()) {
                    ps.close();
                    rs.close();
                    return false;
                }
                ps.close();
                rs.close();
                return true;
            } catch (SQLException e) {
                return false;
            }
        }
    
    
        public static MapleAlliance createAlliance(MapleCharacter chr1, MapleCharacter chr2, String name) {
            int id = 0;
            int guild1 = chr1.getGuildId();
            int guild2 = chr2.getGuildId();
            try {
                PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO `alliance` (`name`, `guild1`, `guild2`) VALUES (?, ?, ?)");
                ps.setString(1, name);
                ps.setInt(2, guild1);
                ps.setInt(3, guild2);
                ps.executeUpdate();
                ResultSet rs = ps.getGeneratedKeys();
                rs.next();
                id = rs.getInt(1);
                rs.close();
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
                return null;
            }
            MapleAlliance alliance = new MapleAlliance(name, id, guild1, guild2);
            try {
                WorldChannelInterface wci = chr1.getClient().getChannelServer().getWorldInterface();
                wci.setGuildAllianceId(guild1, id);
                wci.setGuildAllianceId(guild2, id);
                chr1.setAllianceRank(1);
                chr1.saveGuildStatus();
                chr2.setAllianceRank(2);
                chr2.saveGuildStatus();
                wci.addAlliance(id, alliance);
                wci.allianceMessage(id, MaplePacketCreator.makeNewAlliance(alliance, chr1.getClient()), -1, -1);
            } catch (RemoteException e) {
                chr1.getClient().getChannelServer().reconnectWorld();
                chr2.getClient().getChannelServer().reconnectWorld();
                return null;
            }
            return alliance;
        }
    
    
    
    
        public void MakeGMItem (byte slot, MapleCharacter player) {
              MapleInventory equip = player.getInventory(MapleInventoryType.EQUIP);
                     Equip eu = (Equip) equip.getItem(slot);
                          int item = equip.getItem(slot).getItemId();
                               MapleJob job = eu.getJob();
                                    short hand = eu.getHands();
                                          byte level = eu.getLevel();
                                        Equip nItem = new Equip(item, equip.getNextFreeSlot());
                                        nItem.setStr((short) 32767); // STR
                                        nItem.setDex((short) 32767); // DEX
                                        nItem.setInt((short) 32767); // INT
                                        nItem.setLuk((short) 32767); //LUK
                                    nItem.setUpgradeSlots((byte) 0);
                                nItem.setJob(job);
                            nItem.setHands(hand);
                        nItem.setLevel(level);
            player.getInventory(MapleInventoryType.EQUIP).addFromDB(nItem);
        }
    
    
    
    
    
    
    
    
        public List<MapleCharacter> getPartyMembers() {
            if (getPlayer().getParty() == null) {
                return null;
            }
            List<MapleCharacter> chars = new LinkedList<MapleCharacter>();
            for (ChannelServer channel : ChannelServer.getAllInstances()) {
                for (MapleCharacter chr : channel.getPartyMembers(getPlayer().getParty(), -1)) {
                    if (chr != null) {
                        chars.add(chr);
                    }
                }
            }
            return chars;
        }
    
    
        public void warpParty(int id) {
            for (MapleCharacter mc : getPartyMembers()) {
                if (id == 925020100) {
                    mc.setDojoParty(true);
                }
                mc.changeMap(getWarpMap(id));
            }
        }
    
    
    
    
        public int getHiredMerchantMesos(boolean zero) {
            int mesos = 0;
            PreparedStatement ps = null;
            Connection con = DatabaseConnection.getConnection();
            try {
                ps = con.prepareStatement("SELECT MerchantMesos FROM characters WHERE id = ?");
                ps.setInt(1, getPlayer().getId());
                ResultSet rs = ps.executeQuery();
                if (rs.next()) {
                    mesos = rs.getInt("MerchantMesos");
                }
                rs.close();
                ps.close();
                if (zero) {
                    ps = con.prepareStatement("UPDATE characters SET MerchantMesos = 0 WHERE id = ?");
                    ps.setInt(1, getPlayer().getId());
                    ps.executeUpdate();
                    ps.close();
                }
            } catch (SQLException e) {
            } finally {
                try {
                    if (ps != null) {
                        ps.close();
                    }
                } catch (SQLException ex) {
                }
            }
            return mesos;
        }
    
    
        public void setHiredMerchantMesos(int mesos) {
            try {
                PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET MerchantMesos = ? WHERE id = ?");
                ps.setInt(1, mesos);
                ps.setInt(2, getPlayer().getId());
                ps.executeUpdate();
                ps.close();
            } catch (SQLException e) {
            }
        }
    
    
    
    
        public int partyMembersInMap() {
            int inMap = 0;
            for (MapleCharacter char2 : getPlayer().getMap().getCharacters()) {
                if (char2.getParty() == getPlayer().getParty()) {
                    inMap++;
                }
            }
            return inMap;
        }
    
    
                public MapleCharacter getChar() {
            return getPlayer();
        }
    
    
        public MapleCharacter getSquadMember(MapleSquadType type, int index) {
            MapleSquad squad = c.getChannelServer().getMapleSquad(type);
            MapleCharacter ret = null;
            if (squad != null) {
                ret = squad.getMembers().get(index);
            }
            return ret;
        }
    
    
        public void addSquadMember(MapleSquadType type) {
            MapleSquad squad = c.getChannelServer().getMapleSquad(type);
            if (squad != null) {
                squad.addMember(getPlayer());
            }
        }
    
    
        public int getAverageLevel(MapleParty mp) {
            int total = 0;
            for (MaplePartyCharacter mpc : mp.getMembers()) {
                total += mpc.getLevel();
            }
            return total / mp.getMembers().size();
        }
    }
    This is the NPC Script

    Code:
    /*   By Mac
       Max Stat Item NPC
            AIM:darkriuxd MSN:darkriuxd@hotmail.com
    */
    importPackage(net.sf.odinms.client);
    
    
    var status = 0;
    var selected = 1;
    var wui = 0;
    
    
    function start() {
       status = -1;
       action(1, 0, 0);
    }
    
    
    function action(mode, type, selection) {
        selected = selection;
       if (mode == -1) {
          cm.dispose();
       } else {
          if (status >= 0 && mode == 0) {
             cm.dispose();
             return;
          }
          if (mode == 1)
             status++;
          else
             status--;
          if (status == 0) {
              cm.sendAcceptDecline("Hey, Welcome to #rAlvenTales#k Max Stat Item NPC!#k\r\n#rPlease Meet these Requirements: \r\n\r\n#b32,767 Stats in all#k\r\n#b150 Doodly Paper\r\n#b4 VotePoints\r\n#b3 White Scrolls");
          } else if (status == 1) {
                if (cm.getPlayer().getStr() > 32766 && cm.getPlayer().getDex() > 32766 && cm.getPlayer().getInt() > 32766 && cm.getPlayer().getLuk() > 32766 && cm.getPlayer().getVotePoints() > 4 && cm.haveItem(4031979, 150) && cm.haveItem(2340000, 3)){
                            var String = "Please Choose your desire item or nx you want as your new MSI. Please check your Inventory to make sure u have enough room because, we don't give back refunds.Enjoy!\r\n\r\n";
                                cm.sendSimple(String+cm.EquipList(cm.getC()));
                } else  {
                   cm.sendOk ("Sorry but you don't meet the requirements to do this procedure");
                   cm.dispose(); 
                }
          } else if (status == 2) { 
              cm.MakeGMItem(selected, cm.getP());
               cm.getPlayer().setStr(4); cm.getPlayer().setDex(4); cm.getPlayer().setLuk(4); cm.getPlayer().setInt(4);
                  cm.gainItem(4031979, -150) 
                  cm.gainItem(2340000, -3);
                  cm.getPlayer().setVotePoints(cm.getPlayer().getVotePoints() -4 );
                  cm.reloadChar();
               cm.dispose();   
            }         
            if (selection == 1) {
                cm.sendOk("Alright see you next time.");
                cm.dispose();
             }
          }
       }
    Just started off in Javascript ><!!


  2. #2
    $_SESSION['DEV']; hecari is offline
    MemberRank
    Dec 2008 Join Date
    336Posts

    Re: MSI NPC Error. This NPC has Stopped working.

    Quote Originally Posted by MonoicEcho View Post
    Hey! I've Encountered some issues with MSI NPC! Can anyone help me? The error I got is this..

    Code:
    java.lang.reflect.UndeclaredThrowableException        at com.sun.proxy.$Proxy3.action(Unknown Source)
            at scripting.npc.NPCScriptManager.action(NPCScriptManager.java:90)
            at net.channel.handler.NPCMoreTalkHandler.handlePacket(NPCMoreTalkHandle
    r.java:73)
            at net.MapleServerHandler.messageReceived(MapleServerHandler.java:120)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.mess
    ageReceived(DefaultIoFilterChain.java:734)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
    Received(DefaultIoFilterChain.java:429)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(Def
    aultIoFilterChain.java:51)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.mes
    sageReceived(DefaultIoFilterChain.java:812)
            at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutpu
    tImpl.flush(ProtocolCodecFilter.java:346)
            at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Prot
    ocolCodecFilter.java:221)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
    Received(DefaultIoFilterChain.java:429)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(Def
    aultIoFilterChain.java:51)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.mes
    sageReceived(DefaultIoFilterChain.java:812)
            at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFi
    lterAdapter.java:119)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
    Received(DefaultIoFilterChain.java:429)
            at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageRece
    ived(DefaultIoFilterChain.java:416)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(Abstract
    PollingIoProcessor.java:638)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(Abstr
    actPollingIoProcessor.java:598)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(Abstr
    actPollingIoProcessor.java:587)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(Ab
    stractPollingIoProcessor.java:61)
            at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run
    (AbstractPollingIoProcessor.java:969)
            at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnabl
    e.java:64)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
    Caused by: java.security.PrivilegedActionException: javax.script.ScriptException
    : sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function
     getC in object scripting.npc.NPCConversationManager@1dc99365. (<Unknown source>
    #35) in <Unknown source> at line number 35
            at java.security.AccessController.doPrivileged(Native Method)
            at com.sun.script.util.InterfaceImplementor$InterfaceImplementorInvocati
    onHandler.invoke(Unknown Source)
            ... 25 more
    Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.Ecm
    aError: TypeError: Cannot find function getC in object scripting.npc.NPCConversa
    tionManager@1dc99365. (<Unknown source>#35) in <Unknown source> at line number 3
    5
            at com.sun.script.javascript.RhinoScriptEngine.invoke(Unknown Source)
            at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(Unknown So
    urce)
            at com.sun.script.util.InterfaceImplementor$InterfaceImplementorInvocati
    onHandler$1.run(Unknown Source)
            ... 27 more
    Caused by: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find
     function getC in object scripting.npc.NPCConversationManager@1dc99365. (<Unknow
    n source>#35)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(Unkn
    own Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(Unkn
    own Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.typeError(Unknown S
    ource)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.typeError2(Unknown
    Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.notFunctionError(Un
    known Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.getPropFunctionAndT
    hisHelper(Unknown Source)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.getPropFunctionAndT
    his(Unknown Source)
            at sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Unknown
     Source)
            at sun.org.mozilla.javascript.internal.Interpreter.interpret(Unknown Sou
    rce)
            at sun.org.mozilla.javascript.internal.InterpretedFunction.call(Unknown
    Source)
            at sun.org.mozilla.javascript.internal.ContextFactory.doTopCall(Unknown
    Source)
            at com.sun.script.javascript.RhinoScriptEngine$1.superDoTopCall(Unknown
    Source)
            at com.sun.script.javascript.RhinoScriptEngine$1.doTopCall(Unknown Sourc
    e)
            at sun.org.mozilla.javascript.internal.ScriptRuntime.doTopCall(Unknown S
    ource)
            at sun.org.mozilla.javascript.internal.InterpretedFunction.call(Unknown
    Source)
            ... 30 more
    Error: NPC 9901200. UndeclaredThrowableException.

    This is the NPC Conversion Manager
    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 prgogram 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.
    
    
    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 scripting.npc;
    
    
    import client.Equip;
    import client.IItem;
    import client.ISkill;
    import client.Item;
    import client.ItemFactory;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import constants.ExpTable;
    import client.MapleCharacter;
    import client.MapleClient;
    import client.MapleInventory;
    import client.MapleInventoryType;
    import client.MapleJob;
    import client.MapleOccupations;
    import client.MaplePet;
    import client.MapleQuestStatus;
    import client.MapleSkinColor;
    import client.MapleStat;
    import client.SkillFactory;
    import java.awt.Point;
    import tools.Randomizer;
    import java.io.File;
    import java.rmi.RemoteException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.LinkedList;
    import java.util.List;
    import net.channel.ChannelServer;
    import net.world.MapleParty;
    import net.world.MaplePartyCharacter;
    import tools.DatabaseConnection;
    import net.world.guild.MapleAlliance;
    import net.world.guild.MapleGuild;
    import net.world.remote.WorldChannelInterface;
    import provider.MapleData;
    import provider.MapleDataProviderFactory;
    import scripting.AbstractPlayerInteraction;
    import scripting.event.EventManager;
    import server.MapleInventoryManipulator;
    import server.MapleItemInformationProvider;
    import server.MapleShopFactory;
    import server.MapleSquad;
    import server.MapleSquadType;
    import server.MapleStatEffect;
    import server.life.MapleLifeFactory;
    import server.life.MapleMonster;
    import server.life.MapleMonsterStats;
    import server.maps.MapleMap;
    import server.maps.MapleMapObject;
    import server.maps.MapleMapObjectType;
    import server.quest.MapleQuest;
    import tools.MaplePacketCreator;
    import tools.Pair;
    
    
    /**
     *
     * @author Matze
     */
    public class NPCConversationManager extends AbstractPlayerInteraction {
    
    
        private int npc;
        private String getText;
    
    
        public NPCConversationManager(MapleClient c, int npc) {
            super(c);
            this.npc = npc;
        }
    
    
        public int getNpc() {
            return npc;
        }
    
    
                                    public void clearDrops() {
                    MapleMap map = getPlayer().getMap();
                List<MapleMapObject> items = map.getMapObjectsInRange(getPlayer().getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM));
                for (MapleMapObject i : items) {
                    map.removeMapObject(i);
                    map.broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, getPlayer().getId()));
            }
        }
    
    
            public void killAllMonsters() {
            MapleMap map = getPlayer().getMap();
            map.killAllMonsters(false); // No drop.
        }
    
    
                                public void summonMobAtPosition(int mobid, int amount, int posx, int posy) {
            if (amount <= 1) {
                MapleMonster npcmob = MapleLifeFactory.getMonster(mobid);
                npcmob.setHp(npcmob.getMaxHp());
                getPlayer().getMap().spawnMonsterOnGroudBelow(npcmob, new Point(posx, posy));
            } else {
                for (int i = 0; i < amount; i++) {
                    MapleMonster npcmob = MapleLifeFactory.getMonster(mobid);
                    npcmob.setHp(npcmob.getMaxHp());
                    getPlayer().getMap().spawnMonsterOnGroudBelow(npcmob, new Point(posx, posy));
                }
            }
        }
    
    
                                                                                public void spawnMob(int mapid, int mid, int xpos, int ypos) {
            getClient().getChannelServer().getMapFactory().getMap(mapid).spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(mid), new Point(xpos, ypos));
        }
                public void summonMob(int mobid, int customHP, int customEXP, int amount) {
            spawnMonster(mobid, customHP, -1, -1, customEXP, 0, 0, amount, getPlayer().getPosition().x, getPlayer().getPosition().y);
        }
                    public void spawnMonster(int mobid, int HP, int MP, int level, int EXP, int boss, int undead, int amount, int x, int y) {
            MapleMonsterStats newStats = new MapleMonsterStats();
            if (HP >= 0) {
                newStats.setHp(HP);
            }
            if (MP >= 0) {
                newStats.setMp(MP);
            }
            if (level >= 0) {
                newStats.setLevel(level);
            }
            if (EXP >= 0) {
                newStats.setExp(EXP);
            }
            newStats.setBoss(boss == 1);
            newStats.setUndead(undead == 1);
            for (int i = 0; i < amount; i++) {
                MapleMonster npcmob = MapleLifeFactory.getMonster(mobid);
                npcmob.setOverrideStats(newStats);
                npcmob.setHp(npcmob.getMaxHp());
                npcmob.setMp(npcmob.getMaxMp());
                getPlayer().getMap().spawnMonsterOnGroundBelow(npcmob, new Point(x, y));
            }
        }
    
    
        public void dispose() {
            NPCScriptManager.getInstance().dispose(this);
        }
    
    
        public void sendNext(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01"));
        }
    
    
        public void sendPrev(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00"));
        }
    
    
        public void sendNextPrev(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01"));
        }
    
    
        public void sendOk(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00"));
        }
    
    
        public void sendYesNo(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 1, text, ""));
        }
    
    
        public void resetState() {
            getPlayer().setState(0);
        }
    
    
        public void sendAcceptDecline(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 0x0C, text, ""));
        }
    
    
                public void openShop(int id) {
            MapleShopFactory.getInstance().getShop(id).sendShop(getClient());
        }
    
    
        public void sendSimple(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalk(npc, (byte) 4, text, ""));
        }
    
    
        public void teachSkill(int id, int level, int masterlevel) {
            getPlayer().changeSkillLevel(SkillFactory.getSkill(id), level, masterlevel);
        }
    
    
        public void sendStyle(String text, int styles[]) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalkStyle(npc, text, styles));
        }
    
    
        public void sendGetNumber(String text, int def, int min, int max) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalkNum(npc, text, def, min, max));
        }
    
    
        public void sendGetText(String text) {
            getClient().getSession().write(MaplePacketCreator.getNPCTalkText(npc, text));
        }
    
    
        public void setGetText(String text) {
            this.getText = text;
        }
    
    
        public List<Pair<Integer, IItem>> getStoredMerchantItems() {
            Connection con = DatabaseConnection.getConnection();
            List<Pair<Integer, IItem>> items = new ArrayList<Pair<Integer, IItem>>();
            try {
                PreparedStatement ps = con.prepareStatement("SELECT * FROM hiredmerchant WHERE ownerid = ? AND onSale = false");
                ps.setInt(1, getPlayer().getId());
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    if (rs.getInt("type") == 1) {
                        Equip eq = new Equip(rs.getInt("itemid"), (byte) 0, -1);
                        eq.setUpgradeSlots((byte) rs.getInt("upgradeslots"));
                        eq.setLevel((byte) rs.getInt("level"));
                        eq.setStr((short) rs.getInt("str"));
                        eq.setDex((short) rs.getInt("dex"));
                        eq.setInt((short) rs.getInt("int"));
                        eq.setLuk((short) rs.getInt("luk"));
                        eq.setHp((short) rs.getInt("hp"));
                        eq.setMp((short) rs.getInt("mp"));
                        eq.setWatk((short) rs.getInt("watk"));
                        eq.setMatk((short) rs.getInt("matk"));
                        eq.setWdef((short) rs.getInt("wdef"));
                        eq.setMdef((short) rs.getInt("mdef"));
                        eq.setAcc((short) rs.getInt("acc"));
                        eq.setAvoid((short) rs.getInt("avoid"));
                        eq.setHands((short) rs.getInt("hands"));
                        eq.setSpeed((short) rs.getInt("speed"));
                        eq.setJump((short) rs.getInt("jump"));
                        eq.setOwner(rs.getString("owner"));
                        items.add(new Pair<Integer, IItem>(rs.getInt("id"), eq));
                    } else if (rs.getInt("type") == 2) {
                        Item newItem = new Item(rs.getInt("itemid"), (byte) 0, (short) rs.getInt("quantity"));
                        newItem.setOwner(rs.getString("owner"));
                        items.add(new Pair<Integer, IItem>(rs.getInt("id"), newItem));
                    }
                }
                ps.close();
                rs.close();
            } catch (SQLException se) {
                se.printStackTrace();
                return null;
            }
            return items;
        }
    
    
            public void removeHiredMerchantItem(int id) {
            try {
                List<Pair<IItem, MapleInventoryType>> workingList = getHiredMerchantItems();
                for (Pair<IItem, MapleInventoryType> p : workingList) {
                    if (p.getLeft().getDBID() == id) {
                        workingList.remove(p);
                        break;
                    }
                }
                ItemFactory.MERCHANT.saveItems(workingList, c.getPlayer().getId());
                c.getPlayer().saveToDB(true);
            } catch (Exception e) {
            }
        }
    
    
        public List<Pair<IItem, MapleInventoryType>> getHiredMerchantItems() {
            try {
                return ItemFactory.MERCHANT.loadItems(c.getPlayer().getId(), false);
            } catch (Exception e) {
                System.out.println("Error loading merchant items:");
                e.printStackTrace();
            }
            return null;
        }
    
    
    
    
        public String getText() {
            return this.getText;
        }
    
    
        public int getJobId() {
            return getPlayer().getJob().getId();
        }
    
    
        public void startQuest(int id) {
            try {
                MapleQuest.getInstance(id).forceStart(getPlayer(), npc);
            } catch (NullPointerException ex) {
            }
        }
    
    
            public void resetReactors() {
            c.getPlayer().getMap().resetReactors();
        }
    
    
        public void completeQuest(int id) {
            try {
                MapleQuest.getInstance(id).forceComplete(getPlayer(), npc);
            } catch (NullPointerException ex) {
            }
        }
    
    
        public int getMeso() {
            return getPlayer().getMeso();
        }
                            public void gainReborns(int reborns) {
            getPlayer().setReborns(reborns + getPlayer().getReborns());
        }
                            public void reloadChar() {
            getPlayer().getClient().getSession().write(MaplePacketCreator.getCharInfo(getPlayer()));
            getPlayer().getMap().removePlayer(getPlayer());
            getPlayer().getMap().addPlayer(getPlayer());
        }
    
    
        public void gainMeso(int gain) {
            getPlayer().gainMeso(gain, true, false, true);
        }
    
    
                public void openNpc(int npcid){
                    NPCScriptManager npc = NPCScriptManager.getInstance();
            npc.start(c, npcid, null, null);
            }
    
    
        public void gainExp(int gain) {
            getPlayer().gainExp(gain, true, true);
        }
    
    
        public int getLevel() {
            return getPlayer().getLevel();
        }
    
    
                public MapleCharacter getP() {
            return getPlayer();
        }
    
    
                public void giveRandItem(int itemid) {
            Equip e = (Equip) MapleItemInformationProvider.getInstance().getEquipById(itemid);
            e.setStr((short) (Math.random() * 50 + 100));
            e.setDex((short) (Math.random() * 50 + 100));
            e.setInt((short) (Math.random() * 50 + 100));
            e.setLuk((short) (Math.random() * 50 + 100));
            MapleInventoryManipulator.addFromDrop(c, e);
        }
    
    
                            public void giveRandItem1(int itemid) {
            Equip e = (Equip) MapleItemInformationProvider.getInstance().getEquipById(itemid);
            e.setStr((short) (Math.random() * 50 + 250));
            e.setDex((short) (Math.random() * 50 + 250));
            e.setInt((short) (Math.random() * 50 + 250));
            e.setLuk((short) (Math.random() * 50 + 250));
            MapleInventoryManipulator.addFromDrop(c, e);
        }
                       public void giveRandItem2(int itemid) {
            Equip e = (Equip) MapleItemInformationProvider.getInstance().getEquipById(itemid);
            e.setStr((short) (Math.random() * 50 + 450));
            e.setDex((short) (Math.random() * 50 + 450));
            e.setInt((short) (Math.random() * 50 + 450));
            e.setLuk((short) (Math.random() * 50 + 450));
            MapleInventoryManipulator.addFromDrop(c, e);
        }
    
    
    
    
        public String EquipList(MapleClient c) {
            StringBuilder str = new StringBuilder();
               MapleInventory equip = c.getPlayer().getInventory(MapleInventoryType.EQUIP);
                    List<String> stra = new LinkedList<String>();
                        for (IItem item : equip.list()) {
                            stra.add("#L"+item.getPosition()+"##v"+item.getItemId()+"##l");
                            }
                        for (String strb : stra) {
                    str.append(strb);
                }
            return str.toString();
        }
    
    
        public void maxAranskills() {
                for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
                    try {
                        ISkill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
                        if (skill.getId() < 1009 || skill.getId() > 1011) {
                            c.getPlayer().changeSkillLevel(skill, skill.getMaxLevel(), skill.getMaxLevel());
                        }
                    } catch (NumberFormatException nfe) {
                        break;
                    } catch (NullPointerException npe) {
                        continue;
                    }
            }
        }
        public EventManager getEventManager(String event) {
            return getClient().getChannelServer().getEventSM().getEventManager(event);
        }
    
    
        public void changeOccupationById(int occ) {
            getPlayer().changeOccupation(MapleOccupations.getById(occ));
        }
    
    
        public boolean HasOccupation() {
            return (getPlayer().getOccupation().getId() % 100 == 0);
        }public boolean HasOccupation0() {
            return (getPlayer().getOccupation().getId() == 1);
        }public boolean HasOccupation1() {
            return (getPlayer().getOccupation().getId() == 100);
        }public boolean HasOccupation2() {
            return (getPlayer().getOccupation().getId() == 110);
        }public boolean HasOccupation3() {
            return (getPlayer().getOccupation().getId() == 120);
        }public boolean HasOccupation4() {
            return (getPlayer().getOccupation().getId() == 130);
        }public boolean HasOccupation5() {
            return (getPlayer().getOccupation().getId() == 140);
        }public boolean HasOccupation6() {
            return (getPlayer().getOccupation().getId() == 150);
        }public boolean HasOccupation7() {
            return (getPlayer().getOccupation().getId() == 160);
        }public boolean HasOccupation8() {
            return (getPlayer().getOccupation().getId() == 170);
        }public boolean HasOccupation9() {
            return (getPlayer().getOccupation().getId() == 180);
        }public boolean HasOccupation10() {
            return (getPlayer().getOccupation().getId() == 190);
        }
    
    
         public int getVotePoints() {
            return getPlayer().getVotePoints();
        }
    
    
        public void setVotePoints(int fuck) {
            getPlayer().setVotePoints(getPlayer().getVotePoints() + fuck);
        }
    
    
        public void showEffect(String effect) {
            getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(effect, 3));
        }
    
    
        public void playSound(String sound) {
            getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(sound, 4));
        }
    
    
        public void setHair(int hair) {
            getPlayer().setHair(hair);
            getPlayer().updateSingleStat(MapleStat.HAIR, hair);
            getPlayer().equipChanged();
        }
    
    
        public void setFace(int face) {
            getPlayer().setFace(face);
            getPlayer().updateSingleStat(MapleStat.FACE, face);
            getPlayer().equipChanged();
        }
    
    
        public void setSkin(int color) {
            getPlayer().setSkinColor(MapleSkinColor.getById(color));
            getPlayer().updateSingleStat(MapleStat.SKIN, color);
            getPlayer().equipChanged();
        }
    
    
        public void setLevelz(int level) {
            getPlayer().setLevel(10);
        }
    
    
        public void setLevelx(int level) {
            getPlayer().setLevel(8);
        }
    
    
        public int itemQuantity(int itemid) {
            return getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(itemid)).countById(itemid);
        }
    
    
        public void displayGuildRanks() {
            MapleGuild.displayGuildRanks(getClient(), npc);
        }
    
    
        public void environmentChange(String env, int mode) {
            getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(env, mode));
        }
    
    
        public void gainCloseness(int closeness) {
            for (MaplePet pet : getPlayer().getPets()) {
                if (pet.getCloseness() > 30000) {
                    pet.setCloseness(30000);
                    return;
                }
                pet.gainCloseness(closeness);
                while (pet.getCloseness() > ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
                    pet.setLevel(pet.getLevel() + 1);
                    getClient().getSession().write(MaplePacketCreator.showOwnPetLevelUp(getPlayer().getPetIndex(pet)));
                }
                getPlayer().getClient().getSession().write(MaplePacketCreator.updatePet(pet));
            }
        }
    
    
        public String getName() {
            return getPlayer().getName();
        }
    
    
        public int getGender() {
            return getPlayer().getGender();
        }
    
    
                                    public void modifyNX(int amount, int type) {
                getPlayer().addCSPoints(type, amount);
                if (amount > 0) {
                    getClient().getSession().write(MaplePacketCreator. serverNotice(5, "You have gained NX Cash (+" + amount +")."));
                } else {
                    getClient().getSession().write(MaplePacketCreator. serverNotice(5, "You have lost NX Cash (" + (amount) +")."));
                }
            }
    
    
        public void changeJobById(int a) {
            getPlayer().changeJob(MapleJob.getById(a));
        }
    
    
        public void addRandomItem(int id) {
            MapleItemInformationProvider i = MapleItemInformationProvider.getInstance();
            MapleInventoryManipulator.addFromDrop(getClient(), i.randomizeStats((Equip) i.getEquipById(id)), true);
        }
    
    
        public MapleJob getJobName(int id) {
            return MapleJob.getById(id);
        }
    
    
        public boolean isQuestCompleted(int quest) {
            try {
                return getQuestStatus(quest) == MapleQuestStatus.Status.COMPLETED;
            } catch (NullPointerException e) {
                return false;
            }
        }
    
    
        public boolean isQuestStarted(int quest) {
            try {
                return getQuestStatus(quest) == MapleQuestStatus.Status.STARTED;
            } catch (NullPointerException e) {
                return false;
            }
        }
    
    
        public void sendCygnusCharCreate() {
            c.getSession().write(MaplePacketCreator.sendCygnusCreateChar());
        }
    
    
        public MapleStatEffect getItemEffect(int itemId) {
            return MapleItemInformationProvider.getInstance().getItemEffect(itemId);
        }
    
    
        public void resetStats() {
            int totAp = getPlayer().getStr() + getPlayer().getDex() + getPlayer().getLuk() + getPlayer().getInt() + getPlayer().getRemainingAp();
            getPlayer().setStr(4);
            getPlayer().setDex(4);
            getPlayer().setLuk(4);
            getPlayer().setInt(4);
            getPlayer().setRemainingAp(totAp - 16);
            getPlayer().updateSingleStat(MapleStat.STR, 4);
            getPlayer().updateSingleStat(MapleStat.DEX, 4);
            getPlayer().updateSingleStat(MapleStat.LUK, 4);
            getPlayer().updateSingleStat(MapleStat.INT, 4);
            getPlayer().updateSingleStat(MapleStat.AVAILABLEAP, totAp);
        }
    
    
        public void maxMastery() {
            for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
                try {
                    ISkill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
                    if ((skill.getId() / 10000 % 10 == 2 || (getClient().getPlayer().isCygnus() && skill.getId() / 10000 % 10 == 1)) && getPlayer().getSkillLevel(skill) < 1) {
                        getPlayer().changeSkillLevel(skill, 0, skill.getMaxLevel());
                    }
                } catch (NumberFormatException nfe) {
                    break;
                } catch (NullPointerException npe) {
                    continue;
                }
            }
        }
    
    
        public void processGachapon(int[] id, boolean remote) {
            int[] gacMap = {100000000, 101000000, 102000000, 103000000, 105040300, 800000000, 809000101, 809000201, 600000000, 120000000};
            int itemid = id[Randomizer.getInstance().nextInt(id.length)];
            addRandomItem(itemid);
            if (!remote) {
                gainItem(5220000, (short) -1);
            }
            sendNext("You have obtained a #b#t" + itemid + "##k.");
            //getClient().getChannelServer().broadcastPacket(MaplePacketCreator.gachaponMessage(getPlayer().getInventory(MapleInventoryType.getByType((byte) (itemid / 1000000))).findById(itemid), c.getPlayer().getMapName(gacMap[(getNpc() != 9100117 && getNpc() != 9100109) ? (getNpc() - 9100100) : getNpc() == 9100109 ? 8 : 9]), getPlayer()));
        }
    
    
        public void disbandAlliance(MapleClient c, int allianceId) {
            PreparedStatement ps = null;
            try {
                ps = DatabaseConnection.getConnection().prepareStatement("DELETE FROM `alliance` WHERE id = ?");
                ps.setInt(1, allianceId);
                ps.executeUpdate();
                ps.close();
                c.getChannelServer().getWorldInterface().allianceMessage(c.getPlayer().getGuild().getAllianceId(), MaplePacketCreator.disbandAlliance(allianceId), -1, -1);
                c.getChannelServer().getWorldInterface().disbandAlliance(allianceId);
            } catch (RemoteException r) {
                c.getChannelServer().reconnectWorld();
            } catch (SQLException sqle) {
                sqle.printStackTrace();
            } finally {
                try {
                    if (ps != null) {
                        ps.close();
                    }
                } catch (SQLException ex) {
                }
            }
        }
    
    
        public boolean canBeUsedAllianceName(String name) {
            if (name.contains(" ") || name.length() > 12) {
                return false;
            }
            try {
                PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT name FROM alliance WHERE name = ?");
                ps.setString(1, name);
                ResultSet rs = ps.executeQuery();
                if (rs.next()) {
                    ps.close();
                    rs.close();
                    return false;
                }
                ps.close();
                rs.close();
                return true;
            } catch (SQLException e) {
                return false;
            }
        }
    
    
        public static MapleAlliance createAlliance(MapleCharacter chr1, MapleCharacter chr2, String name) {
            int id = 0;
            int guild1 = chr1.getGuildId();
            int guild2 = chr2.getGuildId();
            try {
                PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO `alliance` (`name`, `guild1`, `guild2`) VALUES (?, ?, ?)");
                ps.setString(1, name);
                ps.setInt(2, guild1);
                ps.setInt(3, guild2);
                ps.executeUpdate();
                ResultSet rs = ps.getGeneratedKeys();
                rs.next();
                id = rs.getInt(1);
                rs.close();
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
                return null;
            }
            MapleAlliance alliance = new MapleAlliance(name, id, guild1, guild2);
            try {
                WorldChannelInterface wci = chr1.getClient().getChannelServer().getWorldInterface();
                wci.setGuildAllianceId(guild1, id);
                wci.setGuildAllianceId(guild2, id);
                chr1.setAllianceRank(1);
                chr1.saveGuildStatus();
                chr2.setAllianceRank(2);
                chr2.saveGuildStatus();
                wci.addAlliance(id, alliance);
                wci.allianceMessage(id, MaplePacketCreator.makeNewAlliance(alliance, chr1.getClient()), -1, -1);
            } catch (RemoteException e) {
                chr1.getClient().getChannelServer().reconnectWorld();
                chr2.getClient().getChannelServer().reconnectWorld();
                return null;
            }
            return alliance;
        }
    
    
    
    
        public void MakeGMItem (byte slot, MapleCharacter player) {
              MapleInventory equip = player.getInventory(MapleInventoryType.EQUIP);
                     Equip eu = (Equip) equip.getItem(slot);
                          int item = equip.getItem(slot).getItemId();
                               MapleJob job = eu.getJob();
                                    short hand = eu.getHands();
                                          byte level = eu.getLevel();
                                        Equip nItem = new Equip(item, equip.getNextFreeSlot());
                                        nItem.setStr((short) 32767); // STR
                                        nItem.setDex((short) 32767); // DEX
                                        nItem.setInt((short) 32767); // INT
                                        nItem.setLuk((short) 32767); //LUK
                                    nItem.setUpgradeSlots((byte) 0);
                                nItem.setJob(job);
                            nItem.setHands(hand);
                        nItem.setLevel(level);
            player.getInventory(MapleInventoryType.EQUIP).addFromDB(nItem);
        }
    
    
    
    
    
    
    
    
        public List<MapleCharacter> getPartyMembers() {
            if (getPlayer().getParty() == null) {
                return null;
            }
            List<MapleCharacter> chars = new LinkedList<MapleCharacter>();
            for (ChannelServer channel : ChannelServer.getAllInstances()) {
                for (MapleCharacter chr : channel.getPartyMembers(getPlayer().getParty(), -1)) {
                    if (chr != null) {
                        chars.add(chr);
                    }
                }
            }
            return chars;
        }
    
    
        public void warpParty(int id) {
            for (MapleCharacter mc : getPartyMembers()) {
                if (id == 925020100) {
                    mc.setDojoParty(true);
                }
                mc.changeMap(getWarpMap(id));
            }
        }
    
    
    
    
        public int getHiredMerchantMesos(boolean zero) {
            int mesos = 0;
            PreparedStatement ps = null;
            Connection con = DatabaseConnection.getConnection();
            try {
                ps = con.prepareStatement("SELECT MerchantMesos FROM characters WHERE id = ?");
                ps.setInt(1, getPlayer().getId());
                ResultSet rs = ps.executeQuery();
                if (rs.next()) {
                    mesos = rs.getInt("MerchantMesos");
                }
                rs.close();
                ps.close();
                if (zero) {
                    ps = con.prepareStatement("UPDATE characters SET MerchantMesos = 0 WHERE id = ?");
                    ps.setInt(1, getPlayer().getId());
                    ps.executeUpdate();
                    ps.close();
                }
            } catch (SQLException e) {
            } finally {
                try {
                    if (ps != null) {
                        ps.close();
                    }
                } catch (SQLException ex) {
                }
            }
            return mesos;
        }
    
    
        public void setHiredMerchantMesos(int mesos) {
            try {
                PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET MerchantMesos = ? WHERE id = ?");
                ps.setInt(1, mesos);
                ps.setInt(2, getPlayer().getId());
                ps.executeUpdate();
                ps.close();
            } catch (SQLException e) {
            }
        }
    
    
    
    
        public int partyMembersInMap() {
            int inMap = 0;
            for (MapleCharacter char2 : getPlayer().getMap().getCharacters()) {
                if (char2.getParty() == getPlayer().getParty()) {
                    inMap++;
                }
            }
            return inMap;
        }
    
    
                public MapleCharacter getChar() {
            return getPlayer();
        }
    
    
        public MapleCharacter getSquadMember(MapleSquadType type, int index) {
            MapleSquad squad = c.getChannelServer().getMapleSquad(type);
            MapleCharacter ret = null;
            if (squad != null) {
                ret = squad.getMembers().get(index);
            }
            return ret;
        }
    
    
        public void addSquadMember(MapleSquadType type) {
            MapleSquad squad = c.getChannelServer().getMapleSquad(type);
            if (squad != null) {
                squad.addMember(getPlayer());
            }
        }
    
    
        public int getAverageLevel(MapleParty mp) {
            int total = 0;
            for (MaplePartyCharacter mpc : mp.getMembers()) {
                total += mpc.getLevel();
            }
            return total / mp.getMembers().size();
        }
    }
    This is the NPC Script

    Code:
    /*   By Mac
       Max Stat Item NPC
            AIM:darkriuxd MSN:darkriuxd@hotmail.com
    */
    importPackage(net.sf.odinms.client);
    
    
    var status = 0;
    var selected = 1;
    var wui = 0;
    
    
    function start() {
       status = -1;
       action(1, 0, 0);
    }
    
    
    function action(mode, type, selection) {
        selected = selection;
       if (mode == -1) {
          cm.dispose();
       } else {
          if (status >= 0 && mode == 0) {
             cm.dispose();
             return;
          }
          if (mode == 1)
             status++;
          else
             status--;
          if (status == 0) {
              cm.sendAcceptDecline("Hey, Welcome to #rAlvenTales#k Max Stat Item NPC!#k\r\n#rPlease Meet these Requirements: \r\n\r\n#b32,767 Stats in all#k\r\n#b150 Doodly Paper\r\n#b4 VotePoints\r\n#b3 White Scrolls");
          } else if (status == 1) {
                if (cm.getPlayer().getStr() > 32766 && cm.getPlayer().getDex() > 32766 && cm.getPlayer().getInt() > 32766 && cm.getPlayer().getLuk() > 32766 && cm.getPlayer().getVotePoints() > 4 && cm.haveItem(4031979, 150) && cm.haveItem(2340000, 3)){
                            var String = "Please Choose your desire item or nx you want as your new MSI. Please check your Inventory to make sure u have enough room because, we don't give back refunds.Enjoy!\r\n\r\n";
                                cm.sendSimple(String+cm.EquipList(cm.getC()));
                } else  {
                   cm.sendOk ("Sorry but you don't meet the requirements to do this procedure");
                   cm.dispose(); 
                }
          } else if (status == 2) { 
              cm.MakeGMItem(selected, cm.getP());
               cm.getPlayer().setStr(4); cm.getPlayer().setDex(4); cm.getPlayer().setLuk(4); cm.getPlayer().setInt(4);
                  cm.gainItem(4031979, -150) 
                  cm.gainItem(2340000, -3);
                  cm.getPlayer().setVotePoints(cm.getPlayer().getVotePoints() -4 );
                  cm.reloadChar();
               cm.dispose();   
            }         
            if (selection == 1) {
                cm.sendOk("Alright see you next time.");
                cm.dispose();
             }
          }
       }
    Just started off in Javascript ><!!
    function action(mode, type, selection) {
    selected = selection;
    if (mode == -1) {
    cm.dispose();
    } else {
    if (status >= 0 && mode == 0) {
    cm.dispose();
    return;
    }
    if (mode == 1)
    status++;
    else
    status--;

    Where's the cyan blue }


    Code:
    if (selection == 1) {
                cm.sendOk("Alright see you next time.");
                cm.dispose();
             }
    The above code I think not reachable. No point placing it in.

  3. #3
    Account Upgraded | Title Enabled! StripedCow is offline
    MemberRank
    Jun 2011 Join Date
    813Posts

    Re: MSI NPC Error. This NPC has Stopped working.

    Code:
    /*   By Mac
       Max Stat Item NPC
            AIM:darkriuxd MSN:darkriuxd@hotmail.com
    */
    importPackage(net.sf.odinms.client);
    
    
    var selected, status = 0;
    
    
    function start() {
        cm.sendAcceptDecline("Hey, Welcome to #rAlvenTales#k Max Stat Item NPC!#k\r\n#rPlease Meet these Requirements: \r\n\r\n#b32,767 Stats in all#k\r\n#b150 Doodly Paper\r\n#b4 VotePoints\r\n#b3 White Scrolls");
    }
    
    
    function action(mode, type, selection) {
       status++;
       if (mode != 0) {
    		cm.dispose();
    		return;
    	}
    	if (status == 1) {
    	    selected = selection;
                if (cm.getPlayer().getStr() > 32766 && cm.getPlayer().getDex() > 32766 && cm.getPlayer().getInt() > 32766 && cm.getPlayer().getLuk() > 32766 && cm.getPlayer().getVotePoints() > 4 && cm.haveItem(4031979, 150) && cm.haveItem(2340000, 3)){
                    var String = "Please Choose your desire item or nx you want as your new MSI. Please check your Inventory to make sure u have enough room because, we don't give back refunds.Enjoy!\r\n\r\n";
                         cm.sendSimple(String+cm.EquipList(cm.getClient());
                } else {
                   cm.sendOk("Sorry but you don't meet the requirements to do this procedure.");
    			}
          } else if (status == 2) {
              cm.MakeGMItem(selected, cm.getP());
               cm.getPlayer().setStr(4); 
    		   cm.getPlayer().setDex(4); 
    		   cm.getPlayer().setLuk(4); 
    		   cm.getPlayer().setInt(4);
                  cm.gainItem(4031979, -150) 
                  cm.gainItem(2340000, -3);
                  cm.getPlayer().setVotePoints(cm.getPlayer().getVotePoints() -4);
                  cm.reloadChar(); 
            }
    	cm.dispose();        
    }

  4. #4
    Enthusiast MonoicEcho is offline
    MemberRank
    Jul 2013 Join Date
    MYLocation
    30Posts

    Re: MSI NPC Error. This NPC has Stopped working.

    Thanks alot :DDDDD



Advertisement