[Source] OrpheusMS Repack [v.83]

Please send me the fix for Reactors so Bosses can spawn and Boxes...what is going on I thought this was working?

Error Bat
java.lang.NullPointerException
at scripting.reactor.ReactorScriptManager.act(ReactorScriptManager.java:
58)
at server.maps.MapleReactor.hitReactor(MapleReactor.java:182)
at server.maps.MapleReactor.hitReactor(MapleReactor.java:138)
at server.maps.MapleMap$ActivateItemReactor.run(MapleMap.java:1803)
at server.TimerManager$LoggingSaveRunnable.run(TimerManager.java:137)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:1734)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java
:2019)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java
:1937)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java
:1922)
at client.MapleCharacter.saveToDB(MapleCharacter.java:3555)
at scripting.event.EventManager.updateRankings(EventManager.java:182)
at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.org.mozilla.javascript.internal.MemberBox.invoke(Unknown Source)
at sun.org.mozilla.javascript.internal.NativeJavaMethod.call(Unknown Sou
rce)
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)
at com.sun.script.javascript.RhinoScriptEngine.invoke(Unknown Source)
at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(Unknown So
urce)
at scripting.event.EventManager$2.run(EventManager.java:102)
at server.TimerManager$LoggingSaveRunnable.run(TimerManager.java:137)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

The Source of the Reactor
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <[email protected]>
Matthias Butz <[email protected]>
Jan Christian Meyer <[email protected]>

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 scripting.reactor;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.script.Invocable;
import client.MapleClient;
import tools.DatabaseConnection;
import scripting.AbstractScriptManager;
import server.maps.MapleReactor;
import server.maps.ReactorDropEntry;

/**
* @author Lerk
*/
public class ReactorScriptManager extends AbstractScriptManager {
private static ReactorScriptManager instance = new ReactorScriptManager();
private Map<Integer, List<ReactorDropEntry>> drops = new HashMap<Integer, List<ReactorDropEntry>>();

public synchronized static ReactorScriptManager getInstance() {
return instance;
}

public void act(MapleClient c, MapleReactor reactor) {
try {
ReactorActionManager rm = new ReactorActionManager(c, reactor);
Invocable iv = getInvocable("reactor/" + reactor.getId() + ".js", c);
// System.out.println(reactor.getId());
if (iv == null) {
return;
}
engine.put("rm", rm);
ReactorScript rs = iv.getInterface(ReactorScript.class);
rs.act();
} catch (Exception e) {
e.printStackTrace();
}
}

public List<ReactorDropEntry> getDrops(int rid) {
List<ReactorDropEntry> ret = drops.get(rid);
if (ret == null) {
ret = new LinkedList<ReactorDropEntry>();
try {
PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT itemid, chance FROM reactordrops WHERE reactorid = ? AND chance >= 0");
ps.setInt(1, rid);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
ret.add(new ReactorDropEntry(rs.getInt("itemid"), rs.getInt("chance")));
}
rs.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
drops.put(rid, ret);
}
return ret;
}

public void clearDrops() {
drops.clear();
}

public void touch(MapleClient c, MapleReactor reactor) {
touching(c, reactor, true);
}

public void untouch(MapleClient c, MapleReactor reactor) {
touching(c, reactor, false);
}

public void touching(MapleClient c, MapleReactor reactor, boolean touching) {
try {
ReactorActionManager rm = new ReactorActionManager(c, reactor);
Invocable iv = getInvocable("reactor/" + reactor.getId() + ".js", c);
if (iv == null) {
return;
}
engine.put("rm", rm);
ReactorScript rs = iv.getInterface(ReactorScript.class);
if (touching) {
rs.touch();
} else {
rs.untouch();
}
} catch (Exception e) {
}
}
}

I don't have this issue, and I cannot seem to replicate it, it must be an issue with your setup.
 
I don't have this issue, and I cannot seem to replicate it, it must be an issue with your setup.

Yeah typical, since a friend had to force the source to goto channel one. Your source had -1 on channel and he changed it to 1 which finally made it work. I don't understand why some people on their pcs it works just fine, but i have to use amodified idiot style one.
 
Yeah typical, since a friend had to force the source to goto channel one. Your source had -1 on channel and he changed it to 1 which finally made it work. I don't understand why some people on their pcs it works just fine, but i have to use amodified idiot style one.

Likely because for one reason, or another, your setup is off. Perhaps your version of Java is wrong. Your computer overall is out of date. I don't know enough about it to say anything for certain, but really, like, you shouldn't have had to change the default channel considering the reason why it defaults to -1 is to bind the login server. That sounds like an old version of Java to me.
 
Interesting. Besides just fixing problems that moopledev had, what other editions or custom ideas of your own are you planning on adding?
 
Likely because for one reason, or another, your setup is off. Perhaps your version of Java is wrong. Your computer overall is out of date. I don't know enough about it to say anything for certain, but really, like, you shouldn't have had to change the default channel considering the reason why it defaults to -1 is to bind the login server. That sounds like an old version of Java to me.

I'm using latest java 7 now, 64 bit and I have windows 7 64 bit.

I doubt:

AMd Phenom II x4 955
GTS 250 Nvidia
8 GB RAM

Is an out of date computer my friend. however, you are more than welcome to fix all this for me and figure out what is wrong with it via team viewer
 
I'm using latest java 7 now, 64 bit and I have windows 7 64 bit.

I doubt:

AMd Phenom II x4 955
GTS 250 Nvidia
8 GB RAM

Is an out of date computer my friend. however, you are more than welcome to fix all this for me and figure out what is wrong with it via team viewer

Well, for one thing, I've said numerous times, including in the OP, that you should not use Java 7 with this, as it will cause problems. You should use Java 6.
 
Be more precise there are 35 versions of java 6...which one exactly? Which version of jdk, and which version of policy files, after all in order to diagnose the problem I need the exact files you would host that do not give YOU problems.
 
Be more precise there are 35 versions of java 6...which one exactly? Which version of jdk, and which version of policy files, after all in order to diagnose the problem I need the exact files you would host that do not give YOU problems.
The newest version of Java 6, and the JCE Unlimited policy files for Java 6.

Interesting. Besides just fixing problems that moopledev had, what other editions or custom ideas of your own are you planning on adding?

It's not just a MoopleDev fix anymore. If you look into the source, or the configuration, you'll see there's quite a bit of features you can take advantage of.
 
:| well i've been working on setting up a server with this source since it looks really promising for about 2 days straight now :P. Anywho I've gotten really far the only thing is now I can't get passed the login screen. When I select my character, it lags anywhere from 0-7 seconds then sends me back to the title screen saying "Unable to log in to the game server. Please try again later" ANY FIXES?

Ps: I'm aware a common error for this is the JCE files (It was the cause of my login screen problem on a previous source) but in this source, thats not the case. I have all the JCE files pasted in all their appropriate locations. And I'm using JCE6. I've even tried it with JCE7 but that just made it worse lol. Any tips? sorry if i haven't read all 14 pages of this topic to find mah solution

Pps: two more questions since i'm absolutely too starved, sleep deprived, and downright lazy to look them up: What is the event message? and What is the recommend message? in the Orpheous.ini file

Ppps: Oh btw for anyone else screwin up the sql database steps, there's a syntax error in the inkwellfix.sql file. Just add a semicolon at the end of each line like this:
Code:
DELETE FROM `shops` WHERE `npcid` = '9000069';
DELETE FROM `shopitems` WHERE `shopid` = '9000069';

PPPPs: Do I need to port forward the channel ports? I realize 1 channel is on port 7575, but what about other channels? Are they just going to be 7576, 7577, etc..?

PPPPPs: Also i've noticed someone in this topic said they completely got rid of their Jre7 files. Does anyone know if this will fix my inability to get passed the login screen??

Sorry for all the stupid questions haha. I'll try some of my own ideas right now, I just thought i'd ask incase anybody else wants to input real fast to save me some time. I swear if I ever get this to work and I <3 the source I'll make a complete absolute beginner's guide to setting up a server with OrpheusMS. Because being a complete beginner myself, I think I've run into every error on the planet and found a way to get passed them, at least until my character login failure... So yeah :P

PPPPPPs: PLEASE COME ALIVE AND SAVE ME AARON WEISS

Edit:
PRAISE THE LORD FOR TIREDGUY, FOR HE TAUGHT ME THE ART OF CLEAN AND BUILD THEN COMPILE!!!!!!! :D.

It's fixed. Testing now...

Edit2:
HALLELUJAH AND PRAISE BABY JESUS ALL MIGHTY!!
THANK YOU SO MUCH AARONWEISS

THIS IS THE BEST, MOST COMPLETE, MOST EFFICIENT, FASTEST, AND MOST POWERFUL SOURCE I'VE EVER USED! (And I've only used one other... ZenthosDev COUGH COUGH. WHICH HAD BROKEN QUESTS AND LAGGED ME ON MY OWN FREAKIN SERVER!!)

Dude it totally got rid of my lag problem. All the quests are working so far, perfectly too, just like GlobalMS. No lag. Super fast. Super efficient. Super powerful.

I <3 AARONWEISS

Edit 3:
I hereby deem this the best source ever written :D. Keep it up Aaronweiss. That's all i have left to say :P. good dayyy

Edit 4: JK i lied. I also wanted to post that in the up and coming future I will have a guide out for how to install/set up a server with this source. A complete baby step beginner's guide. Cuz das how I roll.
 
Last edited:
I've got a problem when creating characters. Whenever I attempt to create one, no character shows up on the selection screen. I get this error in the server console.
Code:
java.lang.NullPointerException
        at client.MapleCharacter.saveToDB(MapleCharacter.java:3606)
        at net.server.handlers.login.CreateCharHandler.handlePacket(CreateCharHandler.java:97)
        at net.MapleServerHandler.messageReceived(MapleServerHandler.java:128)
        at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.mess
ageReceived(DefaultIoFilterChain.java:716)
        at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
Received(DefaultIoFilterChain.java:434)
        at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(Def
aultIoFilterChain.java:46)
        at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.mes
sageReceived(DefaultIoFilterChain.java:796)
        at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutpu
tImpl.flush(ProtocolCodecFilter.java:427)
        at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Prot
ocolCodecFilter.java:245)
        at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
Received(DefaultIoFilterChain.java:434)
        at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(Def
aultIoFilterChain.java:46)
        at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.mes
sageReceived(DefaultIoFilterChain.java:796)
        at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFi
lterAdapter.java:119)
        at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
Received(DefaultIoFilterChain.java:434)
        at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageRece
ived(DefaultIoFilterChain.java:426)
        at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(Abstract
PollingIoProcessor.java:715)
        at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(Abstr
actPollingIoProcessor.java:668)
        at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(Abstr
actPollingIoProcessor.java:657)
        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(Ab
stractPollingIoProcessor.java:68)
        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run
(AbstractPollingIoProcessor.java:1141)
        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)

EDIT: It appears that Maplestock was messing up my server, so I disabled it, cleaned, and recompiled it. Server works great so far. Aside from that is there any way i can get rid of the quest lightbulb for admins?
And one of the quests in that bubble that appears on Admin level characters named '????????' will bug your character for some reason.
 
Last edited:
Here's some things i've noticed in the source that i think would be better off changed. They're just suggestions, so take em or leave em :P. Firstly, even though the @stat command is more compact, i think its a lot of extra work to type out @stat stat value. It'd be nice if you changed that to just @stat value.. For example, @luk 100, @dex 20, @str 15, etc... Secondly, the @stat command seems to glitch where the changes that you make don't show up in your stats until you use the command again. For example, if i have 20 stat points, and i type @stat luk 20, my luk in my stat menu stays the same until i type something like @stat luk 100, then all of a sudden like magic, the 20 stat points that i applied earlier appear in my luk slot, and i receive an error message saying "You don't have that many AP points" or something to that effect. Also, the henesys skin care NPC doesn't work.

Another random glitch that I found, is that when you make the third job advancement, players around you disconnect. When I first made the third advancement, my friend disconnected, and when he caught up with me and advanced, i disconnected too. Strange. Also, as another personal preference suggestion, I think it'd be better if all your stats didn't max out when you hit the third job advancement. Me and my friend were trying to play pretty legitly up to level 70, but then when we got there, magically all our skills maxed out. It kinda took some of the drive out of the game, once we had all our skills.

Other than that I still like this source, and it seems to have a lot more functionality than other sources.
 
Error white trying to create a char.. help
java.lang.NullPointerException at client.MapleCharacter.saveToDB(MapleCharacter.java:3607)
at net.server.handlers.login.CreateCharHandler.handlePacket(CreateCharHa
ndler.java:97)
at net.MapleServerHandler.messageReceived(MapleServerHandler.java:128)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.mess
ageReceived(DefaultIoFilterChain.java:716)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
Received(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(Def
aultIoFilterChain.java:46)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.mes
sageReceived(DefaultIoFilterChain.java:796)
at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutpu
tImpl.flush(ProtocolCodecFilter.java:427)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Prot
ocolCodecFilter.java:245)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
Received(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(Def
aultIoFilterChain.java:46)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.mes
sageReceived(DefaultIoFilterChain.java:796)
at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFi
lterAdapter.java:119)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessage
Received(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageRece
ived(DefaultIoFilterChain.java:426)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(Abstract
PollingIoProcessor.java:715)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(Abstr
actPollingIoProcessor.java:668)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(Abstr
actPollingIoProcessor.java:657)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(Ab
stractPollingIoProcessor.java:68)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run
(AbstractPollingIoProcessor.java:1141)
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)
 
Back