Exemplo n.º 1
0
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr = (FreeRuleEventArgs)args;

            IGameUnit unit = GetPlayer(args);

            if (unit != null)
            {
                PlayerEntity p = ((FreeData)unit).Player;

                int index = FreeUtil.ReplaceInt(weaponKey, args);

                EWeaponSlotType currentSlot = p.GetBagLogicImp().GetCurrentWeaponSlot();

                if (index > 0)
                {
                    currentSlot = FreeWeaponUtil.GetSlotType(index);
                }

                Debug.LogFormat("remove weapon: " + index);

                p.playerAction.Logic.DropWeapon(currentSlot);

                //SimpleProto message = new SimpleProto();
                //message.Key = FreeMessageConstant.ChangeAvatar;
                //message.Ins.Add((int)currentSlot);
                //message.Ks.Add(6);
                //p.network.NetworkChannel.SendReliable((int)EServer2ClientMessage.FreeData, message);
            }
        }
Exemplo n.º 2
0
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr           = (FreeRuleEventArgs)args;
            PlayerEntity      playerEntity = (PlayerEntity)fr.GetEntity(player);
            int             index          = FreeUtil.ReplaceInt(weaponKey, args);
            EWeaponSlotType st             = FreeWeaponUtil.GetSlotType(index);

            WeaponToHand(playerEntity, st);
        }
Exemplo n.º 3
0
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr = (FreeRuleEventArgs)args;

            IGameUnit unit = GetPlayer(args);

            if (unit != null)
            {
                PlayerEntity p = ((FreeData)unit).Player;

                int             itemId = FreeUtil.ReplaceInt(weaponId, args);
                int             index  = FreeUtil.ReplaceInt(weaponKey, args);
                EWeaponSlotType st     = FreeWeaponUtil.GetSlotType(index);

                WeaponBaseAgent agent = null;
                if (index == 0)
                {
                    agent = p.WeaponController().HeldWeaponAgent;
                }
                else
                {
                    agent = p.WeaponController().GetWeaponAgent(st);
                }
                if (agent != null && agent.IsValid() && !FreeUtil.ReplaceBool(replace, args))
                {
                    return;
                }

                var scan = WeaponUtil.CreateScan(itemId);
                if (FreeUtil.ReplaceBool(fullAmmo, args))
                {
                    var weaponAllConfig = SingletonManager.Get <WeaponConfigManagement>().FindConfigById(itemId);
                    scan.Bullet         = weaponAllConfig.PropertyCfg.Bullet;
                    scan.ReservedBullet = weaponAllConfig.PropertyCfg.Bulletmax;
                }
                if (index == 0)
                {
                    p.WeaponController().PickUpWeapon(scan);
                }
                else
                {
                    p.WeaponController().ReplaceWeaponToSlot(st, scan);
                    if (p.stateInterface.State.CanDraw() && p.WeaponController().HeldSlotType == EWeaponSlotType.None)
                    {
                        p.WeaponController().TryArmWeaponImmediately(st);
                    }
                }
                SimpleProto message = new SimpleProto();
                message.Key = FreeMessageConstant.PlaySound;
                message.Ks.Add(2);
                message.Ins.Add((int)EAudioUniqueId.PickupWeapon);
                message.Bs.Add(true);
                FreeMessageSender.SendMessage(p, message);
            }
        }
Exemplo n.º 4
0
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr = (FreeRuleEventArgs)args;

            IGameUnit unit = GetPlayer(args);

            if (unit != null)
            {
                PlayerEntity p = ((FreeData)unit).Player;


                int itemId = FreeUtil.ReplaceInt(weaponId, args);

                int index = FreeUtil.ReplaceInt(weaponKey, args);

                EWeaponSlotType st = FreeWeaponUtil.GetSlotType(index);

                Debug.LogFormat("add weapon: " + itemId + "," + index);
                Logger.Debug("add weapon to team " + p.playerInfo.Camp + " player " + p.playerInfo.PlayerName);

                SimpleProto message = new SimpleProto();
                if (index == 0)
                {
                    p.WeaponController().PickUpWeapon(WeaponUtil.CreateScan(itemId));
                    //p.bag.Bag.SetWeaponBullet(30);
                    //p.bag.Bag.SetReservedCount(100);
                }
                else
                {
                    p.WeaponController().ReplaceWeaponToSlot(st, WeaponUtil.CreateScan(itemId));

                    if (p.stateInterface.State.CanDraw() && p.WeaponController().HeldSlotType == EWeaponSlotType.None)
                    {
                        p.WeaponController().TryArmWeapon(st);
                    }

                    //SwitchWeaponAction.WeaponToHand(p, st);
                }

                message.Ins.Add(itemId);
                if (index > 0)
                {
                    message.Ins.Add((int)st);
                }
                else
                {
                    message.Ins.Add(-1);
                }

                message.Ks.Add(2);
                message.Key = FreeMessageConstant.ChangeAvatar;
                FreeMessageSender.SendMessage(p, message);
                //p.network.NetworkChannel.SendReliable((int)EServer2ClientMessage.FreeData, message);
            }
        }
Exemplo n.º 5
0
        public override void DoAction(IEventArgs args)
        {
            PlayerEntity    playerEntity = GetPlayerEntity(args);
            int             index        = FreeUtil.ReplaceInt(weaponKey, args);
            EWeaponSlotType st           = FreeWeaponUtil.GetSlotType(index);

            playerEntity.WeaponController().PureSwitchIn(st);

            SimpleProto message = FreePool.Allocate();

            message.Key = FreeMessageConstant.ChangeWeapon;
            message.Ins.Add(index);
            FreeMessageSender.SendMessage(playerEntity, message);
        }
Exemplo n.º 6
0
        public override void DoAction(IEventArgs args)
        {
            PlayerEntity player = GetPlayerEntity(args);

            if (player != null)
            {
                if (!StringUtil.IsNullOrEmpty(weaponKey))
                {
                    int             index       = FreeUtil.ReplaceInt(weaponKey, args);
                    EWeaponSlotType currentSlot = index > 0 ? FreeWeaponUtil.GetSlotType(index) : player.WeaponController().HeldSlotType;
                    player.WeaponController().DestroyWeapon(currentSlot, -1);
                }
                else
                {
                    int index = FreeUtil.ReplaceInt(weaponType, args);
                    if (index > 0)
                    {
                        if (index == (int)EWeaponSubType.Throw)
                        {
                            player.WeaponController().DestroyWeapon(EWeaponSlotType.ThrowingWeapon, -1);
                            player.WeaponController().GrenadeHandler.ClearCache();

                            /*var helper = p.WeaponController().GrenadeHelper;
                             * helper.ClearCache();
                             * p.playerWeaponUpdate.UpdateHeldAppearance = true;*/
                        }
                        else
                        {
                            for (int i = (int)EWeaponSlotType.PrimeWeapon; i < (int)EWeaponSlotType.Length; i++)
                            {
                                var weaponAgent = player.WeaponController().GetWeaponAgent((EWeaponSlotType)i);
                                if (weaponAgent.WeaponConfigAssy.NewWeaponCfg.SubType == index)
                                {
                                    player.WeaponController().DestroyWeapon((EWeaponSlotType)i, -1);
                                }
                            }
                        }
                    }
                    else
                    {
                        for (int i = (int)EWeaponSlotType.PrimeWeapon; i < (int)EWeaponSlotType.Length; i++)
                        {
                            player.WeaponController().DestroyWeapon((EWeaponSlotType)i, -1);
                        }
                    }
                }
            }
        }