void acceptor_OnClientConnected(Session session) { Logger.Write(Logger.LogTypes.연결, "클라이언트 {0} 연결됨", session.Socket.RemoteEndPoint.ToString()); Random rand = new Random(); int riv = rand.Next(); int siv = rand.Next(); session.RIV = new MapleCrypto(BitConverter.GetBytes(riv), Config.MajorVersion); session.SIV = new MapleCrypto(BitConverter.GetBytes(siv), Config.MajorVersion); PacketWriter packet = new PacketWriter(); packet.WriteShort(0); packet.WriteShort(Config.MajorVersion); packet.WriteShort(1); packet.WriteByte(0x31); packet.WriteInt(riv); packet.WriteInt(siv); packet.WriteByte(0x08); packet.SetShort(0, packet.Length - 2); session.SendRawPacket(packet.ToArray()); Client c = new Client(session); mGameServer.Clients.Add(c); }
public static byte[] GuildInfo(int cid, int gid) { var packet = new PacketWriter(); packet.WriteCenterServerOpcode(CenterRecvOps.GuildOperation); packet.WriteInt(cid); packet.WriteInt(gid); return packet.ToArray(); }
public static byte[] RequestMigrate(int Accountid, int cid, int channel) { PacketWriter packet = new PacketWriter(); packet.WriteCenterServerOpcode(CenterRecvOps.Migrate); packet.WriteInt(Accountid); packet.WriteInt(cid); packet.WriteInt(channel); return packet.ToArray(); }
public static byte[] Migrate(int accid, int cid, byte[] ip, ushort port) { PacketWriter packet = new PacketWriter(); packet.WriteCenterServerOpcode(CenterSendOps.Migrate); packet.WriteInt(accid); packet.WriteInt(cid); packet.WriteBytes(ip); packet.WriteShort(port); return packet.ToArray(); }
public static void AddAvatarData(PacketWriter packet, Character chr, bool IsMegaphone = false) { packet.WriteByte(chr.mGender); packet.WriteByte(chr.mSkin); packet.WriteInt(chr.mFace); packet.WriteInt(chr.mPrimaryStats.Job); packet.WriteBool(IsMegaphone); packet.WriteInt(chr.mHair); AddEquipData(packet, chr); if (chr.mPrimaryStats.Job >= 3001 && chr.mPrimaryStats.Job <= 3112) // demon slayer packet.WriteInt(chr.mPrimaryStats.DemonSlayerAccessory); }
public static void AddCharacterEntry(PacketWriter packet, Character chr, bool IsNew = false, bool VAC = false) { AddPlayerStats(packet, chr); AddAvatarData(packet, chr); if (!VAC) packet.WriteByte(0); // >.< packet.WriteBool(!IsNew); if (!IsNew) { packet.WriteInt(chr.mWorldPos + 5); packet.WriteInt(chr.mWorldPos + 5 - chr.mWorldOldPos); packet.WriteInt(chr.mJobPos + 5); packet.WriteInt(chr.mJobPos + 5 - chr.mJobOldPos); } }
public static byte[] IdentifySuccess(int id) { PacketWriter packet = new PacketWriter(); packet.WriteCenterServerOpcode(CenterSendOps.IdentifySuccess); packet.WriteInt(id); return packet.ToArray(); }
public static byte[] ConnectedClients(byte server, int count) { PacketWriter packet = new PacketWriter(); packet.WriteCenterServerOpcode(CenterRecvOps.ClientCount); packet.WriteByte(server); packet.WriteInt(count); return packet.ToArray(); }
void _Acceptor_OnClientConnected(Session session) { Logger.Write(Logger.LogTypes.연결, "opened connection with {0}", session.Socket.RemoteEndPoint.ToString()); session.RIV = new MapleCrypto(new byte[4], Common.Config.MajorVersion); session.SIV = new MapleCrypto(new byte[4], Common.Config.MajorVersion); PacketWriter packet = new PacketWriter(); packet.WriteShort(0); packet.WriteShort(Common.Config.MajorVersion); packet.WriteShort(1); packet.WriteByte(0x31); packet.WriteInt(0); packet.WriteInt(0); packet.WriteByte(0x08); packet.SetShort(0, packet.Length - 2); session.SendRawPacket(packet.ToArray()); GameServerConnection con = new GameServerConnection(session); _ConnectedClients.Add(con); }
public static byte[] ChannelLoad() { PacketWriter packet = new PacketWriter(); packet.WriteCenterServerOpcode(CenterSendOps.ChannelLoad); List<GameServer> chans = new List<GameServer>(); foreach (GameServer serv in Program.mServer.gameServers.Values) { if (serv.ServerType == GameServerType.Game) chans.Add(serv); } packet.WriteByte(chans.Count); foreach (GameServer serv in chans) { packet.WriteByte(serv.ID); packet.WriteInt(serv.ClientCount); } return packet.ToArray(); }
public static byte[] GuildOperation(int cid, Guild guild) { var packet = new PacketWriter(); packet.WriteCenterServerOpcode(CenterSendOps.GuildOperation); packet.WriteInt(cid); packet.WriteInt(guild.GuildID); packet.WriteMapleString(guild.Name ?? string.Empty); packet.WriteInt(guild.Point); packet.WriteInt(guild.MemberCap); packet.WriteShort(guild.EmblemBG); packet.WriteShort(guild.EmblemBGColour); packet.WriteShort(guild.Emblem); packet.WriteShort(guild.EmblemColour); packet.WriteInt(guild.Members.Length); foreach (var member in guild.Members) { packet.WriteInt(member.CharacterID); packet.WriteInt(member.Grade); } return packet.ToArray(); }
public static void AddEquipData(PacketWriter packet, Character chr) { foreach (KeyValuePair<sbyte, AbstractItem> pair in chr.mInventory[0]) { if (pair.Key < -100) continue; packet.WriteByte(Math.Abs(pair.Key)); packet.WriteInt(pair.Value.ItemId); } packet.WriteByte(-1); foreach (KeyValuePair<sbyte, AbstractItem> pair in chr.mInventory[0]) { if (pair.Key > -100) continue; packet.WriteByte(Math.Abs(pair.Key)); packet.WriteInt(pair.Value.ItemId); } packet.WriteByte(-1); packet.WriteInt(0); packet.WriteBool(chr.mPrimaryStats.Job / 100 == 23); // mercedes for (int i = 0; i < 3; ++i) packet.WriteInt(0); // pet itemid }
public static void AddInventoryData(PacketWriter packet, Character chr) { packet.WriteInt(chr.mMeso); packet.WriteInt(0); packet.WriteByte(96); // equip slots packet.WriteByte(96); // consume slot cap packet.WriteByte(96); // install slot cap packet.WriteByte(96); // etc slot cap packet.WriteByte(96); // cash slot cap packet.WriteInt(0); packet.WriteInt(0); foreach (AbstractItem item in chr.mInventory[0].Values.Where(item => item.Position > -100)) AddItemData(packet, item); packet.WriteShort(0); // end equipped foreach (AbstractItem item in chr.mInventory[0].Values.Where(item => item.Position < -100)) AddItemData(packet, item); packet.WriteShort(0); // end cash equipped foreach (AbstractItem item in chr.mInventory[1].Values) AddItemData(packet, item); packet.WriteShort(0); // end equip packet.WriteShort(0); // end evan equipped packet.WriteShort(0); // end mech equipped packet.WriteShort(0); // end android equipped foreach (AbstractItem item in chr.mInventory[2].Values) AddItemData(packet, item); packet.WriteByte(0); // end consume foreach (AbstractItem item in chr.mInventory[3].Values) AddItemData(packet, item); packet.WriteByte(0); // end install foreach (AbstractItem item in chr.mInventory[4].Values) AddItemData(packet, item); packet.WriteByte(0); // end etc foreach (AbstractItem item in chr.mInventory[5].Values) AddItemData(packet, item); packet.WriteByte(0); // end cash packet.WriteInt(-1); packet.WriteInt(0); packet.WriteInt(0); packet.WriteByte(0); //05 00 01 15 DF 0F 00 00 00 80 05 BB 46 E6 17 02 FF FF FF FF 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 40 E0 FD 3B 37 4F 01 FF FF FF FF //06 00 01 2D 2D 10 00 00 00 80 05 BB 46 E6 17 02 FF FF FF FF 07 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 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 40 E0 FD 3B 37 4F 01 FF FF FF FF //07 00 01 A6 5B 10 00 00 00 80 05 BB 46 E6 17 02 FF FF FF FF 05 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 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 40 E0 FD 3B 37 4F 01 FF FF FF FF //0B 00 01 F0 DD 13 00 00 00 80 05 BB 46 E6 17 02 FF FF FF FF 07 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 40 E0 FD 3B 37 4F 01 FF FF FF FF //37 00 01 20 E2 11 00 00 00 80 05 BB 46 E6 17 02 FF FF FF FF 00 00 01 00 01 00 01 00 01 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 01 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 40 E0 FD 3B 37 4F 01 FF FF FF FF }
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[] 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[] 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 void AddRockData(PacketWriter packet, Character chr) { for (int i = 0; i < 5; ++i) packet.WriteInt(999999999); for (int i = 0; i < 10; ++i) packet.WriteInt(999999999); for (int i = 0; i < 13; ++i) packet.WriteInt(999999999); for (int i = 0; i < 13; ++i) packet.WriteInt(999999999); }
public static void AddPlayerStats(PacketWriter packet, Character chr) { packet.WriteInt(chr.mID); packet.WriteStringPad(chr.mName, 0, 13); packet.WriteByte(chr.mGender); packet.WriteByte(chr.mSkin); packet.WriteInt(chr.mFace); packet.WriteInt(chr.mHair); for (int i = 0; i < 3; ++i) packet.WriteLong(0); // pet serial numbers packet.WriteByte(chr.mPrimaryStats.Level); packet.WriteShort(chr.mPrimaryStats.Job); packet.WriteShort(chr.mPrimaryStats.Str); packet.WriteShort(chr.mPrimaryStats.Dex); packet.WriteShort(chr.mPrimaryStats.Int); packet.WriteShort(chr.mPrimaryStats.Luk); packet.WriteInt(chr.mPrimaryStats.HP); packet.WriteInt(chr.mPrimaryStats.MaxHP); packet.WriteInt(chr.mPrimaryStats.MP); packet.WriteInt(chr.mPrimaryStats.MaxMP); packet.WriteShort(chr.mPrimaryStats.AP); if (Tools.is_extendsp_job(chr.mPrimaryStats.Job)) { int length = 0; for (int i = 0; i < chr.mPrimaryStats.SP.Length; ++i) if (chr.mPrimaryStats.SP[i] > 0) length++; packet.WriteByte(length); for (int i = 0; i < chr.mPrimaryStats.SP.Length; ++i) if (chr.mPrimaryStats.SP[i] > 0) { packet.WriteByte(i + 1); packet.WriteByte(chr.mPrimaryStats.SP[i]); } } else { packet.WriteShort(chr.mPrimaryStats.SP[0]); } packet.WriteInt(chr.mPrimaryStats.EXP); packet.WriteInt(chr.mPrimaryStats.Fame); packet.WriteInt(0); // gacha exp according to other sources packet.WriteInt(chr.mMap); packet.WriteByte(chr.mMapPosition); packet.WriteInt(0); // time played in seconds according to other sources if (chr.mPrimaryStats.Job >= 430 && chr.mPrimaryStats.Job <= 434) // dual blade packet.WriteShort(1); else if (chr.mPrimaryStats.Job >= 530 && chr.mPrimaryStats.Job <= 532) // cannoneer packet.WriteShort(2); else packet.WriteShort(0); if (chr.mPrimaryStats.Job >= 3001 && chr.mPrimaryStats.Job <= 3112) // demon slayer packet.WriteInt(chr.mPrimaryStats.DemonSlayerAccessory); packet.WriteByte(chr.mPrimaryStats.Fatigue); packet.WriteInt(0); // time (year month day 00) 8 digets packet.WriteInt(chr.mTraits.Ambition); packet.WriteInt(chr.mTraits.Insight); packet.WriteInt(chr.mTraits.Willpower); packet.WriteInt(chr.mTraits.Diligence); packet.WriteInt(chr.mTraits.Empathy); packet.WriteInt(chr.mTraits.Charm); packet.WriteShort(chr.mTraits.AmbitionGained); packet.WriteShort(chr.mTraits.InsightGained); packet.WriteShort(chr.mTraits.WillpowerGained); packet.WriteShort(chr.mTraits.DiligenceGained); packet.WriteShort(chr.mTraits.EmpathyGained); packet.WriteShort(chr.mTraits.CharmGained); packet.WriteInt(chr.mPrimaryStats.BattleEXP); packet.WriteByte(chr.mPrimaryStats.BattleRank); packet.WriteInt(chr.mPrimaryStats.BattlePoints); packet.WriteByte(5); packet.WriteInt(0); // could always just write a buffer of 8, but oh well lol packet.WriteInt((int)(DateTime.Now.ToFileTime() >> 32)); // FileTime.dwHighDateTime packet.WriteInt((int)(DateTime.Now.ToFileTime() << 32 >> 32)); // FileTime.dwLowDateTime }
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[] 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[] 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(); }
//0005 01 000FDF15 00 00-00-00-00-00-00-00-00 FFFFFFFF 07 00 0000 0000 0000 0000 0000 0000 0000 0000 0003 0000 0000 0000 0000 0000 0000 "Ij#z쨳" 0000 //00 01 00000000 FFFFFFFF 00000000 0000 00 00 0000 0000 0000 0000 0000 0000 FFFF FFFF FFFF 00-00-00-00-00-00-00-00 00-40-E0-FD-3B-37-4F-01 FFFFFFFF public static void AddItemData(PacketWriter packet, AbstractItem aitem) { Equip eitem = null; Item item = null; if (aitem.Position < 0) eitem = (Equip)aitem; else item = (Item)aitem; if (eitem == null) packet.WriteByte(item.Position); else packet.WriteShort(Math.Abs(eitem.Position)); packet.WriteByte(eitem == null ? 2 : 1); packet.WriteInt(aitem.ItemId); packet.WriteByte(aitem.cash); if (aitem.cash > 0) packet.WriteLong(aitem.specialID); packet.WriteLong(aitem.Expiration); packet.WriteInt(-1); if (eitem != null) { packet.WriteByte(eitem.PossibleUpgrades); packet.WriteByte(0); // level packet.WriteShort(eitem.Str); packet.WriteShort(eitem.Dex); packet.WriteShort(eitem.Int); packet.WriteShort(eitem.Luk); packet.WriteShort(eitem.IncHP); packet.WriteShort(eitem.IncMP); packet.WriteShort(eitem.Watk); packet.WriteShort(eitem.Matk); packet.WriteShort(eitem.Wdef); packet.WriteShort(eitem.Mdef); packet.WriteShort(eitem.Accuracy); packet.WriteShort(eitem.Avoid); packet.WriteShort(0); // hands packet.WriteShort(eitem.Speed); packet.WriteShort(eitem.Jump); packet.WriteMapleString(eitem.Owner); packet.WriteShort(eitem.Flag); packet.WriteByte(0); // skill packet.WriteByte(1); // base level packet.WriteInt(0); // item exp packet.WriteInt(-1); // eitem.Durability packet.WriteInt(0); // vicious packet.WriteShort(0); // pvp damage packet.WriteByte(eitem.State); packet.WriteByte(eitem.Enhancements); packet.WriteShort(eitem.Pot1); if (eitem.specialID == 0) { packet.WriteShort(eitem.Pot2); packet.WriteShort(eitem.Pot3); packet.WriteShort(eitem.Pot4); packet.WriteShort(eitem.Pot5); } packet.WriteShort(eitem.SocketMask); packet.WriteShort(-1); // eitem.Socket1 packet.WriteShort(-1); // eitem.Socket2 packet.WriteShort(-1); // eitem.Socket3 packet.WriteLong(0); // inventory id packet.WriteLong(0x217E57D909BC000); packet.WriteInt(-1); } else { packet.WriteShort(item.Quantity); packet.WriteMapleString(item.Owner); packet.WriteShort(item.Flag); //packet.WriteLong(-1); // if is bullet/star } }
//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 void AddSkillData(PacketWriter packet, Character chr) { /* packet.WriteByte(0); packet.WriteShort(0); packet.WriteShort(0); packet.WriteShort(0); packet.WriteShort(0); packet.WriteShort(0); packet.WriteShort(0); packet.WriteShort(0);*/ List<Skill> cooldowns = new List<Skill>(); packet.WriteByte(1); packet.WriteShort(chr.mSkills.Count); foreach (Skill s in chr.mSkills) { if (s.Cooldown > DateTime.Now.ToFileTime()) cooldowns.Add(s); packet.WriteInt(s.SkillID); packet.WriteInt(s.SkillLevel); packet.WriteLong(s.Expiration); if (s.MasterLevel != 0) packet.WriteInt(s.SkillMastery); } packet.WriteShort(cooldowns.Count); foreach (Skill s in cooldowns) { packet.WriteInt(s.SkillID); packet.WriteShort(DateTime.FromFileTime(s.Cooldown).Subtract(DateTime.Now).Seconds); } }
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[] LastConnectedWorld(int world) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.LatestConnectedWorld); packet.WriteInt(world); 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[] 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 void AddMonsterBookData(PacketWriter packet, Character chr) { packet.WriteInt(0); packet.WriteByte(0); packet.WriteShort(0); packet.WriteInt(-1); }