///-----------------\\\ // [ ON ITEM CRAFT ] \\ ///-----------------\\\ #region [ ON ITEM CRAFT ] private void OnItemCraft(ItemCraftTask task, BasePlayer player, BasePlayer crafter) { if (!PlayerExists(player)) { InitPlayerData(player); } if (!playerSkinData.Players[player.userID].skinIDS.Contains(task.skinID.ToString()) && task.skinID != 0) { InternalItemInfo e = new InternalItemInfo(); int skinIDIndex = skinListIDS.IndexOf(Convert.ToUInt32(task.skinID)); e.Shortname = skinListSHORTNAMES[skinIDIndex]; if (skinListWIDS[skinIDIndex] > 0) { e.SkinWID = skinListWIDS[skinIDIndex]; } else { e.SkinWID = skinListIDS[skinIDIndex]; } e.SkinID = skinListIDS[skinIDIndex]; playerSkinData.Players[player.userID].skinWIDS.Add(e.SkinWID.ToString()); playerSkinData.Players[player.userID].skinIDS.Add(e.SkinID.ToString()); playerSkinData.Players[player.userID].skinShortnames.Add(e.Shortname.ToString()); playerSkinData.Players[player.userID].skinNames.Add(skinListNAMES[skinIDIndex]); PrintMessage(player, "SkinAddOnCraft", skinListNAMES[skinIDIndex], e.SkinID, playerSkinData.Players[player.userID].skinIDS.Count); } }
private void AddSet(BasePlayer player, string arg) { if (!player.IsConnected) { return; } if (string.IsNullOrEmpty(arg)) { PrintToChat(player, Lang("SetAddUsage", player.UserIDString)); return; } if (player.inventory.containerWear.itemList.Count == 0) { PrintToChat(player, Lang("NoItems", player.UserIDString)); return; } int count = SetCount(player); if (!permission.UserHasPermission(player.UserIDString, PERMISSION_VIP) && count >= Convert.ToInt16(Config["Limits", "Limit"])) { PrintToChat(player, Lang("MaxSets", player.UserIDString, Config["Limits", "Limit"].ToString())); return; } else if (permission.UserHasPermission(player.UserIDString, PERMISSION_VIP) && count >= Convert.ToInt16(Config["Limits", "LimitVIP"])) { PrintToChat(player, Lang("MaxSets", player.UserIDString, Config["Limits", "LimitVIP"].ToString())); return; } string setname = arg.ToLower(); if (SetExistsFromName(player, setname)) { PrintToChat(player, Lang("SetAlreadyExists", player.UserIDString, setname)); return; } SetInfo newSet = new SetInfo(); newSet.OwnerID = player.userID; newSet.Name = setname; newSet.TimesUsed = 0; newSet.LastUsed = UnixTimestamp(); newSet.ID = SetsNextID(); newSet.Public = false; int itemsToAdd = 0; foreach (var wearItem in player.inventory.containerWear.itemList) { if (ReturnIngredients(wearItem.info) == null) { continue; } InternalItemInfo setItem = new InternalItemInfo(); setItem.Shortname = wearItem.info.shortname; setItem.SkinID = wearItem.skin; newSet.Contents.Add(setItem); itemsToAdd++; } if (itemsToAdd != 0) { Sets.Add(newSet); PrintToChat(player, Lang("SetAdded", player.UserIDString, newSet.Name, newSet.Name)); } else { PrintToChat(player, Lang("NoItems", player.UserIDString)); } }
private void setsCommand(BasePlayer player, string command, string[] args) { if (permission.UserHasPermission(player.net.connection.userid.ToString(), "MagicSets.able")) { if (!PlayerExists(player)) { InitPlayerData(player); } if (args.Length == 0 || args.Length > 3) { PrintToChat(player, Lang("NoValue", player.UserIDString)); } else if (args[0] == "clear") { int count = playerSetData.Players[player.userID].Sets.Count; if (count == 0) { PrintToChat(player, Lang("NoSets", player.UserIDString)); return; } playerSetData.Players[player.userID].Sets.Clear(); PrintToChat(player, Lang("ClearSuccess", player.UserIDString, count.ToString())); } else if (args[0] == "add") { if (args.Length == 2) { if (!permission.UserHasPermission(player.net.connection.userid.ToString(), "MagicSets.vip") && playerSetData.Players[player.userID].Sets.Count >= Convert.ToInt16(Config["Settings", "SetLimit"])) { PrintToChat(player, Lang("MaxSets", player.UserIDString, Config["Settings", "SetLimit"].ToString())); return; } else if (permission.UserHasPermission(player.net.connection.userid.ToString(), "MagicSets.vip") && playerSetData.Players[player.userID].Sets.Count >= Convert.ToInt16(Config["Settings", "SetLimitVIP"])) { PrintToChat(player, Lang("MaxSets", player.UserIDString, Config["Settings", "SetLimitVIP"].ToString())); return; } if (player.inventory.containerWear.itemList.Count >= 1) { SetInfo z = new SetInfo(); string setname = args[1]; z.Name = setname; if (playerSetData.Players[player.userID].Sets.ContainsKey(setname)) { PrintToChat(player, Lang("SetAlreadyExists", player.UserIDString, setname)); return; } foreach (var wearItem in player.inventory.containerWear.itemList) { if (ReturnIngredients(wearItem.info) == null) { break; } InternalItemInfo e = new InternalItemInfo(); e.Shortname = wearItem.info.shortname; e.SkinID = wearItem.skin; z.Items.Add(e); } PrintToChat(player, Lang("SetAdded", player.UserIDString, z.Name, z.Name)); playerSetData.Players[player.userID].Sets.Add(setname, z); } else { PrintToChat(player, Lang("NoItems", player.UserIDString)); } } else { PrintToChat(player, Lang("SetAddUsage", player.UserIDString)); } } else if (args[0] == "remove") { if (args.Length == 2) { string setname = args[1]; if (!playerSetData.Players[player.userID].Sets.ContainsKey(setname)) { PrintToChat(player, Lang("SetNotExist", player.UserIDString, setname)); return; } playerSetData.Players[player.userID].Sets.Remove(setname); PrintToChat(player, Lang("SetRemoved", player.UserIDString, setname)); } else { PrintToChat(player, Lang("RemoveUsage", player.UserIDString)); } } else if (args[0] == "list") { if (playerSetData.Players[player.userID].Sets.Count == 0) { PrintToChat(player, Lang("NoSets", player.UserIDString)); return; } int count = 1; foreach (var set in playerSetData.Players[player.userID].Sets.Values) { string items = ""; foreach (var item in set.Items) { items = items + " | " + item.Shortname + "<color=yellow> [WID: " + item.SkinID + "]</color>"; } PrintToChat(player, Lang("ListFormat", player.UserIDString, count.ToString(), set.Name, items)); count++; } } else if (args[0] == "create") { if (args.Length == 2) { string setname = args[1]; Dictionary <ItemDefinition, float> Costs = new Dictionary <ItemDefinition, float>(); if (!playerSetData.Players[player.userID].Sets.ContainsKey(setname)) { PrintToChat(player, Lang("SetNotExist", player.UserIDString, setname)); return; } foreach (InternalItemInfo item in playerSetData.Players[player.userID].Sets[setname].Items) { List <ItemAmount> ingred = ReturnIngredients(ItemManager.FindItemDefinition(item.Shortname)); foreach (ItemAmount ingredients in ingred) { if (!Costs.ContainsKey(ingredients.itemDef)) { Costs.Add(ingredients.itemDef, ingredients.amount); } else { Costs[ingredients.itemDef] += ingredients.amount; } } } int item_amount_to_total = Costs.Count; int has_items = 0; foreach (var c in Costs) { if (HasItem(player, c.Key.shortname, Convert.ToInt32(c.Value))) { has_items++; } } if (has_items == item_amount_to_total) { foreach (var c in Costs) { TakeItem(player, c.Key.shortname, Convert.ToInt32(c.Value)); } foreach (InternalItemInfo item in playerSetData.Players[player.userID].Sets[setname].Items) { GiveSetItem(player, ItemManager.FindItemDefinition(item.Shortname).itemid, item.SkinID, 1); } PrintToChat(player, Lang("SetCreated", player.UserIDString, setname)); } else { PrintToChat(player, Lang("NotEnoughResources", player.UserIDString, setname)); } } else { PrintToChat(player, Lang("SetsCreateUsage", player.UserIDString)); } } else { PrintToChat(player, Lang("NoValue", player.UserIDString)); } } }