Example #1
0
        public static void GetGuardianEquippedItem(BinaryReader reader, int WhoAmI)
        {
            byte PlayerID        = reader.ReadByte();
            int  MyGuardianPosID = reader.ReadInt32();
            int  Slot            = reader.ReadInt32();
            int  NetId           = reader.ReadInt32();
            byte Prefix          = (byte)(NetId == 0 ? 0 : reader.ReadByte());
            int  Stack           = (NetId == 0 ? 0 : reader.ReadInt32());
            Item i = new Item();

            i.netDefaults(NetId);
            i.Prefix(Prefix);
            i.stack = Stack;
            ItemIO.ReceiveModData(i, reader);
            Player player = Main.player[PlayerID];

            if (PlayerID == Main.myPlayer)
            {
                return;
            }
            PlayerMod pm = player.GetModPlayer <PlayerMod>();

            if (!pm.MyGuardians.ContainsKey(MyGuardianPosID))
            {
                return;
            }
            pm.MyGuardians[MyGuardianPosID].Equipments[Slot] = i;
            if (Main.netMode == 2)
            {
                SendGuardianEquippedItem(pm, MyGuardianPosID, Slot, -1, WhoAmI);
            }
        }
Example #2
0
 public override void HandleCommand(BinaryReader reader, int playerNumber)
 {
     if (Main.netMode == 2)
     {
         int  plr     = reader.ReadByte();
         var  id      = reader.ReadInt16();
         var  nettype = reader.ReadInt16();
         var  prefix  = reader.ReadByte();
         var  stack   = reader.ReadInt16();
         var  player  = Main.player[plr];
         Item item    = new Item();
         item.SetDefaults(nettype);
         item.Prefix(prefix);
         item.stack = stack;
         ItemIO.ReceiveModData(item, reader);
         if (!player.active)
         {
             return;
         }
         var splayer = player.GetServerPlayer();
         lock (player)
         {
             if (stack < 0)
             {
                 stack = 0;
             }
             int k = setItem(player, id, item);
             NetMessage.SendData(5, -1, -1, null, plr, k, (float)prefix, 0f, 0, 0, 0);
         }
     }
 }
Example #3
0
        public override void HandleCommand(BinaryReader reader, int playerNumber)
        {
            if (Main.netMode == 2)
            {
                string name    = reader.ReadString();
                var    id      = reader.ReadByte();
                var    nettype = reader.ReadInt16();
                var    prefix  = reader.ReadByte();
                var    stack   = reader.ReadInt16();
                var    player  = ServerSideCharacter2.PlayerCollection.Get(name);
                var    sender  = Main.player[playerNumber].GetServerPlayer();

                Item item = new Item();
                item.SetDefaults(nettype);
                item.Prefix(prefix);
                item.stack = stack;
                ItemIO.ReceiveModData(item, reader);
                if (player == null)
                {
                    sender.SendInfoMessage("玩家不存在", Color.Red);
                    return;
                }
                lock (player)
                {
                    if (stack < 0)
                    {
                        stack = 0;
                    }
                    player.SetInventory(id, item);
                }
            }
        }
 public override void HandleCommand(BinaryReader reader, int playerNumber)
 {
     if (Main.netMode == 2)
     {
         CommandBoardcast.ConsoleMessage("受到玩家请求离线玩家背包");
         int plr     = reader.ReadInt32();
         var splayer = ServerSideCharacter2.PlayerCollection.Get(plr);
         var sender  = Main.player[playerNumber].GetServerPlayer();
         if (splayer == null)
         {
             sender.SendInfoMessage("找不到这个玩家", Color.Red);
             return;
         }
         if (splayer.IsLogin && splayer.PrototypePlayer != null && splayer.PrototypePlayer.active)
         {
             sender.SendInfoMessage("该玩家在线,请使用资料页面查看背包");
             return;
         }
         var p = ServerSideCharacter2.Instance.GetPacket();
         p.Write((int)SSCMessageType.GetEquipsOffline);
         var list = splayer.GetInventory();
         p.Write(splayer.Name);
         p.Write((byte)list.Count);
         for (int i = 0; i < list.Count; i++)
         {
             p.Write((short)list[i].netID);
             p.Write((short)list[i].stack);
             p.Write((byte)list[i].prefix);
             ItemIO.SendModData(list[i], p);
         }
         p.Send(playerNumber);
     }
     else
     {
         var         name = reader.ReadString();
         int         num  = reader.ReadByte();
         List <Item> list = new List <Item>();
         for (int i = 0; i < num; i++)
         {
             int  type   = reader.ReadInt16();
             int  stack  = reader.ReadInt16();
             int  prefix = reader.ReadByte();
             Item item   = new Item();
             item.netDefaults(type);
             item.stack = stack;
             item.Prefix(prefix);
             ItemIO.ReceiveModData(item, reader);
             list.Add(item);
         }
         lock (PlayerInventoryState2.Instance)
         {
             ServerSideCharacter2.GuiManager.OpenInventory2();
             PlayerInventoryState2.Instance.GetInventory(name, list);
         }
     }
 }