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); } }
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); }
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); } }
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); } }
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); }
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); } } } } }