• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

[Request] Field Limits

Joined
Sep 2, 2010
Messages
393
Reaction score
10
Anyone know where I can find field limit blocks? Like those little packets that blocks players from using skills in event maps except for GMs? I literally can't find it anywhere and GM's are treated like regular players and can't use any skills or movement speed boost in JQ/Event maps.
 
Joined
Apr 10, 2008
Messages
4,087
Reaction score
1,264
Here's one I found on field 910000000 (Free Market) in the v147.1 WZ files. Also, I'm pretty sure this belongs to the WZ section as it's client-sided.

BestSiteEvar - [Request] Field Limits - RaGEZONE Forums
 
Upvote 0
Joined
Sep 2, 2010
Messages
393
Reaction score
10
Here's one I found on field 910000000 (Free Market) in the v147.1 WZ files. Also, I'm pretty sure this belongs to the WZ section as it's client-sided.

BestSiteEvar - [Request] Field Limits - RaGEZONE Forums
Isn't there one in the source though? Something like a packet being sent every time a player enters an event map or something and they can't use any skills and lose all movement speed?
 
Upvote 0
Custom Title Activated
Loyal Member
Joined
Jun 30, 2008
Messages
3,451
Reaction score
1,616
Isn't there one in the source though? Something like a packet being sent every time a player enters an event map or something and they can't use any skills and lose all movement speed?
It's all client sided. You'll have to enable the gm byte on login, so GM's aren't like regular players.

Also:
PHP:
/*
	This file is part of the OdinMS Maple Story Server
    Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
                       Matthias Butz <matze@odinms.de>
                       Jan Christian Meyer <vimes@odinms.de>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License 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 server.maps;

/**
 *
 * @author kevintjuh93
 */
public enum FieldOpt {
    MOVE_LIMIT(0x01),
    SKILL_LIMIT(0x02),
    SUMMON_LIMIT(0x04),
    MYSTIC_DOOR_LIMIT(0x08),
    MIGRATE_LIMIT(0x10),
    PORTAL_SCROLL_LIMIT(0x40),
    MINIGAME_LIMIT(0x80),
    SPECIFIC_PORTAL_SCROLL_LIMIT(0x100),
    TAMING_MOB_LIMIT(0x200),
    STAT_CHANGE_ITEM_CONSUME_LIMIT(0x400),
    PARTY_BOSS_CHANGE_LIMIT(0x800),
    NO_MOB_CAPACITY_LIMIT(0x1000),
    WEDDING_INVITATION_LIMIT(0x2000),
    CASH_WEATHER_CONSUME_LIMIT(0x4000),
    NO_PET(0x8000),
    ANTI_MACRO_LIMIT(0x10000),
    FALL_DOWN_LIMIT(0x20000),
    SUMMON_NPC_LIMIT(0x40000),
    NO_EXP_DECREASE(0x80000),
    NO_DAMAGE_ON_FALLING(0x100000),
    PARCEL_OPEN_LIMIT(0x200000),
    DROP_LIMIT(0x400000),
    ROCKETBOOSTER_LIMIT(0x800000)//lol we don't even have mechanics <3
    ;
    private long i;

    private FieldOpt(long i) {
        this.i = i;
    }

    public long getValue() {
        return i;
    }

    public boolean check(int fieldlimit) {
        return (fieldlimit & i) == i;
    }
}
 
Upvote 0
Joined
Sep 2, 2010
Messages
393
Reaction score
10
It's all client sided. You'll have to enable the gm byte on login, so GM's aren't like regular players.

Also:
PHP:
/*
	This file is part of the OdinMS Maple Story Server
    Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
                       Matthias Butz <matze@odinms.de>
                       Jan Christian Meyer <vimes@odinms.de>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License 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 server.maps;

/**
 *
 * @author kevintjuh93
 */
public enum FieldOpt {
    MOVE_LIMIT(0x01),
    SKILL_LIMIT(0x02),
    SUMMON_LIMIT(0x04),
    MYSTIC_DOOR_LIMIT(0x08),
    MIGRATE_LIMIT(0x10),
    PORTAL_SCROLL_LIMIT(0x40),
    MINIGAME_LIMIT(0x80),
    SPECIFIC_PORTAL_SCROLL_LIMIT(0x100),
    TAMING_MOB_LIMIT(0x200),
    STAT_CHANGE_ITEM_CONSUME_LIMIT(0x400),
    PARTY_BOSS_CHANGE_LIMIT(0x800),
    NO_MOB_CAPACITY_LIMIT(0x1000),
    WEDDING_INVITATION_LIMIT(0x2000),
    CASH_WEATHER_CONSUME_LIMIT(0x4000),
    NO_PET(0x8000),
    ANTI_MACRO_LIMIT(0x10000),
    FALL_DOWN_LIMIT(0x20000),
    SUMMON_NPC_LIMIT(0x40000),
    NO_EXP_DECREASE(0x80000),
    NO_DAMAGE_ON_FALLING(0x100000),
    PARCEL_OPEN_LIMIT(0x200000),
    DROP_LIMIT(0x400000),
    ROCKETBOOSTER_LIMIT(0x800000)//lol we don't even have mechanics <3
    ;
    private long i;

    private FieldOpt(long i) {
        this.i = i;
    }

    public long getValue() {
        return i;
    }

    public boolean check(int fieldlimit) {
        return (fieldlimit & i) == i;
    }
}
Enabling the gm byte on login through playerloggedinhandler (interserver for higher versions)? How would I send the byte though? I'm just a little lost because I have NEVER edited the field limit before because it was already done.
 
Upvote 0
Newbie Spellweaver
Joined
Aug 2, 2012
Messages
7
Reaction score
0
I have the same problem, which byte do you edit in the getAuth packet
 
Upvote 0
Joined
Sep 2, 2010
Messages
393
Reaction score
10
Thank you Sunny and Kevin, got it working.



I have the same problem, which byte do you edit in the getAuth packet
These are found in LoginPacket.java for v117. These worked perfectly so far, hopefully I did these correct. If i'm wrong please correct me.
PHP:
public static final byte[] getAuthSuccessRequest(MapleClient client) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.LOGIN_STATUS.getValue());
        mplew.writeZeroBytes(6);
        mplew.writeInt(client.getAccID());
        mplew.write(client.isGm() ? 1 : 0);
        mplew.write(client.isGm() ? 1 : 0);
        mplew.write(0);
        mplew.write(0);
        mplew.writeShort(0);
        mplew.write(0);
        mplew.writeMapleAsciiString(client.getAccountName());
        mplew.write(2);
        mplew.write(0);
        mplew.writeLong(0L);
        mplew.write(0);
        mplew.writeLong(0L);
        mplew.writeInt(0);
        mplew.writeShort(257);
        mplew.writeInt(0);
        mplew.writeInt(0);
        return mplew.getPacket();
    }
PHP:
public static final byte[] getSecondAuthSuccess(MapleClient client) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.LOGIN_SECOND.getValue());
        mplew.write(0);
        mplew.writeInt(client.getAccID());
        mplew.write(client.isGm() ? 1 : 0);
        mplew.write(client.isGm() ? 1 : 0);
        mplew.writeZeroBytes(5);
        mplew.writeMapleAsciiString(client.getAccountName());
        mplew.writeLong(2L);
        mplew.writeZeroBytes(3);
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(28);
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(Randomizer.nextInt());
        mplew.write(1);

        return mplew.getPacket();
    }



Whoops, the method works but I can't drop mesos or items anymore. I get a message about "The admin can't drop items/The admin can't throw away the money".

These are the methods if anyone needs them. I have already tried switching them between 1 and 0 countless times. Sometimes it works but I still move slow in special maps and vice versa.
PHP:
public static final byte[] getAuthSuccessRequest(MapleClient client) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.LOGIN_STATUS.getValue());
        mplew.writeZeroBytes(6);
        mplew.writeInt(client.getAccID());
        mplew.write(client.getGender());
        mplew.write(client.isGm() ? 1 : 0); // Admin byte - Find, Trade, etc.
        mplew.write(client.isGm() ? 1 : 0); // Admin byte - Commands
        mplew.writeShort(0);
        mplew.write(0);
        mplew.write(0);
        mplew.writeMapleAsciiString(client.getAccountName());
        mplew.write(2);
        mplew.write(0);
        mplew.writeLong(0L);
        mplew.write(0);
        mplew.writeLong(0L);
        mplew.writeInt(0);
        mplew.writeShort(257);
        mplew.writeInt(0);
        mplew.writeInt(0);
        return mplew.getPacket();
    }
    
    public static final byte[] getSecondAuthSuccess(MapleClient client) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.LOGIN_SECOND.getValue());
        mplew.write(0);
        mplew.writeInt(client.getAccID());
        mplew.write(client.getGender());
        mplew.write(client.isGm() ? 1 : 0); // Admin byte - Find, Trade, etc.
        mplew.write(client.isGm() ? 1 : 0); // Admin byte - Commands
        mplew.writeZeroBytes(5);
        mplew.writeMapleAsciiString(client.getAccountName());
        mplew.writeLong(2L);
        mplew.writeZeroBytes(3);
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(28);
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(Randomizer.nextInt());
        mplew.write(1);

        return mplew.getPacket();
    }
 
Upvote 0
Custom Title Activated
Loyal Member
Joined
Jun 30, 2008
Messages
3,451
Reaction score
1,616
Thank you Sunny and Kevin, got it working.




These are found in LoginPacket.java for v117. These worked perfectly so far, hopefully I did these correct. If i'm wrong please correct me.
PHP:
public static final byte[] getAuthSuccessRequest(MapleClient client) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.LOGIN_STATUS.getValue());
        mplew.writeZeroBytes(6);
        mplew.writeInt(client.getAccID());
        mplew.write(client.isGm() ? 1 : 0);
        mplew.write(client.isGm() ? 1 : 0);
        mplew.write(0);
        mplew.write(0);
        mplew.writeShort(0);
        mplew.write(0);
        mplew.writeMapleAsciiString(client.getAccountName());
        mplew.write(2);
        mplew.write(0);
        mplew.writeLong(0L);
        mplew.write(0);
        mplew.writeLong(0L);
        mplew.writeInt(0);
        mplew.writeShort(257);
        mplew.writeInt(0);
        mplew.writeInt(0);
        return mplew.getPacket();
    }
PHP:
public static final byte[] getSecondAuthSuccess(MapleClient client) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.LOGIN_SECOND.getValue());
        mplew.write(0);
        mplew.writeInt(client.getAccID());
        mplew.write(client.isGm() ? 1 : 0);
        mplew.write(client.isGm() ? 1 : 0);
        mplew.writeZeroBytes(5);
        mplew.writeMapleAsciiString(client.getAccountName());
        mplew.writeLong(2L);
        mplew.writeZeroBytes(3);
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(28);
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(Randomizer.nextInt());
        mplew.write(1);

        return mplew.getPacket();
    }



Whoops, the method works but I can't drop mesos or items anymore. I get a message about "The admin can't drop items/The admin can't throw away the money".

These are the methods if anyone needs them. I have already tried switching them between 1 and 0 countless times. Sometimes it works but I still move slow in special maps and vice versa.
PHP:
public static final byte[] getAuthSuccessRequest(MapleClient client) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.LOGIN_STATUS.getValue());
        mplew.writeZeroBytes(6);
        mplew.writeInt(client.getAccID());
        mplew.write(client.getGender());
        mplew.write(client.isGm() ? 1 : 0); // Admin byte - Find, Trade, etc.
        mplew.write(client.isGm() ? 1 : 0); // Admin byte - Commands
        mplew.writeShort(0);
        mplew.write(0);
        mplew.write(0);
        mplew.writeMapleAsciiString(client.getAccountName());
        mplew.write(2);
        mplew.write(0);
        mplew.writeLong(0L);
        mplew.write(0);
        mplew.writeLong(0L);
        mplew.writeInt(0);
        mplew.writeShort(257);
        mplew.writeInt(0);
        mplew.writeInt(0);
        return mplew.getPacket();
    }
    
    public static final byte[] getSecondAuthSuccess(MapleClient client) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.LOGIN_SECOND.getValue());
        mplew.write(0);
        mplew.writeInt(client.getAccID());
        mplew.write(client.getGender());
        mplew.write(client.isGm() ? 1 : 0); // Admin byte - Find, Trade, etc.
        mplew.write(client.isGm() ? 1 : 0); // Admin byte - Commands
        mplew.writeZeroBytes(5);
        mplew.writeMapleAsciiString(client.getAccountName());
        mplew.writeLong(2L);
        mplew.writeZeroBytes(3);
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(28);
        mplew.writeInt(Randomizer.nextInt());
        mplew.writeInt(Randomizer.nextInt());
        mplew.write(1);

        return mplew.getPacket();
    }
You'll have to modify the client in order to achieve what you want. So I think you should just deal with it.
 
Upvote 0
Back
Top