// 0 = public // 1 = lime // 2 = pink // 3 = orange // 4 = purple // 5 = green // 6 = magenta // 7 = gray // 8 = yellow // 9 = light yellow // A = cyan // B = white background // C = red // D = ligt blue background public static byte[] ChatMessage(short type, string message) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.ChatMsg); packet.WriteShort(type); packet.WriteMapleString(message); return packet.ToArray(); }
public static byte[] CheckDuplicatedID(string name, byte valid) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.CheckDuplicatedID); packet.WriteMapleString(name); packet.WriteByte(valid); return packet.ToArray(); }
public static byte[] NpcLeaveField(Npc npc) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.NpcLeaveField); packet.WriteInt(npc.mObjectID); return packet.ToArray(); }
public static byte[] WorldInformation(byte serverId, string worldName, byte flag, string eventmessage, short expPercent, short dropPercent, Dictionary<int, int> channels) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.WorldInformation); packet.WriteByte(serverId); packet.WriteMapleString(worldName); packet.WriteByte(flag); // 1 = event, 2 = new, 3 = hot time packet.WriteMapleString(eventmessage); packet.WriteShort(expPercent); packet.WriteShort(dropPercent); packet.WriteByte(0); packet.WriteByte(channels.Count); foreach (KeyValuePair<int, int> channel in channels) { packet.WriteMapleString(worldName + "-" + (channel.Key + 1)); packet.WriteInt(channel.Value * 100); // max is 1000 packet.WriteByte(0); packet.WriteByte(channel.Key); packet.WriteByte(0); } Dictionary<Point, string> chatBubbles = new Dictionary<Point, string>(); chatBubbles.Add(new Point(0, 265), "왛라오! ㅇㅇ"); chatBubbles.Add(new Point(500, 370), "ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ"); packet.WriteShort(chatBubbles.Count); foreach (KeyValuePair<Point, string> pair in chatBubbles) { packet.WriteShort(pair.Key.X); packet.WriteShort(pair.Key.Y); packet.WriteMapleString(pair.Value); } packet.WriteInt(0); return packet.ToArray(); }
public static byte[] SelectCharacter(byte primary, byte secondary, byte[] IP = null, ushort port = 0, int clientID = 0) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.SelectCharacter); packet.WriteByte(primary); packet.WriteByte(secondary); packet.WriteBytes(IP); packet.WriteShort(port); packet.WriteInt(clientID); packet.WriteByte(0); packet.WriteInt(0); packet.WriteByte(0); packet.WriteShort(0); packet.WriteShort(0); return packet.ToArray(); }
public static byte[] NewCharacter(Character chr) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.CreateNewCharacter); packet.WriteByte(0); AddCharacterEntry(packet, chr, true, false); return packet.ToArray(); }
public static byte[] LoginFailed(byte reason) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.CheckPassword); packet.WriteByte(reason); packet.WriteByte(0); packet.WriteInt(0); return packet.ToArray(); }
public static byte[] KeepAlive() { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.AliveReq); return packet.ToArray(); }
public static byte[] GMBoard(string url) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.GMBoard); packet.WriteInt(Environment.TickCount); // actually object id of some sort packet.WriteMapleString(url); return packet.ToArray(); }
public static byte[] UserEnterField(Character chr) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.UserEnterField); packet.WriteInt(chr.mID); packet.WriteByte(chr.mPrimaryStats.Level); packet.WriteMapleString(chr.mName); packet.WriteMapleString(""); // ultimate explourer packet.WriteMapleString(chr.mGuild.Name); packet.WriteShort(chr.mGuild.EmblemBG); packet.WriteByte(chr.mGuild.EmblemBGColour); packet.WriteShort(chr.mGuild.Emblem); packet.WriteByte(chr.mGuild.EmblemColour); int[] buffs = new int[8]; foreach (Buff buff in chr.mBuffs) buffs[buff.Position] |= buff.BuffID; //foreach (int i in buffs) // packet.WriteInt(i); // buffer 32 packet.WriteHexString("00 00 00 FE 00 00 A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "); //buff values packet.WriteInt(-1); // end buff values reading ? //packet.WriteByte(0); //packet.WriteByte(0); //packet.WriteByte(0); //packet.WriteByte(0); //packet.WriteBytes(new byte[4]); //packet.WriteBytes(new byte[4]); //packet.WriteByte(1); packet.WriteHexString("00 00 00 00 00 00 00 00 00 00 00 00 01"); packet.WriteInt(Environment.TickCount); packet.WriteShort(0); packet.WriteBytes(new byte[4]); packet.WriteBytes(new byte[4]); packet.WriteByte(1); packet.WriteInt(Environment.TickCount); packet.WriteShort(0); packet.WriteBytes(new byte[4]); packet.WriteBytes(new byte[4]); packet.WriteByte(1); packet.WriteInt(Environment.TickCount); packet.WriteShort(0); packet.WriteBytes(new byte[4]); packet.WriteBytes(new byte[4]); packet.WriteByte(1); packet.WriteInt(Environment.TickCount); packet.WriteBytes(new byte[4]); packet.WriteBytes(new byte[4]); packet.WriteByte(1); packet.WriteInt(Environment.TickCount); packet.WriteByte(1); packet.WriteInt(0); packet.WriteShort(0); packet.WriteBytes(new byte[4]); packet.WriteBytes(new byte[4]); packet.WriteByte(1); packet.WriteInt(Environment.TickCount); packet.WriteInt(0); packet.WriteInt(0); packet.WriteBytes(new byte[4]); packet.WriteBytes(new byte[4]); packet.WriteByte(1); packet.WriteInt(Environment.TickCount); packet.WriteShort(0); packet.WriteShort(chr.mPrimaryStats.Job); packet.WriteShort(0); Global.AddAvatarData(packet, chr); packet.WriteInt(0); packet.WriteBytes(new byte[12]); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteShort(chr.mPosition.X); packet.WriteShort(chr.mPosition.Y); packet.WriteByte(chr.mStance); // chr.mStance packet.WriteShort(chr.mFoothold); packet.WriteByte(0); packet.WriteByte(0); packet.WriteByte(1); packet.WriteByte(0); packet.WriteInt(1); // mount level packet.WriteInt(0); // mount exp packet.WriteInt(0); // mount fatigue packet.WriteByte(0); // ``Announce Box'' packet.WriteByte(0); // Chalk Board Global.AddRingData(packet, chr); Global.AddRingData(packet, chr); Global.AddRingData(packet, chr); packet.WriteByte(0); // berserk packet.WriteInt(0); packet.WriteByte(0); // new year cards packet.WriteInt(0); return packet.ToArray(); }
public static byte[] PublicChatMessage(int cidfrom, string msg, bool whitebg, bool hide) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.PublicChatMsg); packet.WriteInt(cidfrom); packet.WriteBool(whitebg); packet.WriteMapleString(msg); packet.WriteBool(hide); return packet.ToArray(); }
public static byte[] PlayerLeaveField(int cid) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.PlayerLeaveField); packet.WriteInt(cid); return packet.ToArray(); }
public static byte[] UpdatePrimaryStat(Dictionary<PrimaryStat, int> stats, bool itemReaction = false, Character chr = null) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.SetTemporaryStat); packet.WriteBool(itemReaction); long mask = 0; foreach (var stat in stats) mask |= ((long)stat.Key); packet.WriteLong(mask); foreach (var stat in stats) switch (stat.Key) { case PrimaryStat.Null: break; default: packet.WriteInt(stat.Value); break; } if (mask == 0 && !itemReaction) packet.WriteByte(1); packet.WriteByte(0); packet.WriteByte(0); return packet.ToArray(); }
public static byte[] SetField(Client c, bool connecting = false) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.SetField); packet.WriteShort(2); packet.WriteInt(1); packet.WriteInt(0); packet.WriteInt(2); packet.WriteInt(0); packet.WriteInt(Program.mServer.ServerId); packet.WriteByte(0); packet.WriteInt(0); packet.WriteByte(1); packet.WriteInt(0); packet.WriteBool(connecting); if (!connecting) { packet.WriteInt(c.mCharacter.mField); packet.WriteByte(c.mCharacter.mFieldPosition); packet.WriteInt(c.mCharacter.mPrimaryStats.HP); packet.WriteByte(0); packet.WriteLong(c.mAccount.SessionID); packet.WriteInt(100); packet.WriteByte(0); packet.WriteByte(0); return packet.ToArray(); } packet.WriteShort(0); packet.WriteInt(unchecked((int)(0xF05A5CB3))); // rand packet.WriteInt(unchecked((int)(0xF05A5CB3))); // rand packet.WriteInt(unchecked((int)(0xF05A5CB3))); // rand ulong flagmask = (unchecked((ulong)-1)); flagmask = (flagmask & 0xFFFFFFFFF0FFFFFF) | ((ulong)0x01 << 24); flagmask = (flagmask & 0xFFFFFFF0FFFFFFFF) | ((ulong)0x0D << 32); flagmask = (flagmask & 0x0FFFFFFFFFFFFFFF) | ((ulong)0x01 << 60); packet.WriteLong(unchecked((long)flagmask)); // flags? packet.WriteByte(0); packet.WriteByte(0); packet.WriteInt(0); packet.WriteByte(0); Global.AddCharacterData(packet, c.mCharacter); packet.WriteByte(0x0A); // buddylist cap packet.WriteByte(0); // blessing of fairy packet.WriteByte(0); // blessing of empress packet.WriteByte(0); // ultimate explorer Global.AddInventoryData(packet, c.mCharacter); Global.AddSkillData(packet, c.mCharacter); Global.AddQuestData(packet, c.mCharacter); //Global.AddRingData(packet, c.mCharacter);//01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 packet.WriteShort(0); // rings...something like that ? packet.WriteShort(0); // rings...something like that ? packet.WriteShort(0); // rings...something like that ? packet.WriteShort(0); // rings...something like that ? //FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B Global.AddRockData(packet, c.mCharacter); //00 00 00 00 00 00 00 FF FF FF FF Global.AddMonsterBookData(packet, c.mCharacter); packet.WriteShort(0); packet.WriteShort(0); //AddPartyQuestData(packet, c.mCharacter); packet.WriteShort(0); packet.WriteShort(0); packet.WriteShort(0); for (int i = 0; i < 17; ++i) packet.WriteInt(0); packet.WriteInt(0); packet.WriteByte(1); packet.WriteShort(0); packet.WriteShort(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteLong(0x1CD6E06D3A75370); packet.WriteInt(100); packet.WriteByte(0); packet.WriteByte(1); return packet.ToArray(); }
public static byte[] CheckUserLimit(int mod0, int mod1) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.CheckUserLimit); packet.WriteByte(mod0); // popup 0 = none, 1 = high, 2 =max packet.WriteByte(mod1); return packet.ToArray(); }
public static byte[] DeleteCharacter(int cid, int mode) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.DeleteCharacter); packet.WriteInt(cid); packet.WriteByte(mode); // 0 = okay, 12 = invalid birthday, 14 = invalid pic return packet.ToArray(); }
//public static byte[] UserMove(int cid, Point start, List<IMovePath> movement) //{ // var packet = new PacketWriter(); // packet.WriteOpcode(SendOps.UserMove); // packet.WriteInt(cid); // packet.WritePos(start); // packet.WriteBytes(new byte[4]); // packet.WriteByte(movement.Count); // foreach (IMovePath move in movement) // move.Encode(packet); // return packet.ToArray(); //} public static byte[] UserMove(int cid, Point start, byte[] movement) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.UserMove); packet.WriteInt(cid); packet.WritePos(start); packet.WriteBytes(movement); return packet.ToArray(); }
public static byte[] LastConnectedWorld(int world) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.LatestConnectedWorld); packet.WriteInt(world); return packet.ToArray(); }
public static byte[] BadPic() { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.CheckSPW); packet.WriteByte(0); return packet.ToArray(); }
public static byte[] LoginSuccess(Client c) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.CheckPassword); packet.WriteByte(0); packet.WriteByte(0); packet.WriteInt(0); packet.WriteInt(c.AccountId); packet.WriteByte(0); // Gender packet.WriteByte(c.Admin); packet.WriteShort(0); // GM Mask packet.WriteByte(0); packet.WriteMapleString(c.Username); packet.WriteByte(3); packet.WriteByte(c.TradeBlock); packet.WriteLong(c.TradeBlockExpiration); packet.WriteByte(1); packet.WriteLong(0); // Creation date. That's not important! packet.WriteInt(0x0C); // Tooltip bubble at World/Channel select packet.WriteByte(1); // Use SessionID packet.WriteByte(1); packet.WriteLong(c.SessionID); return packet.ToArray(); }
public static byte[] Blocked(byte reason, long time) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.CheckPassword); packet.WriteByte(2); packet.WriteByte(0); packet.WriteInt(0); packet.WriteByte(reason); packet.WriteLong(time); return packet.ToArray(); }
public static byte[] RecommendWorldMessage() { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.RecommendWorldMessage); Dictionary<int, string> messages = new Dictionary<int, string>(); messages.Add(0, "There is only one world, so I'm not sure why you are clicking this button.\r\n\r\n설치 겐투♥"); packet.WriteByte(messages.Count); foreach (KeyValuePair<int, string> pair in messages) { packet.WriteInt(pair.Key); packet.WriteMapleString(pair.Value); } return packet.ToArray(); }
public static byte[] BroadcastMessage(byte type, string message) { int channel = 0; bool megaEar = true; var packet = new PacketWriter(); packet.WriteOpcode(SendOps.BroadcastMsg); packet.WriteByte(type); if (type == 4) packet.WriteByte(1); if (type != 23 && type != 24) packet.WriteMapleString(message); switch (type) { case 3: // Super Megaphone case 22: // Skull Megaphone case 25: case 26: packet.WriteByte(channel - 1); packet.WriteByte(megaEar ? 1 : 0); break; case 9: // Like Item Megaphone (Without Item) packet.WriteByte(channel - 1); break; case 12: // Weather Effect packet.WriteInt(channel); // item id break; case 6: case 11: case 20: packet.WriteInt(channel >= 1000000 && channel < 6000000 ? channel : 0); // Item Id //E.G. All new EXP coupon {Ruby EXP Coupon} is now available in the Cash Shop! break; case 24: packet.WriteShort(0); // ? break; } return packet.ToArray(); }
public static byte[] ViewAllCharacters(List<Character> characters) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.ViewAllChar); packet.WriteByte(0x03); packet.WriteBool(false); return packet.ToArray(); /* if (characters.Count < 1) { packet.WriteByte(0x04); return packet.ToArray(); } packet.WriteByte(0x00); packet.WriteByte(0x00); // world id packet.WriteByte(characters.Count); for (int i = 0; i < characters.Count; ++i) { AddCharacterEntry(packet, characters[i], false, true); } packet.WriteByte(0x01); // pic return packet.ToArray();*/ }
public static byte[] CharacterLoadout(User.Client client) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.WorldSelect); // 0B 00 00 00 01 00 03 00 00 00 00 00 00 00 D0 5E CD 01 D0 CF E2 DD packet.WriteByte(0); packet.WriteByte(client.Characters.Count); foreach (Character chr in client.Characters) { AddCharacterEntry(packet, chr); } //packet.WriteHexString("6E B9 79 00 6D 65 72 63 65 64 65 73 65 77 00 00 00 00 0C 4D 50 00 00 AD 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 D2 07 0C 00 05 00 04 00 04 00 32 00 00 00 32 00 00 00 05 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70 C9 3F 36 00 00 00 00 00 00 00 00 05 A2 ED 77 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 68 95 CC 02 F0 FB D7 0D 0B 3B 37 4F 01 00 40 E0 FD 00 0C 4D 50 00 00 D2 07 00 00 00 AD 82 00 00 05 50 06 10 00 07 87 5D 10 00 0B 76 39 17 00 37 20 E2 11 00 FF FF 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 22 7F 27 00 BB 05 00 00 94 4E 00 00 39 00 00 00 6F B9 79 00 6D 65 72 63 65 64 65 73 65 75 00 00 00 00 0C 45 50 00 00 AD 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 D2 07 0C 00 05 00 04 00 04 00 32 00 00 00 32 00 00 00 05 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70 C9 3F 36 00 DB 01 00 00 00 00 00 05 A2 ED 77 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 58 04 00 00 BD 7D 20 CD 01 D0 54 06 40 00 0C 45 50 00 00 D2 07 00 00 00 AD 82 00 00 05 50 06 10 00 07 87 5D 10 00 0B 76 39 17 00 37 20 E2 11 00 FF FF 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 22 7F 27 00 BB 05 00 00 94 4E 00 00 39 00 00 00"); packet.WriteByte(1); // second password set packet.WriteByte(0); // ? packet.WriteInt(3); // character slots packet.WriteInt(0); // ``click-here'' cash shop slots. overwrites free character slots, however the location vector is wrong. return packet.ToArray(); }
public static byte[] WorldInformationEnd() { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.WorldInformation); packet.WriteByte(0xFF); return packet.ToArray(); }
public static byte[] NpcEnterField(Npc npc, bool show = true) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.NpcEnterField); packet.WriteInt(npc.mObjectID); packet.WriteInt(npc.mID); packet.WriteShort(npc.mX); packet.WriteShort(npc.mCy); packet.WriteByte(Math.Abs(npc.mF - 1)); packet.WriteShort(npc.mFh); packet.WriteShort(npc.mRx0); packet.WriteShort(npc.mRx1); packet.WriteBool(show); // visible return packet.ToArray(); }