Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[v83] MapleSolaxia Server Source

Experienced Elementalist
Joined
Nov 21, 2008
Messages
297
Reaction score
38
but only I was there, nobody else... why?
Open World and MapleClient or some poop. In World, declare the expRate variable to a Final Constant (it should be set to "1", which isn't wrong, just leave it that way). Then in MapleClient (where the exp is actually calculated?) Look for the getExpRate, setExpRate, and gainExp methods. Not 100% sure here, and I don't feel like downloading anything, so just look around. The exp is set in 3 places (world, mapleclient, and the ini files). Good luck!

Edit: Is the exp rate also set in ServerConstants? I can't remember.
 
Last edited:
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Open World and MapleClient or some poop. In World, declare the expRate variable to a Final Constant (it should be set to "1", which isn't wrong, just leave it that way). Then in MapleClient (where the exp is actually calculated?) Look for the getExpRate, setExpRate, and gainExp methods. Not 100% sure here, and I don't feel like downloading anything, so just look around. The exp is set in 3 places (world, mapleclient, and the ini files). Good luck!

Edit: Is the exp rate also set in ServerConstants? I can't remember.

I think you have MapleClient and MapleCharacter confused. ;P
 
Experienced Elementalist
Joined
Nov 21, 2008
Messages
297
Reaction score
38
I think you have MapleClient and MapleCharacter confused. ;P

You're right.. My bad.
Haven't so much as looked at private server files in months, but I am still addicted to coming to /f425/ to chill. duck. ;-;

Anyways yes, MapleCharacter.
 
not a programmer
Joined
Mar 30, 2015
Messages
532
Reaction score
62
Is it better use lock for character and object separately, & same for read and write?
i.e:

Code:
    private void spawnAndAddRangedMapObject(MapleMapObject mapobject, DelayedPacketCreation packetbakery, SpawnCondition condition) {
        chrRLock.lock();
        objectWLock.lock();
        try {
            int curOID = getUsableOID();
            mapobject.setObjectId(curOID);
            this.mapobjects.put(curOID, mapobject);
            for (MapleCharacter chr : characters) {
                if (condition == null || condition.canSpawn(chr)) {
                    if (chr.getPosition().distanceSq(mapobject.getPosition()) <= 722500) {
                        packetbakery.sendPackets(chr.getClient());
                        chr.addVisibleMapObject(mapobject);
                    }
                }
            }
        } finally {
            chrRLock.unlock();
            objectWLock.unlock();
        }
    }

    private int getUsableOID() {
        if (runningOid.incrementAndGet() > 2000000000) {
            runningOid.set(1000);
        }
        objectRLock.lock();
        try {
            if (mapobjects.containsKey(runningOid.get())) {
                while (mapobjects.containsKey(runningOid.incrementAndGet()));
            }
        } finally {
            objectRLock.unlock();
        }

        return runningOid.get();
    }

JourneyDEV
Code:
    private void spawnAndAddRangedMapObject(MapleMapObject mapobject, DelayedPacketCreation packetbakery, SpawnCondition condition) {
        chrRLock.lock();
        try {
            mapobject.setObjectId(runningOid);
            for (MapleCharacter chr : characters) {
                if (condition == null || condition.canSpawn(chr)) {
                    if (chr.getPosition().distanceSq(mapobject.getPosition()) <= 722500) {
                        packetbakery.sendPackets(chr.getClient());
                        chr.addVisibleMapObject(mapobject);
                    }
                }
            }
        } finally {
            chrRLock.unlock();
        }
        objectWLock.lock();
        try {
            this.mapObjects.put(runningOid, mapobject);
        } finally {
            objectWLock.unlock();
        }
        incrementRunningOid();
    }

    public void incrementRunningOid() {
        runningOid++;
        if (runningOid >= 30000) {
            runningOid = 1000;
        }
        objectRLock.lock();
        try {
            if (!this.mapObjects.containsKey(runningOid)) {
                return;
            }
        } finally {
            objectRLock.unlock();
        }
        throw new RuntimeException("Out of OIDs on map " + mapid + " (channel: " + channel + ")");
    }
 
Last edited:
Newbie Spellweaver
Joined
May 8, 2015
Messages
24
Reaction score
0
I dont know why i'm having this problem I set up another source and I can manage to boot it up but I don't manage to make solaxia source work for me :( Any idea on how i can fix my problem thanks you! :') Im having this problem with the db connection and I set up everything right on the configuration.ini
IF6FTp7 - [v83] MapleSolaxia Server Source - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Junior Spellweaver
Joined
Jan 2, 2014
Messages
150
Reaction score
50
I dont know why i'm having this problem I set up another source and I can manage to boot it up but I don't manage to make solaxia source work for me :( Any idea on how i can fix my problem thanks you! :') Im having this problem with the db connection and I set up everything right on the configuration.ini
IF6FTp7 - [v83] MapleSolaxia Server Source - RaGEZONE Forums
That error says otherwise on setting it up properly
 

Attachments

You must be registered for see attachments list
Nae-un <33
Joined
Jun 23, 2012
Messages
554
Reaction score
70
For those of you asking for a fix for the TimerManager, let me just say this. I spent around 10 hours of debugging to track down what I knew about the TimerManager issue. In that time frame I was able to find out it came from the timer manager, that it was an issue with safe threading, and a few other smaller details. There is no quick and easy way to debug the TimerManager to find whats causing the issue. It's not a simple problem to fix, and I bet if anyone did fix it they wouldn't just release it.

It's an issue that affects all MoopleDev sources, and other sources I would think, I just haven't tried them.

Would that mean you'd have to reproduce the error by either waiting for it to occur or prompting it to happen somehow? Sounds like the most annoying and inefficient bug to debug.
 
Newbie Spellweaver
Joined
Feb 2, 2016
Messages
30
Reaction score
0
Where i can edit this msg?

fefw - [v83] MapleSolaxia Server Source - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Junior Spellweaver
Joined
Apr 5, 2008
Messages
152
Reaction score
65
Would that mean you'd have to reproduce the error by either waiting for it to occur or prompting it to happen somehow? Sounds like the most annoying and inefficient bug to debug.
That's the only way to debug it. It was a complete pain. Also, since it happened over time it was even harder to debug on a dev server. I was actually having to wait for the actual game server to have the issue and try debugging that. It made debugging iterations very slow and tedious.
Where i can edit this msg?
If you're talking about the MapleSolaxia text, it will be in net.server.Server.java
 
Nae-un <33
Joined
Jun 23, 2012
Messages
554
Reaction score
70
That's the only way to debug it. It was a complete pain. Also, since it happened over time it was even harder to debug on a dev server. I was actually having to wait for the actual game server to have the issue and try debugging that. It made debugging iterations very slow and tedious.

Having to wait for your bug to occur rather than being able to reproduce it on your own accord is probably the worst; it's just as I read in my textbook for game design. The most effective ways to create a game is to have a prototype that is easy to launch and allows you to reproduce what you need for testing. This bug is the antithesis to that.
 
Junior Spellweaver
Joined
Apr 5, 2008
Messages
152
Reaction score
65
Having to wait for your bug to occur rather than being able to reproduce it on your own accord is probably the worst; it's just as I read in my textbook for game design. The most effective ways to create a game is to have a prototype that is easy to launch and allows you to reproduce what you need for testing. This bug is the antithesis to that.

Exactly. This is the reason it has never been fixed in public moople based sources. It's too much of a headache to debug.
 
Newbie Spellweaver
Joined
Feb 2, 2016
Messages
30
Reaction score
0
How i can return to exprate "pattern"? without this new type? i can copy it in another folder?
 
Newbie Spellweaver
Joined
May 8, 2015
Messages
24
Reaction score
0
After I put the pic, Its send me back again and again someone know what might be my problem ? Thanks You!

s55GbDD - [v83] MapleSolaxia Server Source - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Junior Spellweaver
Joined
Jan 2, 2014
Messages
150
Reaction score
50
After I put the pic, Its send me back again and again someone know what might be my problem ? Thanks You!

s55GbDD - [v83] MapleSolaxia Server Source - RaGEZONE Forums
Ip in configuration.ini is incorrect.
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Apr 10, 2012
Messages
31
Reaction score
2
My god... This is really an amazing release. Thanks alot!

From complete Mai's training quests to the elegant way of handing commands in client.commands.Commands.java, so many great improvements to MoopleDEV. It's a pleasure coding with this source.

I love the blocked names in MapleCharacter btw. rofl ;d.
 
Experienced Elementalist
Joined
Mar 12, 2015
Messages
238
Reaction score
43
Well no offense to the coders or anything, I mean, I love this source.
but... "elegant way of handling commands"?
 
Back
Top