• 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.

Android Stuck

Newbie Spellweaver
Joined
Dec 26, 2014
Messages
64
Reaction score
2
Does anyone know a fix for android getting stucked on another person's view. Though you see the android still following you .
 
Newbie Spellweaver
Joined
Dec 26, 2014
Messages
64
Reaction score
2
Mind helping me with alittle more tips ? I can't seem to find AndroidMovement & I've checked SummonHandler still no signs of anything related to Android.
 
Upvote 0
(O_o(o_O(O_O)o_O)O_o)
Loyal Member
Joined
Apr 9, 2009
Messages
1,088
Reaction score
322
Mind helping me with alittle more tips ? I can't seem to find AndroidMovement & I've checked SummonHandler still no signs of anything related to Android.

Hmmm, what are you using?

Most sources have like:

An entire file called MapleAndroid.java,

A bunch of SendOps (v144 example),
PHP:
ANDROID_SPAWN((short) 0x19D),//178
    ANDROID_MOVE((short) 0x19E),//179
    ANDROID_EMOTION((short) 0x19F),//17A
    ANDROID_UPDATE((short) 0x1A0),//17B
    ANDROID_DEACTIVATED((short) 0x1A1), //17C

Movement in PlayerHandler.java:
PHP:
public static void MoveAndroid(LittleEndianAccessor slea, MapleClient c, MapleCharacter chr) {
        slea.skip(8);// <-- this line can give trouble, for example it has to be increased in v144 to make androids move for others.
        final List<LifeMovementFragment> res = MovementParse.parseMovement(slea, 3);
       

        if ((res != null) && (chr != null) && (!res.isEmpty()) && (chr.getMap() != null) && (chr.getAndroid() != null)) {
            Point pos = new Point(chr.getAndroid().getPos());
            chr.getAndroid().updatePosition(res);
            chr.getMap().broadcastMessage(chr, CField.moveAndroid(chr.getId(), pos, res), false);
        }
    }

Then in CField there are the actual packets:
PHP:
public static byte[] spawnAndroid(MapleCharacter cid, MapleAndroid android) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.ANDROID_SPAWN.getValue());
        mplew.writeInt(cid.getId());
        mplew.write(android.getItemId() == 1662006 ? 5 : android.getItemId() - 1661999);
        mplew.writePos(android.getPos());
        mplew.write(android.getStance());
        mplew.writeShort(0);
        mplew.writeShort(0);
        mplew.writeShort(android.getHair() - 30000);
        mplew.writeShort(android.getFace() - 20000);
        mplew.writeMapleAsciiString(android.getName());
        for (short i = -1200; i > -1207; i = (short) (i - 1)) {
            Item item = cid.getInventory(MapleInventoryType.EQUIPPED).getItem(i);
            mplew.writeInt(item != null ? item.getItemId() : 0);
        }

        return mplew.getPacket();
    }

    public static byte[] moveAndroid(int cid, Point pos, List<LifeMovementFragment> res) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
        mplew.writeShort(SendPacketOpcode.ANDROID_MOVE.getValue());
        mplew.writeInt(cid);
        mplew.writeInt(0);
        mplew.writePos(pos);
        mplew.writeInt(2147483647);
        PacketHelper.serializeMovementList(mplew, res);
        return mplew.getPacket();
    }

Ofc there is a lot more, but this is what you should be focussing on for the movement problem.
 
Last edited:
Upvote 0
Newbie Spellweaver
Joined
Dec 26, 2014
Messages
64
Reaction score
2
I'm on v117.2 right now which I doubt there's a "MapleAndroid" file o.o Or am I just dumb..



Ok I'm blind. I thank you so much Novak !
 
Upvote 0
Back
Top