Git Product home page Git Product logo

orionalpha's Introduction

OrionAlpha

OrionAlpha - A Nexon Replica Emulator Project


Resources

  • You can download the game and client here
  • To emulate a korean locale in the client, you can download LocaleEmulator here
  • You can download the named client IDB here

Requirements/Dependencies

  • Java JDK (11 or higher)
  • javax.json (or Java EE)
  • Netty (4.1.31 or higher)
  • HikariCP (3.1.0 or higher)
  • MariaDB Connector/J (2.2.3 or higher)
  • slf4j (1.7.4 or higher)
  • Jython (2.7.1 or higher)
  • favr.lib.BCrypt (0.9.0 or higher)

Architecture

The OrionAlpha Emulator is split up into two parts: Login, and Game, each executing on their own thread.

Login is the central server which will have connectivity to each world and can migrate you back and forth.

Game is designed to be each world, and takes the JVM argument -DgameID=X to define which world it is. Each Game JVM that controls the world will also control all of its channels (thus, no multi-jvm here).


Server Configuration

Located within the root of the emulator are a few configuration files:

  • Game0, Game1, etc is used to configure each World.
  • Login is used to configure the Login.
  • Shop is used to configure the Cash Shop.
  • Database is used to configure the connection to the database.

The configuration is done within JSON; each property is defined as a key (string), and a value (int or string). Below will further explain the defintions of most of the properties used.

Login/Game/Shop:

  • port -> The port to be binded for the server's connection acceptor.
  • centerPort -> The private port of your login server that connects JVMs together.
  • PublicIP -> The public IP address users will connect to.
  • PrivateIP -> The private IP address that connects the JVMs together.

Database:

  • dbPort -> The port to connect to your database.
  • dbGameWorld -> The Schema name of the active database that the emulator connects to.
  • dbGameWorldSource -> The IP/hostname to connect to your database.
  • dbGameWorldInfo -> The username/password of your database, separated by comma. (e.g "root,password")

Game:

  • gameWorldId -> The ID of the world (0 = Scania, 1 = Bera, etc).
  • channelNo -> The number of channels for the world.
  • incExpRate -> The server's Experience Rate modifier. We use Nexon's standard. (e.g 100 = 1x, 250 = 2.5x, etc)
  • incMesoRate -> The server's Meso Rate modifier (Nexon standard).
  • incDropRate -> The server's Drop Rate modifier (Nexon standard).
  • worldName -> The name of the world. This is sent to and displayed in the login server.

Client Modifications

Even knowing there's barely anything to edit in such an early version, below are helpful client edits.

Modifying IP

If you intend to use OrionAlpha, you can change the IP in either our client or the clean client.

  • Our client's default IP is 127.0.0.1
  • Nexon's default IP's are 218.153.9.172 and 218.153.9.173

Enable Multi-Client

Allow multiple clients to be open/executed simultaneously.

  • Change the instruction at address 005872D9 to jmp 0058732D

Enable Window Mode

Forces the client to execute only in Window Mode, and not Full Screen.

  • Change the instruction at address 00589F92 to mov dword ptr [esp+0x84], 0x0

Modifying Client Resolution

Allows you to make the dimensions of the game bigger, for example 1024x768.

  • Change the instruction at address 0058A05E to push 0x320 where 0x320 is the Width
  • Change the instruction at address 0058A04F to push 0x258 where 0x258 is the Height

Activate Chat Repeat Bypass

Allows you to send the same message into the chat more than 3 times without any issue.

  • Change the instruction at address 00444261 to jmp 004442A4

Activate Chat Spam Bypass

Allows you to spam messages constantly without having to wait 2 seconds.

  • Change the instruction at address 004442C8 to jmp 0044431B

Enable Infinite Text

Allows you to type as many characters as you want into a single message, literally.

  • Change the instruction at address 0051E38D to mov dword ptr [esp+0xC8], 0xFF where 0xFF is the maximum

Enable Swear Filter

Allows you to enter curse words without getting a pop-up and restricting your message from sending.

  • Change the instruction at address 004441B8 to jmp 004441ED

Remove Nexon ADs

Allows you to disable the ad balloons after closing the client because they're annoying.

  • Change the instruction at address 005878A5 to nop

Enable Droppable NX

Allows you to drop cash NX items like any other item.

  • Change the instruction at address 0047965A to nop
  • Change the instruction at address 00479666 to nop

Re-Enable Admin Actions

Restores the ability to allow GM/Admins to drop items, mesos, etc.

  • Change the instruction at address 004795D2 to jmp 004795E9
  • Change the instruction at address 005002E7 to jmp 00500318

Modifying Damage Cap

Allows you to extend the damage cap up to a maximum of 32,767.

  • Change the instruction at address 005C3E98 to 13337.0 where 13337.0 is the new cap

Modifying Meso Cap

Allows you to drop meso bags exceeding 50,000 by setting a new cap.

  • Change the instruction at address 005003CE to cmp eax, 0xC350 where 0xC350 is the new max
  • Change the instruction at address 005003D5 to mov eax, 0xC350 where 0xC350 is the new max

orionalpha's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

orionalpha's Issues

Some issues with cash items

Items like falling snow always show a blank message
Megaphones don't put your name next to them, only the message
When you use a megaphone from a stack, it consumes all of them at once

error code: -2147287038 (Unknown error 0x80030002)

Yesterday it worked fine, but now I'm getting error code: -2147287038 (Unknown error 0x80030002) when I try to open the game. I tried running it as admin and redownloading the client and its files after looking it up on google, but nothing worked.

onUnhandledInboundException

When I executed the Orion Alpha client after running the login server and game server in order, the server (LoginApp) side got the following error.

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid23356.hprof ...
Heap dump file created [11069758 bytes in 0.031 secs]
Mar 11, 2024 10:50:26 PM io.netty.channel.DefaultChannelPipeline onUnhandledInboundException
WARNING: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
java.lang.OutOfMemoryError: Java heap space
	at network.CenterAcceptor$CenterDecoder.decode(CenterAcceptor.java:118)
	at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:505)
	at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:283)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514)
	at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1044)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:833)

I tried debugging the length of the packet and after 1308164101, 5448501 keeps popping up. How can I fix it?

help me

MapleStory Korea Service WvsLogin.exe.
4월 22, 2020 4:29:53 오전 com.zaxxer.hikari.HikariDataSource
정보: HikariPool-1 - Starting...
4월 22, 2020 4:29:55 오전 com.zaxxer.hikari.pool.HikariPool throwPoolInitializationException
심각: 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.(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.(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)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentication(AbstractConnectProtocol.java:854)
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.(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.(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)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentication(AbstractConnectProtocol.java:854)
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
계속하려면 아무 키나 누르십시오 . . .

help me..

What should I do?

1

2

Java error

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: game/GameApp has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

jdk 13.0.1
jre 1.8.0._231

Is the jre version outdated?

help me!

Balrog doesn't die

I don't know if I'm the only one with this issue, but Balrog doesn't seem to die. He has 50k HP but is still alive despite dealing much more than that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.