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!

Balrog ship packet (V83) :/

Newbie Spellweaver
Joined
May 13, 2012
Messages
26
Reaction score
0
I'm working on GMs-Like Server,
The boat is working all fine unless one thing that i find this thing important, the balrog ship.
Well in Global when Balrogs summoned. They always came with a ship.
I can't call my server a GMs-Like if it doesn't do the same thing in my server.
I'm not working with IDA so i cant see the packet for my self. if someone already has it/can give me the correct structure and post it here it will be helpful ><
Thanks for reading.
 
That one pokemon thing
Loyal Member
Joined
Apr 3, 2010
Messages
1,766
Reaction score
621
If I recall correctly, the balrog ship is a separate packet that you have to trigger server-wise (be it in the boat packet itsself, or afterwards). I'm not very sure what it was called, though.
 
Upvote 0
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Kevin had already posted these on another thread. I had already pointed out as well that you send it on the OnContiMove packet.

Here's mine, I commented what I had used for the ships. 10 for target is the invasion, and 4/5 is appear/disappear for them. In your source I think this is called boatPacket but I could be wrong because they have two headers.

Incase you need the headers for v83:
Code:
private static final short CONTI_MOVE = 0x94;
    private static final short CONTI_STATE = 0x95;

Code:
public static MaplePacket OnContiMove(byte nTarget, byte nFlag) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
        mplew.writeShort(CONTI_MOVE);
        mplew.write(nTarget); // nTarget: [10 = Invasion Entrance]
        mplew.write(nFlag); // nFlag: [10 = 4: Balrog Appear, 5: Balrog Disappear]
        return mplew.getPacket();
    }
    
    public static MaplePacket OnContiState(byte nTarget, byte nFlag) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
        mplew.writeShort(CONTI_STATE);
        mplew.write(nTarget); // nTarget: [1 = Arrive], [2 = Go]
        mplew.write(nFlag); // nFlag: haven't checked, sending 1 works for all
        return mplew.getPacket();
    }
 
Upvote 0
Newbie Spellweaver
Joined
May 13, 2012
Messages
26
Reaction score
0
Kevin had already posted these on another thread. I had already pointed out as well that you send it on the OnContiMove packet.

Here's mine, I commented what I had used for the ships. 10 for target is the invasion, and 4/5 is appear/disappear for them. In your source I think this is called boatPacket but I could be wrong because they have two headers.

Incase you need the headers for v83:
Code:
private static final short CONTI_MOVE = 0x94;
    private static final short CONTI_STATE = 0x95;

Code:
public static MaplePacket OnContiMove(byte nTarget, byte nFlag) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
        mplew.writeShort(CONTI_MOVE);
        mplew.write(nTarget); // nTarget: [10 = Invasion Entrance]
        mplew.write(nFlag); // nFlag: [10 = 4: Balrog Appear, 5: Balrog Disappear]
        return mplew.getPacket();
    }
    
    public static MaplePacket OnContiState(byte nTarget, byte nFlag) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
        mplew.writeShort(CONTI_STATE);
        mplew.write(nTarget); // nTarget: [1 = Arrive], [2 = Go]
        mplew.write(nFlag); // nFlag: haven't checked, sending 1 works for all
        return mplew.getPacket();
    }

Thank you Very Much <3.
And thanks everybody who answered my thread <3,
I'll try it now ;), im pretty sure it should work.
 
Last edited:
Upvote 0
Junior Spellweaver
Joined
Mar 16, 2013
Messages
167
Reaction score
19
this is what I have done for my server:
Code:
public void setSingleAnimation(int animation, MapleCharacter chr) {
        if(animation == 1) { //Boat arrive
            chr.getClient().announce(MaplePacketCreator.boatPacketFree((byte) 12,(byte) 6));
        }
        if(animation == 2) { //Boat leaving
            chr.getClient().announce(MaplePacketCreator.boatPacketFree((byte) 8,(byte) 2));
        }
        if(animation == 3) { //Balrog arrive
            chr.getClient().announce(MaplePacketCreator.boatPacketFree((byte) 10,(byte) 4));
        }
        if(animation == 4) { //Balrog leaving
            chr.getClient().announce(MaplePacketCreator.boatPacketFree((byte) 10,(byte) 5));
        }
    }

public static byte[] boatPacketFree(byte first, byte second) {
        final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
        mplew.writeShort(SendOpcode.CONTI_MOVE.getValue());
        mplew.write(first);
        mplew.write(second);
        return mplew.getPacket();
    }
I think you still have my skype. I am that guy from braziliam server. I have a lot of GMS like content, and I think we can share knowledge
 
Upvote 0
Back
Top