Esempio n. 1
0
        public static void OnDropItem(WorldClient client, INetPacketStream packet)
        {
            var dropItemPacket = new DropItemPacket(packet);
            var inventoryEvent = new InventoryDropItemEventArgs(dropItemPacket.ItemId, dropItemPacket.ItemQuantity);

            client.Player.NotifySystem <InventorySystem>(inventoryEvent);
        }
Esempio n. 2
0
        public void SendDropItem(Item item, int slot)
        {
            GameAudioManager.Instance.PlaySoundEffect(GameSound.DropItem);
            DropItemPacket itemDrop = new DropItemPacket()
            {
                Player            = Id,
                ItemId            = item.Id,
                ItemInventorySlot = slot,
                Position          = Position
            };

            ClientPacketHandler.Instance.SendPacketSerializable(PacketType.DropItem, itemDrop, DeliveryMethod.ReliableUnordered);
        }
Esempio n. 3
0
        public void DropItemTo(int itemId, int itemAmount, Vector2 position)
        {
            DropItemPacket dropItemPacket = new DropItemPacket()
            {
                Player     = Id,
                ItemId     = itemId,
                ItemAmount = itemAmount,
                Position   = position
            };

            if (ServerItemDatabase.Instance.ItemCollection[itemId].Stackable)
            {
                groundItemManager.PlayerDropItem(dropItemPacket, AssociatedPeer, false, itemAmount);
            }
            else
            {
                for (int i = 0; i < itemAmount; i++)
                {
                    groundItemManager.PlayerDropItem(dropItemPacket, AssociatedPeer, false, 1);
                }
            }
        }
Esempio n. 4
0
 public void fireReceiveDropItem(DropItemPacket r)
 {
     onReceiveDropItem?.Invoke(r);
 }
Esempio n. 5
0
 public void OnDropItem(IWorldClient client, DropItemPacket packet)
 {
     _inventorySystem.DropItem(client.Player, packet.ItemUniqueId, packet.ItemQuantity);
 }
Esempio n. 6
0
        public static void FReceiveGamePacket(IGamerEntity gamer, Dictionary <byte, object> packet, out SimWorld world)
        {
            foreach (byte key in packet.Keys)
            {
                if (!Enum.TryParse(key.ToString(), out EServerGameCode code))
                {
                    //LogProxy.WriteError($"Parse EServerGameCode fail, Value:{key}");
                    continue;
                }

                switch (code)
                {
                //遊戲正式開始
                case EServerGameCode.GameStart:
                    if (!gamer.input.IsStartGame)
                    {
                        gamer.input.IsStartGame = true;
                        gamer.input.SetLevel(GamerInput.Level.Gaming);
                        //LogProxy.WriteLine($"EServerGameCode.GameStart({gamer.account.Info.Name})");
                    }
                    break;

                //遊戲訊息
                case EServerGameCode.GamerInfo:
                    break;

                //遊戲結果
                case EServerGameCode.GameResult:
                    Console.WriteLine("Receive game result.");
                    //LogProxy.WriteLine($"EServerGameCode.GameResult({gamer.account.Info.Name})");
                    gamer.input.IsOverGame = true;
                    break;
                }
            }

            EnvironmentPacket?PacketEnv = null;

            GameEvent[]               PacketGameEvent  = null;
            DropItemPacket            PacketDropItem   = null;
            int?                      PacketBonuspot   = null;
            GameResultPacket          PacketGameResult = null;
            GamersPacket              PacketGamersInfo = null;
            object                    PacketBroadcast  = null;
            string                    PacketPureData   = null;
            object                    PacketGameStart  = null;
            Dictionary <string, byte> PacketGamerSlots = null;

            byte[] PacketGMGamer   = null;
            int?   PacketCountDown = null;
            float? PacketGameTime  = null;

            foreach (var key in packet.Keys)
            {
                if (!Enum.TryParse(key.ToString(), out EServerGameCode code))
                {
                    continue;
                }
                switch (code)
                {
                case EServerGameCode.Environment:
                    PacketEnv = (EnvironmentPacket)packet[key];
                    break;

                case EServerGameCode.GameEvent:
                    PacketGameEvent = (GameEvent[])packet[key];
                    break;

                case EServerGameCode.DropItem:
                    PacketDropItem = (DropItemPacket)packet[key];
                    break;

                case EServerGameCode.Bonuspot:
                    PacketBonuspot = (int)packet[key];
                    break;

                case EServerGameCode.GameResult:
                    PacketGameResult = (GameResultPacket)packet[key];
                    break;

                case EServerGameCode.GamerInfo:
                    PacketGamersInfo = (GamersPacket)packet[key];
                    break;

                case EServerGameCode.Broadcast:
                    PacketBroadcast = packet[key];
                    break;

                case EServerGameCode.PureData:
                    PacketPureData = (string)packet[key];
                    break;

                case EServerGameCode.GameStart:
                    PacketGameStart = packet[key];
                    break;

                case EServerGameCode.GamerSlots:
                    PacketGamerSlots = (Dictionary <string, byte>)packet[key];
                    break;

                case EServerGameCode.RMGamer:
                    PacketGMGamer = (byte[])packet[key];
                    break;

                case EServerGameCode.CountDown:
                    PacketCountDown = (int)packet[key];
                    break;

                case EServerGameCode.GameTime:
                    PacketGameTime = (float)packet[key];
                    break;
                }
            }

            if (PacketEnv != null)
            {
                gamer.fireReceiver.fireReceiveEnvironment(PacketEnv.Value);
            }
            if (PacketGameEvent != null)
            {
                gamer.fireReceiver.fireReceiveGameEvent(PacketGameEvent);
            }
            if (PacketDropItem != null)
            {
                gamer.fireReceiver.fireReceiveDropItem(PacketDropItem);
            }
            if (PacketBonuspot != null)
            {
                gamer.fireReceiver.fireReceiveBonuspot(PacketBonuspot.Value);
            }
            if (PacketGameResult != null)
            {
                gamer.fireReceiver.fireReceiveGameResult(PacketGameResult);
            }
            if (PacketGamersInfo != null)
            {
                gamer.fireReceiver.fireReceiveGamerInfo(PacketGamersInfo);
            }
            if (PacketBroadcast != null)
            {
                gamer.fireReceiver.fireReceiveBroadcast(PacketBroadcast);
            }
            if (PacketPureData != null)
            {
                gamer.fireReceiver.fireReceivePureData(PacketPureData);
            }
            if (PacketGameStart != null)
            {
                gamer.fireReceiver.fireReceiveGameStart(PacketGameStart);
            }
            if (PacketGamerSlots != null)
            {
                gamer.fireReceiver.fireReceiveGamerSlots(PacketGamerSlots);
            }
            if (PacketGMGamer != null)
            {
                gamer.fireReceiver.fireReceiveGMGamer(PacketGMGamer);
            }
            if (PacketCountDown != null)
            {
                gamer.fireReceiver.fireReceiveCountDown(PacketCountDown.Value);
            }
            if (PacketGameTime != null)
            {
                gamer.fireReceiver.fireReceiveGameTime(PacketGameTime.Value);
            }

            world = new SimWorld();
            if (PacketEnv != null)
            {
                world.Environment = PacketEnv.Value;
            }
            if (PacketGameEvent != null)
            {
                world.GameEvent = PacketGameEvent;
            }
            if (PacketDropItem != null)
            {
                world.DropItem = PacketDropItem;
            }
            if (PacketBonuspot != null)
            {
                world.Bonuspot = PacketBonuspot.Value;
            }
            if (PacketGameResult != null)
            {
                world.GameResult = PacketGameResult;
            }
            if (PacketGamersInfo != null)
            {
                world.GamerInfo = PacketGamersInfo;
            }
            if (PacketBroadcast != null)
            {
                world.Broadcast = PacketBroadcast;
            }
            if (PacketPureData != null)
            {
                world.PureData = PacketPureData;
            }
            if (PacketGameStart != null)
            {
                world.GameStart = PacketGameStart;
            }
            if (PacketGamerSlots != null)
            {
                world.GamerSlots = PacketGamerSlots;
            }
            if (PacketGMGamer != null)
            {
                world.RMGamer = PacketGMGamer;
            }
            if (PacketCountDown != null)
            {
                world.CountDown = PacketCountDown.Value;
            }
            if (PacketGameTime != null)
            {
                world.GameTime = PacketGameTime.Value;
            }
        }