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!

[v144.3] Acernis

(O_o(o_O(O_O)o_O)O_o)
Loyal Member
Joined
Apr 9, 2009
Messages
1,088
Reaction score
322
If this is based on Astral 144 ( XeniaDEV )
You might need this

PHP:
Swap your getSocketState with this

    public short getSocketState() {
        int flag = 0;
        if (socket1 != -1 || socket2 != -1 || socket3 != -1) { // Got empty sockets show msg 
            flag |= SocketFlag.DEFAULT.getValue();
        }
        if (socket1 != -1) {
            flag |= SocketFlag.SOCKET_BOX_1.getValue();
        }
        if (socket1 > 0) {
            flag |= SocketFlag.USED_SOCKET_1.getValue();
        }
        if (socket2 != -1) {
            flag |= SocketFlag.SOCKET_BOX_2.getValue();
        }
        if (socket2 > 0) {
            flag |= SocketFlag.USED_SOCKET_2.getValue();
        }
        if (socket3 != -1) {
            flag |= SocketFlag.SOCKET_BOX_3.getValue();
        }
        if (socket3 > 0) {
            flag |= SocketFlag.USED_SOCKET_3.getValue();
        }
        return (short) flag;
    }
in Equip.java

I appear to have looked over your post :p. I can recommend people using rev 10 to use this ^^

It has however been fixed a while ago in rev 11, which I haven't released yet.
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
So this is what you've been up to. Guess v118 didn't end up working out? :(

Nice job though, hopefully you can end up getting pretty far on this as I'm curious to see the final result~ Good luck with the project :)
 
(O_o(o_O(O_O)o_O)O_o)
Loyal Member
Joined
Apr 9, 2009
Messages
1,088
Reaction score
322
So this is what you've been up to. Guess v118 didn't end up working out? :(

Nice job though, hopefully you can end up getting pretty far on this as I'm curious to see the final result~ Good luck with the project :)

Had waaay tomany problems getting any redirection method to work for v118. So I decided to do v140+ in order to get that out of the question ;). Also decided to take an allready updated base, since I still had problems with packets. This source however still has enough packet bugs for me to learn from ;) Allready cleaned up a few.

And that's also why im going to update it to v149.3, since i still want to update a source :D
 
Elite Diviner
Joined
May 4, 2011
Messages
491
Reaction score
105
Had waaay tomany problems getting any redirection method to work for v118. So I decided to do v140+ in order to get that out of the question ;). Also decided to take an allready updated base, since I still had problems with packets. This source however still has enough packet bugs for me to learn from ;) Allready cleaned up a few.

And that's also why im going to update it to v149.3, since i still want to update a source :D

Just as long as I get to mess around with your final v144 rev i'll be happy :D
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Had waaay tomany problems getting any redirection method to work for v118. So I decided to do v140+ in order to get that out of the question ;). Also decided to take an allready updated base, since I still had problems with packets. This source however still has enough packet bugs for me to learn from ;) Allready cleaned up a few.

And that's also why im going to update it to v149.3, since i still want to update a source :D

That's the best way to learn (in my opinion). That's how I learned packets too (fixing small ones in v117, and then I had updated my v142 to test myself since it needed a lot more work). A v149.3 huh? Nice, don't think there's any released v149 yet. ;P
 
Newbie Spellweaver
Joined
Jan 5, 2015
Messages
17
Reaction score
0
It seems I have the same issue as one friend.. But another one of my friends can connect.. Rip me

Whenever it injects the dll the menu to press play just gives "Maplestory has stopped responding"
I spent over like 3 days of googling and trying things attempting to fix this for a friend.. soo this will be fun
 
Last edited:
(O_o(o_O(O_O)o_O)O_o)
Loyal Member
Joined
Apr 9, 2009
Messages
1,088
Reaction score
322
It seems I have the same issue as one friend.. But another one of my friends can connect.. Rip me

Whenever it injects the dll the menu to press play just gives "Maplestory has stopped responding"
I spent over like 3 days of googling and trying things attempting to fix this for a friend.. soo this will be fun

You can allways try using a redirector. I've got replies from people that state about 1/50 people can't redirect with the injection method (idk why). I have a friend who built a redirector, based on hawt's release, and she was able to connect using that.
 
Initiate Mage
Joined
Dec 15, 2014
Messages
3
Reaction score
0
(bad eng) after bowmaster job4 use hurricane monster not die (bug) how to fix
 
(O_o(o_O(O_O)o_O)O_o)
Loyal Member
Joined
Apr 9, 2009
Messages
1,088
Reaction score
322
For people who want to edit rates more easily, and can't wait for the next revision to be released:

in ServerConfig.java, place this anywhere:
PHP:
/*Rates*/
    public static boolean fixedRates = true; //use same rates for all worlds
    public static final int EXP = 8; //exp rate (only works when fixedRates = true)
    public static final int MESO = 5; //meso rate (only works when fixedRates = true)
    public static final int DROP = 2; //drop rate (only works when fixedRates = true)
And replace WorldConstants.java with this:
PHP:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package constants;
import constants.ServerConfig;

/**
 *
 * @author Itzik
 */
public class WorldConstants {

    public static final int gmserver = -1; // -1 = no gm server

    /**
     *
     *  [USER=29396]WARNING[/USER]: World will be duplicated if it's the same as the gm server
     */
    public static enum WorldOption {

        Red(43, 10, 2, 2, (byte) 0, false, false, 19),
        Aether(42, 10, 2, 2, (byte) 0, false, false, 19),
        Ultimate(41, 1, 1, 1, (byte) 0, false, false, 19),
        Phanteon(40, 1, 1, 1, (byte) 0, false, false, 19),
        Tempest(39, 1, 1, 1, (byte) 0, false, false, 19),
        Raven(38, 1, 1, 1, (byte) 0, false, false, 19), //Translation: Raven
        Justice(37, 1, 1, 1, (byte) 0, false, false, 19), //Translation: Justice
        Elf(36, 1, 1, 1, (byte) 0, false, false, 19),
        Legends(35, 1, 1, 1, (byte) 0, false, false, 19),
        Titan(34, 1, 1, 1, (byte) 0, false, false, 19), //Translation: Titan
        Chaos2(33, 1, 1, 1, (byte) 0, false, false, 19), //Translation: Chaos
        Androa(23, 1, 1, 1, (byte) 0, false, false, 19),
        Cosmo(22, 1, 1, 1, (byte) 0, false, false, 19),
        Aster(21, 1, 1, 1, (byte) 0, false, false, 19),
        Kastia(20, 1, 1, 1, (byte) 0, false, false, 19),
        Judis(19, 1, 1, 1, (byte) 0, false, false, 19),
        Croa(18, 1, 1, 1, (byte) 0, false, false, 19),
        Azwan(17, 1, 1, 1, (byte) 0, false, false, 19),
        Regenades(16, 1, 1, 1, (byte) 2, false, false, 20, "New World!"),
        Nova(15, 1, 1, 1, (byte) 3, false, false, 20, "World Alliance:\rBellocan, Nova"),
        Chaos(14, 1, 1, 1, (byte) 0, false, false, 20, "World Alliance:\rMardia, Kradia,\rYellonde,Chaos"),
        Arcania(13, 1, 1, 1, (byte) 1, false, false, 20, "World Alliance:\rDemethos, Galicia, El Nido,\rZenith,Arcania"),
        Zenith(12, 1, 1, 1, (byte) 1, false, false, 20, "World Alliance:\rDemethos, Galicia, El Nido,\rZenith,Arcania"),
        ElNido(11, 1, 1, 1, (byte) 1, false, false, 20, "World Alliance:\rDemethos, Galicia, El Nido,\rZenith,Arcania"),
        Galicia(10, 1, 1, 1, (byte) 1, false, false, 20, "World Alliance:\rDemethos, Galicia, El Nido,\rZenith,Arcania"),
        Demethos(9, 1, 1, 1, (byte) 1, false, false, 20, "World Alliance:\rDemethos, Galicia, El Nido,\rZenith,Arcania"),
        Yellonde(8, 1, 1, 1, (byte) 0, false, false, 20, "World Alliance:\rMardia, Kradia,\rYellonde,Chaos"),
        Kradia(7, 1, 1, 1, (byte) 0, false, false, 20, "World Alliance:\rMardia, Kradia,\rYellonde,Chaos"),
        Mardia(6, 1, 1, 1, (byte) 0, false, false, 20, "World Alliance:\rMardia, Kradia,\rYellonde,Chaos"),
        Bellocan(5, 1, 1, 1, (byte) 3, false, false, 20, "World Alliance:\rBellocan, Nova"),
        Khaini(4, 1, 1, 1, (byte) 0, false, false, 20),
        Windia(3, 1, 1, 1, (byte) 0, false, false, 20),
        Broa(2, 100, 1000, 3, (byte) 1, false, false, 20, "Fun 100x rates! RBS!"),
        Bera(1, 1, 1, 1, (byte) 1, false, false, 20, "Low, GMS like rates!"),
        Scania(0, 8, 5, 2, (byte) 3, true, true, 20, "Default world!");
        private final int world, exp, meso, drop, channels;
        private final byte flag;
        private final boolean show, available;
        private final String worldtip;
        public static final byte recommended = (byte) Red.getWorld(); //-1 = no recommended
        public static final String recommendedmsg = "        Join " + getById(recommended).name() + ",       the newest world! (If you have friends who play, consider joining their world instead. Characters can`t move between worlds.)";

        WorldOption(int world, byte flag, boolean show, int channels) {
            this.world = world;
            this.exp = (ServerConfig.fixedRates ? ServerConfig.EXP : 8);
            this.meso = (ServerConfig.fixedRates ? ServerConfig.MESO : 5);
            this.drop = (ServerConfig.fixedRates ? ServerConfig.DROP : 2);
            this.flag = flag;
            this.show = show;
            this.available = show;
            this.channels = channels;
            this.worldtip = "";
        }

        WorldOption(int world, int exp, int meso, int drop, byte flag, boolean show, boolean available, int channels) {
            this.world = world;
            this.exp = (ServerConfig.fixedRates ? ServerConfig.EXP : exp);
            this.meso = (ServerConfig.fixedRates ? ServerConfig.MESO : meso);
            this.drop = (ServerConfig.fixedRates ? ServerConfig.DROP : drop);
            this.flag = flag;
            this.show = show;
            this.available = available;
            this.channels = channels;
            this.worldtip = "";
        }

        WorldOption(int world, int exp, int meso, int drop, byte flag, boolean show, boolean available, int channels, String worldtip) {
            this.world = world;
            this.exp = (ServerConfig.fixedRates ? ServerConfig.EXP : exp);
            this.meso = (ServerConfig.fixedRates ? ServerConfig.MESO : meso);
            this.drop = (ServerConfig.fixedRates ? ServerConfig.DROP : drop);
            this.flag = flag;
            this.show = show;
            this.available = available;
            this.channels = channels;
            this.worldtip = worldtip;
        }

        public int getWorld() {
            return world;
        }

        public int getExp() {
            return exp;
        }

        public int getMeso() {
            return meso;
        }

        public int getDrop() {
            return drop;
        }

        public byte getFlag() {
            return flag;
        }

        public boolean show() {
            return show;
        }

        public boolean isAvailable() {
            return available;
        }

        public int getChannelCount() {
            return channels;
        }

        public String getWorldTip() {
            return worldtip;
        }

        public static WorldOption getById(int g) {
            for (WorldOption e : WorldOption.values()) {
                if (e.world == g) {
                    return e;
                }
            }
            return null;
        }

        public static WorldOption getByName(String g) {
            for (WorldOption e : WorldOption.values()) {
                if (e.toString().equals(g)) {
                    return e;
                }
            }
            return null;
        }

        public static boolean isExists(int id) {
            return getById(id) != null;
        }
    }

    public static String getNameById(int serverid) {
        if (!WorldOption.isExists(serverid)) {
            System.out.println("World doesn't exists exception. ID: " + serverid);
            return "";
        }
        return WorldOption.getById(serverid).name();
    }

    public static enum TespiaWorldOption {

        Red("t43", 1, 1, 1, (byte) 0, true, true, 19),
        Aether("t42", 1, 1, 1, (byte) 0, true, true, 19),
        Ultimate("t41", 1, 1, 1, (byte) 0, true, false, 19),
        Phanteon("t40", 1, 1, 1, (byte) 0, true, false, 19),
        Tempest("t39", 1, 1, 1, (byte) 0, true, false, 19),
        Raven("t38", 1, 1, 1, (byte) 0, false, false, 19), //Translaition: Raven
        Justice("t37", 1, 1, 1, (byte) 0, false, false, 19), //Translaition: Justice
        Elf("t36", 1, 1, 1, (byte) 0, false, false, 19), //Translaition: Elf
        Legend("t35", 1, 1, 1, (byte) 0, false, false, 19), //Translaition: Legend
        T34("t34", 1, 1, 1, (byte) 0, false, false, 19),
        T33("t33", 1, 1, 1, (byte) 0, false, false, 19),
        Androa("t32", 1, 1, 1, (byte) 0, false, false, 19),
        Cosmo("t31", 1, 1, 1, (byte) 0, false, false, 19),
        Nova("t30", 1, 1, 1, (byte) 0, false, false, 19),
        Broa("t3", 1, 1, 1, (byte) 0, false, false, 19), //Translation: Broa
        Bera("t2", 1, 1, 1, (byte) 0, false, false, 19), //Translation: Bera
        Scania("t1", 1, 1, 1, (byte) 0, false, false, 19), //Translation: Scania
        Tespia("t0", 1, 1, 1, (byte) 0, true, false, 19);
        private final int exp, meso, drop, channels;
        private final byte flag;
        private final String world;
        private final boolean show, available;
        public static final String recommended = "t0";
        public static final String recommendedmsg = "        Join " + getById(recommended).name() + ",       the newest world! (If youhave friends who play, consider joining their worldinstead. Characters can`t move between worlds.)";

        TespiaWorldOption(String world, int exp, int meso, int drop, byte flag, boolean show, boolean available, int channels) {
            this.world = world;
            this.exp = exp;
            this.meso = meso;
            this.drop = drop;
            this.flag = flag;
            this.show = show;
            this.available = available;
            this.channels = channels;
        }

        public String getWorld() {
            return world;
        }

        public int getExp() {
            return exp;
        }

        public int getMeso() {
            return meso;
        }

        public int getDrop() {
            return drop;
        }

        public byte getFlag() {
            return flag;
        }

        public boolean show() {
            return show;
        }

        public boolean isAvailable() {
            return available;
        }

        public int getChannelCount() {
            return channels;
        }

        public static TespiaWorldOption getById(String g) {
            for (TespiaWorldOption e : TespiaWorldOption.values()) {
                if (e.world.equals(g)) {
                    return e;
                }
            }
            return null;
        }

        public static TespiaWorldOption getByName(String g) {
            for (TespiaWorldOption e : TespiaWorldOption.values()) {
                if (e.name().equals(g)) {
                    return e;
                }
            }
            return null;
        }

        public static boolean isExists(String id) {
            return getById(id) != null;
        }
    }

    public static String getTespiaNameById(String serverid) {
        if (!TespiaWorldOption.isExists(serverid)) {
            System.out.println("Tespia World doesn't exists exception. ID: " + serverid);
            return "";
        }
        return TespiaWorldOption.getById(serverid).name();
    }
}
 
Stay smart, be yourself
Joined
Sep 3, 2014
Messages
57
Reaction score
7
Great job!
I'ts going to help alot.
 
Newbie Spellweaver
Joined
Aug 9, 2012
Messages
84
Reaction score
20
Thank you for your work! This is a pretty cool source
 
(O_o(o_O(O_O)o_O)O_o)
Loyal Member
Joined
Apr 9, 2009
Messages
1,088
Reaction score
322
Hoping to release rev 11 tomorrow:

Done:
- Added totemfix (coklm2197)
- Better HP/MP gain (Mallissy)
- Hacky fix for dawn warrior falling moon (Mallissy)
- More Opcodes
- Added pet-food fix (xStr0nGx)
- Changes in MapleCharacter.java
- Added somevariables in DB for use in the new starterquest.
- Added ability to easily turn of red quests

Nearly done:
- Fixed some buffs not registering
 
Elite Diviner
Joined
May 4, 2011
Messages
491
Reaction score
105
If there's anything else i can help with I'd be glad to help
 
Newbie Spellweaver
Joined
Jan 7, 2015
Messages
49
Reaction score
0
I compiled in netbeans and everything worked and I copied it to my dist folder but when I run the server I get the "Could not find or load main class server.Start". What did I do wrong?



Nevermind, fixed it. I changed the user "administrator" in launch.bat to my own and it works now.



Ok, everything works except for iRedirectorX. I get the error that it fails to initialize even when I run it as admin. What's the issue?
 
(O_o(o_O(O_O)o_O)O_o)
Loyal Member
Joined
Apr 9, 2009
Messages
1,088
Reaction score
322
I compiled in netbeans and everything worked and I copied it to my dist folder but when I run the server I get the "Could not find or load main class server.Start". What did I do wrong?



Nevermind, fixed it. I changed the user "administrator" in launch.bat to my own and it works now.



Ok, everything works except for iRedirectorX. I get the error that it fails to initialize even when I run it as admin. What's the issue?

Download vc redist and .net framework 4.5. If that won't do the trick, nothing will. And you'll have to use a redirector.(won't work locally, use netsh int for local)



If there's anything else i can help with I'd be glad to help

Well, there's still so many things to do xD. Just anything you see, and manage to fix, is more then welcome. I don't have anything specific at this moment. Well, maybe, if you'd manage to figure out mech's that would be great! :D But anyway's all help is welcome and appreciated, you made some nice fixes allready!
 
Newbie Spellweaver
Joined
Jan 29, 2011
Messages
32
Reaction score
3
isn't 5062006

Add :) is work.

case 5062006: {
final Item item = c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem((byte) slea.readInt());
if (item != null && c.getPlayer().getInventory(MapleInventoryType.USE).getNumFreeSlot() >= 1) {
final Equip eq = (Equip) item;
if (eq.getState() >= 17) {
eq.renewPotential(6, 0, (short) 0, false);
c.getPlayer().getMap().broadcastMessage(CField.showPotentialReset(c.getPlayer().getId(), true, itemId));
c.getSession().write(InventoryPacket.scrolledItem(toUse, MapleInventoryType.EQUIP, item, false, true, false));
c.getPlayer().forceReAddItem_NoUpdate(item, MapleInventoryType.EQUIP);
MapleCharacter chr = c.getPlayer();
int tofind = 0;
if (chr.itemQuantity(2460003) > 0) {
tofind = 2460003;
} else if (chr.itemQuantity(2460002) > 0) {
tofind = 2460002;
} else if (chr.itemQuantity(2460001) > 0) {
tofind = 2460001;
} else if (chr.itemQuantity(2460000) > 0) {
tofind = 2460000;
}
if (tofind != 0) {
Item magnify = c.getPlayer().getInventory(MapleInventoryType.USE).findById(tofind);
if (magnifyEquip(c, magnify, item, (byte) item.getPosition())) {
MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, magnify.getPosition(), (short) 1, false);
c.getSession().write(CField.getGameMessage("A Magnifying Glass (Premium) has been used.", (short) 7));
} else {
c.getSession().write(CField.getGameMessage("A Magnifying Glass was not found. The equipment will stay as Hidden Potential.", (short) 7));
}
} else {
c.getSession().write(CField.getGameMessage("A Magnifying Glass was not found. The equipment will stay as Hidden Potential.", (short) 7));
}
MapleInventoryManipulator.addById(c, 2430759, (short) 1, "Cube" + " on " + FileoutputUtil.CurrentReadable_Date());
c.getSession().write(CField.enchantResult(tofind == 0 ? 1 : 1));//3
used = true;
} else {
c.getPlayer().dropMessage(5, "This item's Potential cannot be reset.");
}
} else {
c.getPlayer().getMap().broadcastMessage(CField.showPotentialReset(c.getPlayer().getId(), false, itemId));
c.getSession().write(CField.enchantResult(0));
}
break;
}
 
Newbie Spellweaver
Joined
Dec 11, 2011
Messages
37
Reaction score
0
็How to add more 5 channel. and I edit serverConfig.java name server ,serverMessage it not work.

And I want to npc job Advance.

Thank you very much .
 
Last edited:
Back
Top