internal void WriteInitial(Packet pPacket) { List<PlayerQuest> active = new List<PlayerQuest>(mQuests.Values); active.RemoveAll(q => q.Completed != 0); pPacket.WriteUShort((ushort)active.Count); foreach (PlayerQuest quest in active) { pPacket.WriteUShort(quest.QuestIdentifier); pPacket.WriteString(quest.State); } List<PlayerQuest> completed = new List<PlayerQuest>(mQuests.Values); completed.RemoveAll(q => q.Completed == 0); pPacket.WriteUShort((ushort)completed.Count); foreach (PlayerQuest quest in completed) { pPacket.WriteInt(quest.QuestIdentifier); pPacket.WriteLong(quest.Completed); } }
internal void SendMapChange() { Packet packet = new Packet(EOpcode.SMSG_MAP_CHANGE); packet.WriteInt(0); packet.WriteInt(2); packet.WriteInt(mMap.Data.Identifier); packet.WriteByte(mSpawn); packet.WriteUShort(mHealth); packet.WriteByte(0x00); packet.WriteLong(DateTime.Now.Ticks); mClient.SendPacket(packet); }
public void WriteGeneral(Packet pPacket, bool pRealSlot) { if (mInventorySlot != 0) { if (pRealSlot) pPacket.WriteShort(mInventorySlot); else { byte slot = (byte)Math.Abs(mInventorySlot); if (slot > 100) slot -= 100; pPacket.WriteByte(slot); } } pPacket.WriteByte((byte)(mInventoryType == EInventoryType.Equipment ? 0x01 : 0x02)); pPacket.WriteInt(mItemIdentifier); pPacket.WriteByte(0x00); pPacket.WriteLong(0); if (mInventoryType == EInventoryType.Equipment) { pPacket.WriteByte(mUnusedScrollSlots); pPacket.WriteByte(mUsedScrollSlots); pPacket.WriteUShort(mStrength); pPacket.WriteUShort(mDexterity); pPacket.WriteUShort(mIntellect); pPacket.WriteUShort(mLuck); pPacket.WriteUShort(mHealth); pPacket.WriteUShort(mMana); pPacket.WriteUShort(mWeaponAttack); pPacket.WriteUShort(mMagicAttack); pPacket.WriteUShort(mWeaponDefense); pPacket.WriteUShort(mMagicDefense); pPacket.WriteUShort(mAccuracy); pPacket.WriteUShort(mAvoidance); pPacket.WriteUShort(mHands); pPacket.WriteUShort(mSpeed); pPacket.WriteUShort(mJump); pPacket.WriteString(mOwner); pPacket.WriteUShort(mFlags); pPacket.WriteByte(0x00); pPacket.WriteByte(0x00); pPacket.WriteUShort(0); pPacket.WriteUShort(0); pPacket.WriteUInt(0); pPacket.WriteLong(-1); pPacket.WriteLong(0); // 0040E0FD3B374F01 pPacket.WriteInt(-1); } else { pPacket.WriteUShort(mQuantity); pPacket.WriteString(mOwner); pPacket.WriteUShort(mFlags); if (ItemData.IsRechargeable(ItemData.GetType(mItemIdentifier))) pPacket.WriteLong(0); } }
internal void SendInitialMapChange() { Packet packet = new Packet(EOpcode.SMSG_MAP_CHANGE); packet.WriteUInt(0); packet.WriteByte(0x01); packet.WriteByte(0x01); packet.WriteUShort(0); packet.WriteInt(mRandom.Next()); packet.WriteInt(mRandom.Next()); packet.WriteInt(mRandom.Next()); packet.WriteInt(-1); packet.WriteInt(-1); packet.WriteInt(mIdentifier); packet.WritePaddedString(mName, 13); packet.WriteByte(mGender); packet.WriteByte(mSkin); packet.WriteInt(mEyesIdentifier); packet.WriteInt(mHairIdentifier); packet.WriteSkip(24); packet.WriteByte(mLevel); packet.WriteUShort(mJob); packet.WriteUShort(mStrength); packet.WriteUShort(mDexterity); packet.WriteUShort(mIntellect); packet.WriteUShort(mLuck); packet.WriteUShort(mHealth); packet.WriteUShort(mMaxHealth); packet.WriteUShort(mMana); packet.WriteUShort(mMaxMana); packet.WriteUShort(mAbilityPoints); packet.WriteUShort(mSkillPoints); packet.WriteInt(mExperience); packet.WriteUShort(mFame); packet.WriteUInt(0); packet.WriteInt(mMap.Data.Identifier); packet.WriteByte(mSpawn); packet.WriteUInt(0); packet.WriteByte(mBuddies.MaxBuddies); mItems.WriteInitial(packet); mSkills.WriteInitial(packet); mQuests.WriteInitial(packet); packet.WriteUInt(0); packet.WriteUInt(0); mTeleports.WriteInitial(packet); mCards.WriteInitial(packet); packet.WriteUInt(0); packet.WriteUShort(0); packet.WriteLong(DateTime.Now.ToBinary()); mClient.SendPacket(packet); }