// ItemCrafter.CraftItem() public static bool PlayerStartCrafting(ItemCrafter self, ItemBlueprint bp, BasePlayer owner, ProtoBuf.Item.InstanceData instanceData = null, int amount = 1) { /*ItemBlueprint bpcopy = new ItemBlueprint(); bpcopy.amountToCreate = bp.amountToCreate; bpcopy.defaultBlueprint = bp.defaultBlueprint; bpcopy.ingredients = bp.ingredients; bpcopy.rarity = bp.rarity; bpcopy.targetItem = bp.targetItem; bpcopy.time = bp.time / Server.GetInstance().CraftingTimeScale; bpcopy.userCraftable = bp.userCraftable;*/ CraftEvent ce = new CraftEvent(self, bp, owner, instanceData, amount); OnPlayerStartCrafting.OnNext(ce); if (!self.CanCraft(bp, 1)) { return false; } if (ce.Cancel) { if (ce.cancelReason != "") owner.SendConsoleCommand("chat.add", 0, String.Format("{0}: {1}", Server.server_message_name.ColorText("fa5"), ce.cancelReason)); return false; } self.taskUID++; ItemCraftTask itemCraftTask = new ItemCraftTask(); itemCraftTask.blueprint = bp; if (!ce.FreeCraft) { List<Item> list = new List<Item>(); foreach (ItemAmount current in bp.ingredients) { int amount2 = (int)current.amount * amount; foreach (ItemContainer current2 in self.containers) { amount2 -= current2.Take(list, current.itemid, amount2); } } foreach (Item current2 in list) { current2.Remove(0f); } } itemCraftTask.endTime = 0; itemCraftTask.taskUID = self.taskUID; itemCraftTask.owner = owner; itemCraftTask.instanceData = instanceData; itemCraftTask.amount = amount; self.queue.Enqueue(itemCraftTask); if (itemCraftTask.owner != null) { itemCraftTask.owner.Command("note.craft_add", new object[] { itemCraftTask.taskUID, itemCraftTask.blueprint.targetItem.itemid, amount }); } return true; }
// ItemCrafter.CraftItem() public static bool On_PlayerStartCrafting(ItemCrafter self, ItemBlueprint bp, BasePlayer owner, ProtoBuf.Item.InstanceData instanceData = null, int amount = 1, int skinID = 0) { CraftEvent ce = new CraftEvent(self, bp, owner, instanceData, amount, skinID); OnNext("On_PlayerStartCrafting", ce); if (!self.CanCraft(bp, ce.Amount)) return false; if (ce.Cancel) { if (ce.cancelReason != String.Empty) ce.Crafter.Message(ce.cancelReason); return false; } self.taskUID++; ItemCraftTask itemCraftTask = Facepunch.Pool.Get<ItemCraftTask>(); itemCraftTask.blueprint = bp; self.CallMethod("CollectIngredients", bp, ce.Amount, owner); itemCraftTask.endTime = 0; itemCraftTask.taskUID = self.taskUID; itemCraftTask.owner = owner; itemCraftTask.instanceData = instanceData; if (itemCraftTask.instanceData != null) { itemCraftTask.instanceData.ShouldPool = false; } itemCraftTask.amount = ce.Amount; itemCraftTask.skinID = ce.SkinID; self.queue.Enqueue(itemCraftTask); if (itemCraftTask.owner != null) { itemCraftTask.owner.Command("note.craft_add", new object[] { itemCraftTask.taskUID, itemCraftTask.blueprint.targetItem.itemid, amount }); } return true; }