public static async Task SendGrowScanDialog(ENetPeer peer) { World world = peer.GetWorld(); List <int> items = new List <int>(); List <int> itemscount = new List <int>(); for (int i = 0; i < world.Width * world.Height; i++) { int fg = world.Items[i].Foreground; int bg = world.Items[i].Background; if (fg == 0 && bg == 0) { continue; } else if (fg == 8 || fg == 6) { continue; } if (items.Contains(fg)) { itemscount[items.IndexOf(fg)]++; } else { if (fg != 0) { items.Add(fg); itemscount.Add(1); } } if (items.Contains(bg)) { itemscount[items.IndexOf(bg)]++; } else { if (bg != 0) { items.Add(bg); itemscount.Add(1); } } } string dd = new Dialog().SetDefaultColor() .AddLabelWithIcon("Found items : ", 6016, false) .AddSmallSpacer() .Result; for (int i = 0; i < items.Count; i++) { dd += new Dialog().AddLabelWithIcon(ItemsData[items[i]].Name + " : " + itemscount[i], items[i], true).Result; } dd += new Dialog().AddSmallSpacer().EndDialog("a", "Back", ""); await peer.OnDialogRequest(dd); }
public static async Task SendCommands(ENetPeer peer, string cch) { // When adding a command with more than 1 param , example : "/hello world", // Make sure you use 'Contains' instead of 'Substring'! string str = cch.Split('|').Last(); if (str == "/test") { await peer.OnConsoleMessage("Worked!"); } else if (str == "/clearworld") { World world = peer.GetWorld(); int pos = 0; for (int i = 0; i < world.Items.Length; i++) { if (world.Items[i].Foreground == 242) { pos = i; } } if (world.OwnerName != (peer.Data as Player).RawName) { await peer.OnTalkBubble("You need to be the world owner to do this!", (peer.Data as Player).NetID); return; } WorldDatabase.Worlds[WorldDatabase.Worlds.IndexOf(world)] = WorldDatabase.GenerateClearWorld(world.Name, world.Width, world.Height , world.OwnerName, pos); foreach (var a in Peers.Where(x => x.InWorld(peer) && x.State == ENetPeerState.Connected)) { await a.SendLeave(); await a.OnAddNotification("", "World " + world.Name + " has been cleared!", "open_hub.wav"); await a.JoinWorld(world.Name, 0, 0); } } else if (str.Contains("/item ")) { try { string[] arr = str.Split(' '); if (arr.Length != 3) { return; } if (Convert.ToInt32(arr[2]) > 200) { await peer.OnTalkBubble("Maximum is 200 items only!"); } var a = (peer.Data as Player).PlayerInventory.Items.Where(x => x.ItemID == Convert.ToInt32(arr[1])).ToList(); if (a.Count == 0) { InventoryItems items = new InventoryItems { ItemCount = (byte)Convert.ToInt32(arr[2]), ItemID = Convert.ToInt32(arr[1]) }; (peer.Data as Player).PlayerInventory.Items = (peer.Data as Player) .PlayerInventory.Items.Append(items).ToArray(); await peer.OnConsoleMessage(ItemsData[items.ItemID].Name + " with ID " + items.ItemID + " " + "has been added to your inventory."); } else { InventoryItems items = new InventoryItems { ItemCount = (byte)(Convert.ToInt32(arr[2]) + a[0].ItemCount), ItemID = (byte)Convert.ToInt32(arr[1]) }; if (items.ItemCount > 200) { await peer.OnTalkBubble("You can only add " + (200 - (items.ItemCount - Convert.ToInt32(arr[2]))) + " items more!"); return; } int index = Array.IndexOf((peer.Data as Player).PlayerInventory.Items, a[0]); (peer.Data as Player).PlayerInventory.Items[index] = items; await peer.OnConsoleMessage(ItemsData[items.ItemID].Name + " with ID " + items.ItemID + " " + "has been added to your inventory."); } await peer.SendInventory((peer.Data as Player).PlayerInventory); } catch { return; } } else if (str == "/longpunch") { try { (peer.Data as Player).SmState = (peer.Data as Player).SmState == 1 ? 0 : 1; await peer.JoinWorld((peer.Data as Player).World, 0, 0); } catch (Exception e) { Console.WriteLine(e.Message); } } else if (str.Contains("/find ")) { try { string f = str.Substring(6); var arr = ItemsData.Where (x => x.Name.ToLower() .Contains(f.ToLower()) && x.ItemID % 2 == 0).ToList(); if (arr.Count > 100) { await peer.OnConsoleMessage("`4More than 100 items found. " + "Please specify more!"); await peer.OnTalkBubble("More than 100 items found. " + "Please specify more!"); return; } string s = "set_default_color|\nadd_label|small|Found " + arr.Count + " items|left|420|\nadd_spacer|small|\n"; arr.ForEach(x => s += "add_button_with_icon|findbutton" + x.ItemID + "|`9" + x.Name + "|left|" + x.ItemID + "||\n"); s += "\nadd_spacer|small|\nend_dialog|finddialog|Cancel||"; await peer.OnDialogRequest(s); } catch { return; } } else if (str == "/testing") { string s = "set_default_color|\nadd_label|small|testing|left|420|\nadd_text_input|textinput|`oWow : ||10|\nadd_spacer|small|\nadd_text_input|textinput2|`oWow||10|\nend_dialog|f|cancel|ok|"; await peer.OnDialogRequest(s); } else { if (str[0] == '/') { string s = str.ToLower(); if (s == "/fp" || s == "/dance" || s == "/dance2" || s == "/lol" || s == "/cheer") { await peer.OnAction(str); } else { await peer.OnConsoleMessage("Invalid Command!"); } } else { if (str.All(char.IsWhiteSpace)) { return; } await peer.SendChat(str); } } }
public static async Task SendCommands(ENetPeer peer, string cch) { // When adding a command with more than 1 param , example : "/hello world", // Make sure you use 'Contains' instead of 'Substring'! string str = cch.Split('|').Last(); if (str == "/test") { await peer.OnConsoleMessage("Worked!"); } else if (str.Contains("/item ")) { try { string[] arr = str.Split(' '); if (arr.Length != 3) { return; } if (Convert.ToInt32(arr[2]) > 200) { await peer.OnTalkBubble("Maximum is 200 items only!"); } var a = (peer.Data as Player).PlayerInventory.Items.Where(x => x.ItemID == Convert.ToInt32(arr[1])).ToList(); if (a.Count == 0) { InventoryItems items = new InventoryItems { ItemCount = (byte)Convert.ToInt32(arr[2]), ItemID = Convert.ToInt32(arr[1]) }; (peer.Data as Player).PlayerInventory.Items = (peer.Data as Player) .PlayerInventory.Items.Append(items).ToArray(); await peer.OnConsoleMessage(ItemsData[items.ItemID].Name + " with ID " + items.ItemID + " " + "has been added to your inventory."); } else { InventoryItems items = new InventoryItems { ItemCount = (byte)(Convert.ToInt32(arr[2]) + a[0].ItemCount), ItemID = (byte)Convert.ToInt32(arr[1]) }; if (items.ItemCount > 200) { await peer.OnTalkBubble("You can only add " + (200 - (items.ItemCount - Convert.ToInt32(arr[2]))) + " items more!"); return; } int index = Array.IndexOf((peer.Data as Player).PlayerInventory.Items, a[0]); (peer.Data as Player).PlayerInventory.Items[index] = items; await peer.OnConsoleMessage(ItemsData[items.ItemID].Name + " with ID " + items.ItemID + " " + "has been added to your inventory."); } await peer.SendInventory((peer.Data as Player).PlayerInventory); } catch { return; } } else if (str.Contains("/find ")) { try { string f = str.Substring(6); var arr = ItemsData.Where (x => x.Name.ToLower() .Contains(f.ToLower()) && x.ItemID % 2 == 0).ToList(); if (arr.Count > 100) { await peer.OnConsoleMessage("`4More than 100 items found. " + "Please specify more!"); await peer.OnTalkBubble("More than 100 items found. " + "Please specify more!"); return; } string s = "set_default_color|\nadd_label|small|Found " + arr.Count + " items|left|420|\nadd_spacer|small|\n"; arr.ForEach(x => s += "add_button_with_icon|findbutton" + x.ItemID + "|`9" + x.Name + "|left|" + x.ItemID + "||\n"); s += "\nadd_spacer|small|\nend_dialog|finddialog|Cancel||"; await peer.OnDialogRequest(s); } catch { return; } } else if (str == "/testing") { string s = "set_default_color|\nadd_label|small|testing|left|420|\nadd_text_input|textinput|`oWow : ||10|\nadd_spacer|small|\nadd_text_input|textinput2|`oWow||10|\nend_dialog|f|cancel|ok|"; await peer.OnDialogRequest(s); } else { if (str[0] == '/') { string s = str.ToLower(); if (s == "/fp" || s == "/dance" || s == "/dance2" || s == "/lol" || s == "/cheer") { await peer.OnAction(str); } else { await peer.OnConsoleMessage("Invalid Command!"); } } else { if (str.All(char.IsWhiteSpace)) { return; } await peer.SendChat(str); } } }