예제 #1
0
 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);
     }
 }
예제 #2
0
 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);
 }
예제 #3
0
 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);
     }
 }
예제 #4
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);
 }