void FillAmmo(PlayerSession player) { if (!player.IsLoaded || !player.Player.isConnected) { return; } NetworkEntityComponentBase netEntity = player.WorldPlayerEntity.GetComponent <NetworkEntityComponentBase>(); if (netEntity == null) { return; } EquippedHandlerBase equippedHandler = netEntity.GetComponent <EquippedHandlerBase>(); if (equippedHandler == null) { return; } EquippedHandlerServer equippedHandlerServer = equippedHandler as EquippedHandlerServer; if (equippedHandlerServer == null) { return; } ItemInstance equippedItem = equippedHandler.GetEquippedItem(); if (equippedItem == null) { return; } GunItem gunItem = equippedItem.Item as GunItem; BowItem bowItem = equippedItem.Item as BowItem; if ((bowItem != null || gunItem != null) && equippedHandlerServer != null) { if (gunItem != null) { AutomaticGunItem aGunItem = gunItem as AutomaticGunItem; GunItemEquippedState gunEquipState = gunItem.EquippedState(equippedHandler); equippedItem.AuxData = Convert.ToByte(gunItem.GetClipSize()); equippedHandlerServer.AuxSync(); } else { PlayerInventory inventory = player.WorldPlayerEntity.GetComponent <PlayerInventory>(); if (!inventory.HasItem(bowItem.GetAmmoType().ItemId, 1)) { GiveItem(player, bowItem.GetAmmoType(), 1); } } } }
//////////////////////////////////////// /// Ammo Related //////////////////////////////////////// /*void OnWeaponFired(IItem item, EquippedHandlerBase handler) * { * }*/ void LoadAmmo(PlayerSession player) { if (!player.IsLoaded) { return; } NetworkEntityComponentBase netEntity = player.WorldPlayerEntity.GetComponent <NetworkEntityComponentBase>(); if (netEntity == null) { return; } EquippedHandlerBase equippedHandler = netEntity.GetComponent <EquippedHandlerBase>(); if (equippedHandler == null) { return; } EquippedHandlerServer equippedHandlerServer = equippedHandler as EquippedHandlerServer; if (equippedHandlerServer == null) { return; } ItemInstance equippedItem = equippedHandler.GetEquippedItem(); if (equippedItem == null) { return; } GunItem gunItem = equippedItem.Item as GunItem; BowItem bowItem = equippedItem.Item as BowItem; //PrintWarning($"Item: {equippedItem.Item.GetNameKey().Split('/').Last()}"); //PrintWarning($"Is Gun: {!(gunItem == null)}"); if ((bowItem != null || gunItem != null) && equippedHandlerServer != null) { if (gunItem != null) { AutomaticGunItem aGunItem = gunItem as AutomaticGunItem; GunItemEquippedState gunEquipState = gunItem.EquippedState(equippedHandler); //PrintWarning($"Is Automatic: {!(aGunItem == null)}"); //PrintWarning($"Clip Size: {gunItem.GetClipSize().ToString()}"); //PrintWarning($"Ammo Count: {equippedItem.AuxData.ToString()}"); //if (equippedItem.AuxData <= 1) //{ equippedItem.AuxData = Convert.ToByte(gunItem.GetClipSize()); equippedHandlerServer.AuxSync(); //} } else { PlayerInventory inventory = player.WorldPlayerEntity.GetComponent <PlayerInventory>(); //PrintWarning($"Has Ammo: {inventory.HasItem(bowItem.GetAmmoType().ItemId, 1)}"); if (!inventory.HasItem(bowItem.GetAmmoType().ItemId, 1)) { GiveItem(player, bowItem.GetAmmoType(), 1); } } } }
void TradeCommand(PlayerSession session, string cmd, string[] args) { if ((bool)NoEscapeV2.Call("IsRaid", session)) { return; } if (args.Length == 0) { Send(session, "Чтобы добавить предмет в обмен - возьмите в руки и введите: /trade add"); Send(session, "Чтобы вернуть все предметы введите: /trade back"); Send(session, "Чтобы предложить обмен введите: /trade to <ник>"); return; } PlayerInventory inv = session.WorldPlayerEntity.GetComponent <PlayerInventory>(); var trade = getTrade(session); switch (args[0].ToLower()) { case "add": if (trade.tradeStag != Trade.NoSend) { Send(session, "Нельзя изменить предметы для обмена во время обмена!"); return; } EquippedHandlerServer ehs = session.WorldPlayerEntity.GetComponent <EquippedHandlerServer>(); ItemObject item = ehs.GetEquippedItem(); inv.RemoveItem(inv.GetSlotIndex(item)); trade.items.Add(item); break; case "back": if (trade.tradeStag != Trade.NoSend) { Send(session, "Нельзя вернуть предметы во время обмена!"); return; } RefaundItems(trade.items, session); trade.items.Clear(); break; case "to": if (args.Length == 1) { Send(session, "Введите ник того - кому вы хотите отправить обмен!"); return; } var toSession = getSession(args[1]); if (!AllowedTrade(session, toSession)) { return; } var _trade = getTrade(toSession); trade.newMember(toSession); Send(toSession, "Вам отправил предложение об обмене!"); break; case "a": case "accept": var membertrade = getFromTrade(session); if (membertrade == null) { Send(session, "Никто не отправил вам обмен!"); return; } break; case "c": case "cancel": break; case "blacklist": break; } }