OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

Page 1 of 3 123 LastLast
Results 1 to 15 of 45
  1. #1
    Moderator Eric is offline
    ModeratorRank
    Jan 2010 Join Date
    DEV CityLocation
    3,185Posts

    OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    OrionAlpha has been one of my favorite projects in MapleStory development by far. After I had found these old closed alpha videos, it was the one client of the game I really wanted to play around with. Luckily for me, a client somehow managed to exist!

    This emulator was written from scratch with help from @sunnyboy and @Arnah -- and unlike other emulators here, this one is designed to replicate the structure of Nexon's official source files. While I didn't have the patience to build this into a truly multi-JVM environment, it's not too hard to convert because we already make use of it.

    So, what makes KMS 1.23 different? Here's some interesting stuff:
    Code:
    - This client is so old that no protection had even existed yet. No security or antihack whatsoever.
    - This is the only MapleStory client without any AES or Shanda encryption. In fact, this uses it's own special XOR encryption that does not exist in any other client I've found.
    - StringPool did not exist yet. All strings are hard-coded directly into the application.
    - Unlike GMS clients, this is truly the only 2nd job client out there. Other clients have 3rd job stuff implemented, even if it didn't exist for a long time.
    - Character emotions do not exist yet. Functional keys (F1~F12) do nothing. Originally these keys were used for actions, before Nexon updated them. An emotion for Vomit exists, but is not functional in the client yet.
    - Key configuration does not exist yet. All character keys are hard-coded. This means CTRL is attack, ALT is jump, Z is loot, and M is minimap. 
    - Party, Buddy, and Guild all do not exist yet. This was implemented in the earliest stages of GMS clients, but not here.
    - Quests do not exist yet (technically). A UI window for them shows up in the system menu, but it's hard-coded to be disabled. No quest functionality regarding packets exist, so everything is NPC-based. Almost all NPC's in the game that are scripted are solely "scripted" because they are quests. Even so, in the game files there script property is defined through the key "quest" (later changed to script).
    - Cash Items are ETC and USE items. This was still a thing in old GMS clients, but quickly changed.
    - This is the only client to include Wizet's original Login UI. It features completely different login panel, world select, character select, and even creations. In fact, a few versions after this the UI was changed to the one you see in all other future versions.
    - NPC shop data came directly from NPCs in the game files
    - Names and descriptions exist on entities in the game files, not String.wz.
    - This is one of the few clients to include Wizet's original hexagonal UI (my personal favorite). 
    - This client is one of the first (if not the first) to include the Cash Shop system. The UI hasn't changed much.
    - Almost all other game UI is unique here, such as Trading too.
    - In future versions of MapleStory, all old UI elements from this client are included in the WZ files. Nexon never removed these (or updated) elements. Furthermore, Mini Game UI's and stuff were based from this client's UI before the redesign.
    - Plenty more nostalgia facts that I'm probably missing here, but you get it -- this version is unique!
    The implementation for OrionAlpha is pretty much complete. With less than 100 opcodes that even exist in the client, all are implemented. Database operations, game functionality, cash shop functionality, etc. is all there. We use Nexon's standard for Field handling through use of FieldSplits. All packets are only sent to users within your split, not to the map. This is how users migrate between splits, making it look like they've left the map when they are out of range on your mini map. We also use Nexon's standard for Life handling as well. With the use of a HeapBase, we have 100% GMS-like controllers (how NPCs and Mobs aggro to your character), as well as the calculations to overall mob capacity. Throughout the entire source our names, functions, and class structure have all been based on Nexon's official server files and resources. If you ever need to update packets (or find them) in client PDB's and match it to ours, you will always find them in the exact same places -- easy to update, easy to maintain. Think of OrionAlpha as a modified barebones version of Orion -- I took most of the systems from Orion to use them here. Speaking of Orion, we are relaunching in 2020 -- feel free to visit us on Discord!

    This doesn't mean OrionAlpha is perfect, it's far from it. Unfortunately, we never got around to fixing any bugs we overlooked or finished some behind the scenes features either. A lot remains that I had wanted to rewrite (our JVM architecture, DB handling, and data file loading), but never got around to it. I've also decided not to implement Orion's full damage calculations (CalcDamage) into this by a request. In regards to missing content, the only thing that's missing in OrionAlpha is the same thing that's missing in Orion -- my worst enemy, scripts! I've went around and modeled them for anyone who wishes to script them further. Every script has been documented and started. Since we weren't aware of how quests had worked (assumed they hadn't existed yet), we never wrote a backend implementation for them.

    So, setting up OrionAlpha.. Well, if you know how to configure Nexon's official server files (hehe hi @Darter xd), then setting up our server will be very easy! To make it easier, I've already included all the files you'll need along with all of the possible properties. If you intend to make a public server, all you'll need to do is change the IP configuration (and any other setting for rates, etc). Don't worry -- I've documented all of this on the git for your ease! All we recommend is that you have JDK 11 (or higher) installed. You will need to compile the source with an IDE (we prefer IntelliJ, but Eclipse or NetBeans works too). Finally, you will need a MySQL client. I just use the old MySQL Query Browser and refuse to change, but you can use whatever you like as long as it can create a new schema and execute queries.

    Speaking of the git, here is all you need for OrionAlpha: https://github.com/EricSoftTM/OrionAlpha

    Since I'm basically the client hacker guy around here, what good is OrionAlpha without client edits? I've documented all of the client edits available for OrionAlpha on the git as well -- this explains what the edits do, their addresses in the client, and what to change them to. The following client hacks are available:
    Code:
    * Multi Client
    * Window Mode
    * Custom Resolution
    * Repeating Chat Bypass
    * Chat Spam Bypass
    * Infinite Chat Text
    * Swear Filter
    * Remove Nexon ADs
    * Droppable NX
    * Custom Damage Cap
    * Custom Meso Cap
    * Admin Client Restrictions Bypass
    I believe that is all. Everything you need can be found on the git. I've included the full game client, my personally named IDB for whatever I used it for, and even LocaleEmulator so that you can view the text outside of broken ASCII (do remember, this is a Korean beta!)

    Screenshots:







    Merry Christmas,
    Eric
    Last edited by Eric; 20-02-20 at 04:40 PM.


  2. #2
    Member asnj28 is offline
    MemberRank
    Jun 2014 Join Date
    37Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    nice release thanks

  3. #3
    Master of lurking Kimberly is offline
    ModeratorRank
    Jul 2012 Join Date
    The NetherlandsLocation
    1,052Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Hopefully someday the Closed Beta client gets found.

  4. #4
    Registered Eden52 is offline
    MemberRank
    May 2012 Join Date
    9Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Hey! I would be happy for guide how to install the server. :)

  5. #5
    Yuki Zygon is offline
    True MemberRank
    Aug 2008 Join Date
    IllinoisLocation
    1,208Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Looks like Odin

  6. #6
    Interesting... SharpAceX is offline
    Alpha MaleRank
    Oct 2008 Join Date
    2,009Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    The python scripts revolution continues comrades
    https://mapleme.me/
    The memes of the Maple community all in one place.

  7. #7
    Moderator Eric is offline
    ModeratorRank
    Jan 2010 Join Date
    DEV CityLocation
    3,185Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Quote Originally Posted by Kimberly View Post
    Hopefully someday the Closed Beta client gets found.
    Me too. From the looks of it, it's pretty much the same client though, isn't it? I just know earlier builds used F1~F4(?) keys, didn't have a Cash Shop yet, and portal mechanics were barely there. Not too sure about the differences myself, you've definitely researched it more than I have.

    Quote Originally Posted by Eden52 View Post
    Hey! I would be happy for guide how to install the server. :)
    It's just like any other Java project. I'm not sure if other public sources utilize Maven or not yet? Basically you just load the project now, instead of having to add other JAR dependencies into the project manually.

    1. Install an IDE (IntelliJ is preferred)
    2. In your IDE, File->Open Project, and open OrionAlpha. Your IDE will scan and index the source files as well as the maven repos for dependencies.
    3. On the right hand side (assuming you use IntelliJ) is a "Maven Projects" button. Expand OrionAlpha -> Lifecycle -> Package.
    4. Once you've packaged the files to the target directory, you're all set in regards to the backend.
    5. Install MySQL (use a client -- I use MySQL Query Browser, you can use HeidiSQL or Navicat, whatever you'd like)
    6. If you have MySQL installed, File->Open Script, and find the SQL file located in OrionAlpha/sql/ named OrionAlpha.sql
    7. Execute the file, it will create a schema called 'orionalpha'. This is your database for the server, and it's all set.
    8. Now, setup your configuration (reference the git). If you want custom rates or something, go for it. Otherwise, skip this step.
    9. Launch the server! (run .bat files) I will need to update the git doc to include this, but the launch order is as follows: Login => Game => Shop.
    10. Voila! Your server is all setup. You can customize the client too if you'd like.

    Oh, and in regards to accounts.. The default SQL includes our accounts, feel free to just add your own. In MySQL create a new column, name your account whatever you'd like, copy our password, and make your grade code 2. Our password is the default "admin" password used everywhere else.

    Quote Originally Posted by Zygon View Post
    Looks like Odin
    i'm sorry i failed you zygod :((

    Quote Originally Posted by SharpAceX View Post
    The python scripts revolution continues comrades
    Yeah I did python scripts all for you fam, I even referenced your release for it. Right now I have some issue with Jython where apparently they use some deprecated reflection or something? No clue, something with streams in their dependency. I noticed you use the old revision on your post, not the new 2.7 one, maybe I should use that one instead lmao

  8. #8
    Member toko258 is offline
    MemberRank
    May 2012 Join Date
    29Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    sometimes i dream to get to this level of maple developing...

  9. #9
    Interesting... SharpAceX is offline
    Alpha MaleRank
    Oct 2008 Join Date
    2,009Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Quote Originally Posted by toko258 View Post
    sometimes i dream to get to this level of maple developing...
    Nobody but yourself is stopping you from getting to "this level".
    https://mapleme.me/
    The memes of the Maple community all in one place.

  10. #10
    Member toko258 is offline
    MemberRank
    May 2012 Join Date
    29Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Quote Originally Posted by SharpAceX View Post
    Nobody but yourself is stopping you from getting to "this level".
    as a child i always wanted to develop a maple server but i just cant find the way to do this, always when i start i somehow get blocked in the way and stops.
    i dont know why but it seems impoosible to me in someway...

  11. #11
    Interesting... SharpAceX is offline
    Alpha MaleRank
    Oct 2008 Join Date
    2,009Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Quote Originally Posted by toko258 View Post
    as a child i always wanted to develop a maple server but i just cant find the way to do this, always when i start i somehow get blocked in the way and stops.
    i dont know why but it seems impoosible to me in someway...
    Just set up a source, complete a few free Java tutorials online, and start tinkering with it. You could be fairly decent in just a few months if you put in enough effort
    https://mapleme.me/
    The memes of the Maple community all in one place.

  12. #12
    Member Abunavha is offline
    MemberRank
    May 2012 Join Date
    42Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Nice release.. I remember OldPlanet by CSPROJ using this version back in 2013-2014!! @csproj i love u
    Last edited by Abunavha; 28-12-19 at 01:28 AM.

  13. #13
    Newbie Stiff is offline
    MemberRank
    Dec 2019 Join Date
    1Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Awesome release. Do you think you would be adding gms support for networking/crypto? Would help give gms sources a good push forward I believe!

  14. #14
    Moderator Eric is offline
    ModeratorRank
    Jan 2010 Join Date
    DEV CityLocation
    3,185Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    Quote Originally Posted by Stiff View Post
    Awesome release. Do you think you would be adding gms support for networking/crypto? Would help give gms sources a good push forward I believe!
    I wouldn't be adding GMS support to OrionAlpha directly, no. However, the networking implementation itself is not region specific. The primary differences would be that in GMS clients, 1) Nexon encrypts the data length in the packet headers by doing dataLen ^= rawSeq; 2) AES and Shanda are introduced; 3) Client sequences are updated using an IGcipher. This is open-source for a reason: for people to build off of. I'm hoping that people who would like to have Netty in their source (or who want to update this into a GMS source -- go for it!) to take what I have with what they know and apply it.

  15. #15
    Newbie ed58 is offline
    MemberRank
    Jan 2020 Join Date
    1Posts

    Re: OrionAlpha - A Nexon-like KMS 1.23 Emulator | Merry Christmas

    hi. i'm fairly new to maplestory servers and really wanted to try this source out. but im running into an error after setting everything up and running launch_login.
    Code:
    MapleStory Korea Service WvsLogin.exe.
    Jan 01, 2020 12:49:11 AM com.zaxxer.hikari.HikariDataSource <init>
    INFO: HikariPool-1 - Starting...
    Jan 01, 2020 12:49:13 AM com.zaxxer.hikari.pool.HikariPool throwPoolInitializationException
    SEVERE: HikariPool-1 - Exception during pool initialization.
    java.sql.SQLInvalidAuthorizationSpecException: Access denied for user 'root'@'localhost' (using password: NO)
            at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:173)
            at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:110)
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1093)
            at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:494)
            at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150)
            at org.mariadb.jdbc.Driver.connect(Driver.java:86)
            at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117)
            at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:123)
            at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:367)
            at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:196)
            at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467)
            at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541)
            at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
            at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81)
            at network.database.UnifiedDB.load(UnifiedDB.java:96)
            at login.LoginApp.initializeDB(LoginApp.java:202)
            at login.LoginApp.setUp(LoginApp.java:262)
            at login.LoginApp.start(LoginApp.java:248)
            at login.LoginApp.main(LoginApp.java:242)
    Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
    Current charset is windows-1252. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentication(AbstractConnectProtocol.java:852)
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:780)
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:454)
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1089)
            ... 16 more
    
    com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Access denied for user 'root'@'localhost' (using password: NO)
            at com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:576)
            at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:562)
            at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
            at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81)
            at network.database.UnifiedDB.load(UnifiedDB.java:96)
            at login.LoginApp.initializeDB(LoginApp.java:202)
            at login.LoginApp.setUp(LoginApp.java:262)
            at login.LoginApp.start(LoginApp.java:248)
            at login.LoginApp.main(LoginApp.java:242)
    Caused by: java.sql.SQLInvalidAuthorizationSpecException: Access denied for user 'root'@'localhost' (using password: NO)
            at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:173)
            at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:110)
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1093)
            at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:494)
            at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150)
            at org.mariadb.jdbc.Driver.connect(Driver.java:86)
            at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117)
            at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:123)
            at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:367)
            at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:196)
            at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467)
            at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541)
            ... 7 more
    Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
    Current charset is windows-1252. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentication(AbstractConnectProtocol.java:852)
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:780)
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:454)
            at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1089)
            ... 16 more
    Press any key to continue . . .
    It has something to do with having insufficient privileges i think? I'm using a MYSQL server and it forces me to use a password. i only care to run the server for myself btw. i havent port fowarded anything



Page 1 of 3 123 LastLast

Advertisement