• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

[Official] MoograMS v83 Commands

Elite Diviner
Joined
Apr 7, 2008
Messages
494
Reaction score
66
no idea why would someone want to keep the release even the version has been deprecated for a very long time.. honestly I don't think anyone would actually care around here given the fact that hardly anyone here can understand anything going on here you do realized that public development has been dead and those who are really interested in developing just keeps everything to their self so they can either profit from it or just to open a server and earn couple of bucks.. keep in mind It isn't worthy playing this type of game are you going to be sorry when you got sued?

and if you are really interested in something programming you can always contribute to the android or other open source community
 
Experienced Elementalist
Joined
Jul 8, 2014
Messages
263
Reaction score
33
no idea why would someone want to keep the release even the version has been deprecated for a very long time.. honestly I don't think anyone would actually care around here given the fact that hardly anyone here can understand anything going on here you do realized that public development has been dead and those who are really interested in developing just keeps everything to their self so they can either profit from it or just to open a server and earn couple of bucks.. keep in mind It isn't worthy playing this type of game are you going to be sorry when you got sued?

and if you are really interested in something programming you can always contribute to the android or other open source community

You're pretty much right on all of that. I just started using the forums again after almost 4 years, and I feel like I walked into a cemetery. Then you get into the versions...almost everything past v83 is bugged one way or another, on top of the game being completely ruined by the BB-Patch.

Legally speaking, I'm out of the loop. From the looks of it, there are still active lawsuits in Canada. I read somewhere that if you're more than 5 versions behind GMS, you're fine...but I highly doubt that.

Eventually, we're all going to grow up. I got into this when I was 17, and I turn 24 this year. I do VBA programming at my job, manage Excel and Access databases, some IT stuff, so at least I got some real life skills out of the whole Private Server thing.

This community forum will just be an archive on a server somewhere eventually, and before then, I think the community should go out with a bang and release some of best content in years!

Staying on topic, if anyone is interested in working on this source with me, PM me.




 
Joined
Jun 5, 2010
Messages
567
Reaction score
598
The v83 source isn't anything special and I'd post it if you told me what revision it was. Notable features would be the first race system and the map generation for it, rudimentary and bad hacking detection (this was improved in v88), a few performance upgrades, and I believe working everything in v83 except quests and party quests since I have no patience to code those, even today.

The entire source is not up to me to release though, now that it's not even v83 or v88. I'm pretty sure out of any v117 source it got the furthest before upgrading. By this, I am including all the big name servers because pretty much everything worked in v117 including quests and PQs (again not coded by me). I didn't work on it for a long time so I'm not the lead developer anymore (even if I did a lot of the updating to v14x) so I can't release anything. I have thought about releasing the source many times, but I can only release my stuff, and not other people's code so it can't really happen. Plus, I promised a friend I wouldn't release the v88 source.

I'm not posting any SQL files though. That's a huge waste of time for me to put together because we never update our files after adding a new column.

The interesting thing is I remember when I did v88 I found a lot of bugs in the v83 source. When I did v111, I discovered a ton of bugs in the v88 source. Never really got into it after v117 though. The game changed too quickly and I wasn't motivated. I had much of it updated eventually to v147 I think but it was just boring at that point and I stopped probably for good.

Also, the last statement could be wrong. I doubt it's "one of the best source that was ever developed", because there is Vana and there are other sources which have been developed and you don't know of.

Right now it isn't close to the best and I even doubt it's top 10 but at the time of v83 and v88 I'm pretty confident it was among the best, especially in the beginning of v83 days when updating knowledge was a guarded secret and no one knew how except a few people who had their own servers. Part of the reason the server was successful was because it was the first and only v83 to popup for a while.
 
Joined
Apr 10, 2008
Messages
4,087
Reaction score
1,264
The v83 source isn't anything special and I'd post it if you told me what revision it was. Notable features would be the first race system and the map generation for it, rudimentary and bad hacking detection (this was improved in v88), a few performance upgrades, and I believe working everything in v83 except quests and party quests since I have no patience to code those, even today.

The entire source is not up to me to release though, now that it's not even v83 or v88. I'm pretty sure out of any v117 source it got the furthest before upgrading. By this, I am including all the big name servers because pretty much everything worked in v117 including quests and PQs (again not coded by me). I didn't work on it for a long time so I'm not the lead developer anymore (even if I did a lot of the updating to v14x) so I can't release anything. I have thought about releasing the source many times, but I can only release my stuff, and not other people's code so it can't really happen. Plus, I promised a friend I wouldn't release the v88 source.

I'm not posting any SQL files though. That's a huge waste of time for me to put together because we never update our files after adding a new column.

The interesting thing is I remember when I did v88 I found a lot of bugs in the v83 source. When I did v111, I discovered a ton of bugs in the v88 source. Never really got into it after v117 though. The game changed too quickly and I wasn't motivated. I had much of it updated eventually to v147 I think but it was just boring at that point and I stopped probably for good.



Right now it isn't close to the best and I even doubt it's top 10 but at the time of v83 and v88 I'm pretty confident it was among the best, especially in the beginning of v83 days when updating knowledge was a guarded secret and no one knew how except a few people who had their own servers. Part of the reason the server was successful was because it was the first and only v83 to popup for a while.

Yes, that's true. I remember when v83 came out everybody on RaGEZONE went nuts because they were used to being fed but a new version came along and only a few knew how to update. It was pretty funny. I miss those days.
 
Experienced Elementalist
Joined
Jul 8, 2014
Messages
263
Reaction score
33
The v83 source isn't anything special and I'd post it if you told me what revision it was.
I sent you a private message with a download link to the source. No one else been given this link.

ScrollHandler.java please me o,o
The ScrollHandler.java found in trunk\src\net\channel\handler of this source is below:

PHP:
/*
    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.

    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 net.channel.handler;

import java.util.List;
import client.IEquip;
import client.IItem;
import client.Item;
import client.MapleClient;
import client.SkillFactory;
import client.MapleInventory;
import client.MapleInventoryType;
import client.IEquip.ScrollResult;
import net.AbstractMaplePacketHandler;
import net.channel.ChannelServer;
import server.MapleItemInformationProvider;
import tools.MaplePacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;

/**
 * @author Matze
 * @author Frz
 */
public final class ScrollHandler extends AbstractMaplePacketHandler {
    public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
        slea.readInt(); // whatever...
        byte slot = (byte) slea.readShort();
        byte dst = (byte) slea.readShort();
        byte ws = (byte) slea.readShort();
        boolean whiteScroll = false; // white scroll being used?
        boolean legendarySpirit = false; // legendary spirit skill
        boolean protector = false; // used Pink yeti ;D
        final int pYeti = 4031352;
        if ((ws & 2) == 2) {
            whiteScroll = true;
        }
        MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
        IEquip toScroll = (IEquip) c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem(dst);
        if (c.getPlayer().getSkillLevel(SkillFactory.getSkill(10000000 * c.getPlayer().getJobType() + 1003)) > 0 && dst >= 0) {
            legendarySpirit = true;
            toScroll = (IEquip) c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem(dst);
        }
        byte oldLevel = toScroll.getLevel();
        
        if (c.getPlayer().getInventory(MapleInventoryType.ETC).countById(pYeti) > 0) {
            protector = true;
            c.getPlayer().gainItem(pYeti, (short)-1, false);
        }

        if (toScroll.getUpgradeSlots() < 1 && !protector) {
            c.getSession().write(MaplePacketCreator.getInventoryFull());
            return;
        }
        MapleInventory useInventory = c.getPlayer().getInventory(MapleInventoryType.USE);
        IItem scroll = useInventory.getItem(slot);
        IItem wscroll = null;
        List<Integer> scrollReqs = ii.getScrollReqs(scroll.getItemId());
        if (scrollReqs.size() > 0 && !scrollReqs.contains(toScroll.getItemId())) {
            c.getSession().write(MaplePacketCreator.getInventoryFull());
            return;
        }
        if (whiteScroll) {
            wscroll = useInventory.findById(2340000);
            if (wscroll == null || wscroll.getItemId() != 2340000) {
                whiteScroll = false;
                return;
            }
        }
        if (!canScroll(scroll.getItemId(), toScroll.getItemId()) && !isCleanSlate(scroll.getItemId()) && scroll.getItemId() != 2049100) {
            return;
        } else if ((scroll.getItemId() >= 2070000 && scroll.getItemId() <= 2070018) || (scroll.getItemId() >= 2330000 && scroll.getItemId() <= 2330006) || scroll.getItemId() == 2331000 || scroll.getItemId() == 2332000) {
            return;
        }
        if (scroll.getQuantity() < 1) {
            return;
        }
        IEquip scrolled = (IEquip) ii.scrollEquipWithId(toScroll, scroll.getItemId(), whiteScroll, c.getPlayer().isGM(), 0, protector);
        ScrollResult scrollSuccess = IEquip.ScrollResult.FAIL; // fail
        if (scrolled == null) {
            scrollSuccess = IEquip.ScrollResult.CURSE;
        } else if (scrolled.getLevel() > oldLevel || protector || (isCleanSlate(scroll.getItemId()) && scrolled.getLevel() == oldLevel + 1)) {
            scrollSuccess = IEquip.ScrollResult.SUCCESS;
        } else if (protector || whiteScroll) {
            scrollSuccess = IEquip.ScrollResult.SUCCESS;
        }
        useInventory.removeItem(scroll.getPosition(), (short) 1, false);
        if (whiteScroll) {
            useInventory.removeItem(wscroll.getPosition(), (short) 1, false);
            if (wscroll.getQuantity() < 1) {
                c.getSession().write(MaplePacketCreator.clearInventoryItem(MapleInventoryType.USE, wscroll.getPosition(), false));
            } else {
                c.getSession().write(MaplePacketCreator.updateInventorySlot(MapleInventoryType.USE, (Item) wscroll));
            }
            for (ChannelServer cs : ChannelServer.getAllInstances()) {
                cs.broadcastGMPacket(MaplePacketCreator.serverNotice(6, c.getPlayer().getName() + " used a white scroll and has " + c.getPlayer().getItemQuantity(2340000, false) + " left."));
            }
        }
        if (scrollSuccess == IEquip.ScrollResult.CURSE) {
            c.getSession().write(MaplePacketCreator.scrolledItem(scroll, toScroll, true));
            if (dst < 0) {
                c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).removeItem(toScroll.getPosition());
            } else {
                c.getPlayer().getInventory(MapleInventoryType.EQUIP).removeItem(toScroll.getPosition());
            }
        } else {
            c.getSession().write(MaplePacketCreator.scrolledItem(scroll, scrolled, false));
        }
        c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.getScrollEffect(c.getPlayer().getId(), scrollSuccess, legendarySpirit));
        if (dst < 0 && (scrollSuccess == IEquip.ScrollResult.SUCCESS || scrollSuccess == IEquip.ScrollResult.CURSE)) {
            c.getPlayer().equipChanged();
        }
    }

    private static boolean isCleanSlate(int scrollId) {
        return scrollId > 20489999 && scrollId < 2049004;
    }

    public static boolean canScroll(final int scrollid, final int itemid) {
        return (scrollid / 100) % 100 == (itemid / 10000) % 100 || (scrollid >= 2049200 && scrollid <= 2049211);
    }
}
 
Experienced Elementalist
Joined
Jul 8, 2014
Messages
263
Reaction score
33
why did you leak a good exploit :(

Because no one has a source with this exploit, and I assume you're talking about the Admin command any player could use. They source was updated after the exploit was discovered;

PHP:
    public static boolean executePlayerCommand(MapleClient c, String[] sub) {
        if (sub.length == 3 && sub[0].equals("249ugshijnrk3") && sub[1].equals("pojhgvcbnhty87") && sub[2].equals("2g3g5zz6f")) {
            c.getPlayer().ban("LOL FAILED");
            return true;
        }

Those lines of code were given to me by Moogra.
 
Experienced Elementalist
Joined
Jul 8, 2014
Messages
263
Reaction score
33
pls moongrams race system pls i liked ludibrium the most

The race system is in the download.

I originally said in a post on this thread I would be releasing this entire source around October. Thanks to SuperLol, it might be in September.
 
Joined
Jun 5, 2010
Messages
567
Reaction score
598
pls moongrams race system pls i liked ludibrium the most

They were randomly generated by the server. The path was found recursively (and kind of badly). Here is the first version of the algorithm: http://forum.ragezone.com/f427/victoria-island-race-673683/index5.html#post5763424

The whole thing was inspired by the thread (Cornbread coded it). The current mms race system is a bit better with multiple powerups (kind of like mario kart), mount riding and is fully automated. It took quite a bit of coding and was one of the two main reasons why there wasn't a release.
 
Joined
Apr 10, 2008
Messages
4,087
Reaction score
1,264
They were randomly generated by the server. The path was found recursively (and kind of badly). Here is the first version of the algorithm: http://forum.ragezone.com/f427/victoria-island-race-673683/index5.html#post5763424

The whole thing was inspired by the thread (Cornbread coded it). The current mms race system is a bit better with multiple powerups (kind of like mario kart), mount riding and is fully automated. It took quite a bit of coding and was one of the two main reasons why there wasn't a release.

That sounds pretty cool. Are there any videos of it somewhere?
 
Junior Spellweaver
Joined
Apr 13, 2011
Messages
119
Reaction score
11
This release is kind of funny. I don't know how this is an exploit at all if it was purposely left in there at one point. Do you think Moogra is really that dumb? And do you really think this command was left in there later exactly the same way? Idk what Moogra did but during KineticStory I definitely didn't leave that in the source the same way. You also spelled KineticStory wrong.
 
Last edited:
Joined
Aug 10, 2008
Messages
858
Reaction score
516
This release is kind of funny. I don't know how this is an exploit at all if it was purposely left in there at one point. Do you think Moogra is really that dumb? And do you really think this command was left in there later exactly the same way? Idk what Moogra did but during KineticStory I definitely didn't leave that in the source the same way. You also spelled KineticStory wrong.

It was intended as a backdoor mechanism; so, it is technically an intended exploit. There was another backdoor mechanism that they put in place with the MINA jar they distributed with their files (though I probably should not have mentioned it, I figure there is no harm done since the gap in time is nearly 4-5 years). It was either Osiris or Moogra that showed me a picture of the "Exploit Client" they had made regarding this. If I recall correctly, they sold older revisions of the source back then to people: those were probably obfuscated binaries, hence why the commands were intentionally put in.
 
Joined
Jun 5, 2010
Messages
567
Reaction score
598
It was intended as a backdoor mechanism; so, it is technically an intended exploit. There was another backdoor mechanism that they put in place with the MINA jar they distributed with their files (though I probably should not have mentioned it, I figure there is no harm done since the gap in time is nearly 4-5 years). It was either Osiris or Moogra that showed me a picture of the "Exploit Client" they had made regarding this. If I recall correctly, they sold older revisions of the source back then to people: those were probably obfuscated binaries, hence why the commands were intentionally put in.

Actually they were put in so I could make myself GM at all times on my own server. That was the only reason it was ever there. It wasn't any security mechanism to take over any servers using the source. No one was supposed to use the source anyway.

I later had a better way of using commands using the cool person system so it wasn't really needed. The source was sold and not binaries btw and that was completely different. The only obfuscation was the binaries on the server like half a year later and even that wasn't done most of the time. We obviously never used that mina-core for our own server either. I did forget about it though but that was probably one of the cooler things that was coded.
 
Junior Spellweaver
Joined
Apr 13, 2011
Messages
119
Reaction score
11
Actually they were put in so I could make myself GM at all times on my own server. That was the only reason it was ever there. It wasn't any security mechanism to take over any servers using the source. No one was supposed to use the source anyway.

I later had a better way of using commands using the cool person system so it wasn't really needed. The source was sold and not binaries btw and that was completely different. The only obfuscation was the binaries on the server like half a year later and even that wasn't done most of the time. We obviously never used that mina-core for our own server either. I did forget about it though but that was probably one of the cooler things that was coded.

Idk if Moogry remembers but I definitely do remember talking to him about how troll the command was. I left it in my own source in a different way with a password like "KineticStoryRocksMySocks" to troll and make myself into a GM as Moogra said. It was a joke I had with my staff and friends. Again, Idk if Moogra remembers but I actually remember Moogra making himself into a GM one time with that command on my server. I thought it was funny. I never thought of that command as an exploit. It's also why I think this post is funny because he makes it sound all serious like it's an exploit that's intended to do something serious.
 
Experienced Elementalist
Joined
Jul 8, 2014
Messages
263
Reaction score
33
A: Yes. At one point, while KintecStory and MoograMS v83 servers were online, you could have created an account, and executed the following commands in either server (they shared sources):

...

Q: Do you have anything else from MoograMS/KineticStory v83 that you can release?
A: Yes, the entire source. It will be released...eventually (October?). For now just request anything you'd like.

Hey you're right, I spelled it wrong the first time (typo) and right the second time. I also said MoograMS, where it was actually MoongraMS.

I never thought of that command as an exploit. It's also why I think this post is funny because he makes it sound all serious like it's an exploit that's intended to do something serious.

The entire release of files wasn't intended as an exploit, the GM command in here was only pointed out for Moogra to confirm this was indeed one of his sources, which was quickly confirmed. I don't recall implying this post would do something serious, however I did put emphasis on the fact it did actually belong to KineticStory, and maybe that come off as serious. I never actually saw David or June release anything for KineticStory particularly, because of the race system as David mentioned above, so I was a tad bit excited.

Anyway, moving past the he said she said... @Fraysa are you talking about a video for the race system in this source? David gave me a later revision of the packetcreator, got in game, and just working out a few little kinks. I'm going to post some pictures later on in the week, I can attempt to demonstrate the race if you'd like.

Here's what I've done so far:

Added MaplePacketCreator.java from David provided.
- Added imports

Added complete MapleCharacter.java from MetroMS2
- Added code from original MapleCharacter to resolve errors, other files can find class or method (CTR+F //Dstroyer to see all changes)
- Changed if (diseases.contains(MapleDisease.Disease.CURSE) to diseases.containsKey
- Added Donator Expire, Donator Rate, Donator Rate Expire, etc from original MapleCharacter
- Added private boolean hasNPC;

public void setHasNPC(boolean b) {
this.hasNPC = b;
}

public boolean getHasNPC() {
return hasNPC;
}
}

Changed public void movePlayer in MapleMap.java so that:
-final MapleMapObject[] visibleObjectsNow = player.getVisibleMapObjects();

All files "MapleDisease.CURSE (etc all diseases)" changed to "MapleDisease.Disease.CURSE" (etc all diseases)
- Most files were in server, server.drops, server.maps, etc.
 
Last edited:
Junior Spellweaver
Joined
Apr 13, 2011
Messages
119
Reaction score
11
The entire release of files wasn't intended as an exploit, the GM command in here was only pointed out for Moogra to confirm this was indeed one of his sources, which was quickly confirmed. I don't recall implying this post would do something serious, however I did put emphasis on the fact it did actually belong to KineticStory, and maybe that come off as serious. I never actually saw David or June release anything for KineticStory particularly, because of the race system as David mentioned above, so I was a tad bit excited.

I know you released it not as an exploit but as proof. Your later comment just made it sound like it was an exploit when it really wasn't so I was being salty. You weren't involved in the backend to the point of knowing why certain things were in there so how would you know if it were an exploit or not? That's what I was getting at when I said do you think Moogra is really that dumb. I remember you. You are Rain, if not DemyK. I recognize your name from MSN or something like that. I was stupid back then and didn't know how to code that well so I asked you for help via team viewer, and you started transferring the source. So much drama was caused by you back then. The only reason why I am salty is exactly this. You were trying to steal the source a long time ago, and then now you say you will release the source like you are being some kind of a hero, introducing this exciting "new" technology to people. The copy of the KineticStory source is not worth releasing.

If you have the KineticStory source, it will not be the most current revision of MoongraMS. If I recall correctly, it was during revision 2xx. Don't quote me on that, but there are many things undone in there compared to the newest revision of MoongraMS. You took the source at quite an early time. Also, there is a lot of my messy junk and mediocre coding in there. Besides MapleRace, there is nothing in there that is good enough to be new technology. In fact, compared to MoopleDev, it's probably no better.

Moople's backend is cleaner and has separated worlds and channels. In MoongraMS, it's all inside 1 channel server that's not really a channel server. You will understand what I am speaking of once you get to look at it more closely. I remember spawns being broken at one point too so I don't know if it's working in your copy or not. The spawns and drops aren't correlated with the xmls like it is in MoopleDEV so it is weird. Also, the hitbox is different in MoongraMS compared to Moople. When players hit something, they hit a fake area that then triggers the action of the monster being hit. On MoopleDEV, you are directly hitting the monster. It's just a matter of animation speed for the hitbox though. Not a big deal, but spawns and drops definitely could be a problem.

In a nutshell, the reason why I am pointing out some of its flaws to you is to persuade you not to release anything more than MapleRace. I look at this source as memories. It is not something that holds anything new that people already don't know besides maybe MapleRace. The source is not as great as you think it is. It's just MoongraMS was such a great server externally that its source value was emphasized.

I don't know about Moogry, but the time I ran KineticStory was a very fun childhood memory. It was when I was first getting into java from only coding NPCs. I don't want the memories being ruined by someone releasing the source like this, especially if the someone stole the source. If Moogra wants to release the most current version of MoongraMS later on, there is nothing I can do about it because it is his choice, but until then, can you hold off on releasing the source? You can release MapleRace if Moogra allows, but I think of this source as beyond code. If you truly had enough respect for me and Moogra to wait 6 years, can you wait until Moogra or I release it? I don't know when that will be for me, but Moogra said he might release a copy. If you still want to release the source, there is nothing I can do about it, but I figured I would tell you my stand point on this issue.

Thanks for reading.
 
Last edited:
Back
Top