Ghostlamer Posted August 18, 2011 Share Posted August 18, 2011 (edited) Hello.I made this script, it works.using System; using System.Drawing; using System.IO; using System.Windows.Forms; using fomm.Scripting; class Script : FalloutNewVegasBaseScript { public static bool install; // PNH MENU SETTINGS public static Form installPNHForm; public static PictureBox backgroundPicture; public static Button okButton; public static Button cancelButton; // Options buttons public static RadioButton ReadiusRadioButton; public static Label vanillaIconsLabel; public static RadioButton Pipboy2005RadioButton; public static Label pnhLabel; //Options panel public static Panel optionsPanel; public static Label optionsLabel; public static bool IsPluginActive(String pluginName) { string[] loadOrder = GetActivePlugins(); for (int i = 0; i < loadOrder.Length; ++i) { if (loadOrder[i].Equals(pluginName, StringComparison.InvariantCultureIgnoreCase)) { return true; } } return false; } public static Image GetImageFromFomod(string filename) { byte[] data = GetFileFromFomod(filename); MemoryStream s = new MemoryStream(data); Image img = Image.FromStream(s); s.Close(); return img; } public static void CreatePNHForm() { setUpPNHForm(); setUpPNHBackgroundImage(); setUpPNHHelpertext(); setUpOptions(); setUpButtons(); AttachHandlers(); } public static void setUpOptions() { optionsPanel = new Panel(); optionsPanel.Location = new Point(6, 180); optionsPanel.Size = new Size(267, 50); optionsPanel.BackColor = Color.WhiteSmoke; optionsPanel.BorderStyle = BorderStyle.FixedSingle; backgroundPicture.Controls.Add(optionsPanel); ReadiusRadioButton = new RadioButton(); ReadiusRadioButton.Checked = true; ReadiusRadioButton.Location = new Point(15, 15); ReadiusRadioButton.Size = new Size(20, 20); vanillaIconsLabel = new Label(); vanillaIconsLabel.Text = "Pipboy Readius"; vanillaIconsLabel.Location = new Point(37, 19); vanillaIconsLabel.AutoSize = true; optionsPanel.Controls.Add(ReadiusRadioButton); optionsPanel.Controls.Add(vanillaIconsLabel); Pipboy2005RadioButton = new RadioButton(); Pipboy2005RadioButton.Checked = false; Pipboy2005RadioButton.Location = new Point(168, 16); Pipboy2005RadioButton.Size = new Size(20, 20); pnhLabel = new Label(); pnhLabel.Text = "Pipboy2005"; pnhLabel.Location = new Point(190, 19); pnhLabel.AutoSize = true; optionsPanel.Controls.Add(Pipboy2005RadioButton); optionsPanel.Controls.Add(pnhLabel); } public static void setUpPNHHelpertext() { Panel helperTextPanel = new Panel(); helperTextPanel.Location = new Point(60, 130); helperTextPanel.Size = new Size(170, 30); helperTextPanel.BackColor = Color.WhiteSmoke; helperTextPanel.BorderStyle = BorderStyle.FixedSingle; backgroundPicture.Controls.Add(helperTextPanel); Label helperTextLabel = new Label(); helperTextLabel.Text = "Readius or Pipboy 2005?"; helperTextLabel.Location = new Point(22, 5); helperTextLabel.AutoSize = true; helperTextPanel.Controls.Add(helperTextLabel); } public static void setUpPNHForm() { installPNHForm = CreateCustomForm(); installPNHForm.FormBorderStyle = FormBorderStyle.Fixed3D; installPNHForm.StartPosition = FormStartPosition.CenterScreen; installPNHForm.MaximizeBox = false; installPNHForm.Size = new System.Drawing.Size(300, 360); installPNHForm.Text = "Readius vs Pipboy 2005"; } public static void setUpPNHBackgroundImage() { backgroundPicture = new PictureBox(); backgroundPicture.Location = new Point(6, 0); backgroundPicture.Size = new Size(292, 327); // load picture file from .fomod and stream into picture box backgroundPicture.Image = GetImageFromFomod("fomod/screenshot.png"); // add BackgroundPicture to list of controls installPNHForm.Controls.Add(backgroundPicture); } public static void setUpButtons() { okButton = new Button(); okButton.Text = "Install"; okButton.BackColor = Color.Silver; okButton.Location = new Point(144, 286); okButton.Size = new Size(130, 33); // cancel button cancelButton = new Button(); cancelButton.Text = "Cancel"; cancelButton.BackColor = Color.Silver; cancelButton.Location = new Point(5, 286); cancelButton.Size = new Size(130, 33); backgroundPicture.Controls.Add(okButton); backgroundPicture.Controls.Add(cancelButton); } public static void AttachHandlers() { //Attach a handler that will fire when the apply button is clicked okButton.Click += delegate(object sender, EventArgs args) { install = true; installPNHForm.Close(); }; cancelButton.Click += delegate(object sender, EventArgs args) { install = false; installPNHForm.Close(); }; } public static bool OnActivate() { CreatePNHForm(); installPNHForm.ShowDialog(); if (install) { InstallMenu(); } return install; } public static int GetPluginIndex(String pluginName) { string[] loadOrder = GetAllPlugins(); for (int i = 0; i < loadOrder.Length; ++i) { if (loadOrder[i].Equals(pluginName, StringComparison.InvariantCultureIgnoreCase)) return i; } return -1; } public static void PlaceAtPlugin(String targetPlugin, String pluginToMove, int offset) { int targetPluginIndex = GetPluginIndex(targetPlugin); int pluginToMoveIndex = GetPluginIndex(pluginToMove); if (targetPluginIndex != -1 && pluginToMoveIndex != -1) { int[] pluginIdxArray = { pluginToMoveIndex }; SetLoadOrder(pluginIdxArray, targetPluginIndex + offset); } } public static void PlaceAfterPlugin(String targetPlugin, String pluginToMove) { PlaceAtPlugin(targetPlugin, pluginToMove, 1); } public static void PlaceBeforePlugin(String targetPlugin, String pluginToMove) { PlaceAtPlugin(targetPlugin, pluginToMove, 0); } public static void InstallMenu() { if (ReadiusRadioButton.Checked) { CopyDataFile("Readius_NV.bsa", "Readius_NV.bsa"); InstallFileFromFomod("Readius_NV.esp"); if (IsPluginActive("WMX-ArenovalisTextures.esp")) { PlaceAfterPlugin("WMX-ArenovalisTextures.esp", "Readius_NV.esp"); } if (IsPluginActive("TheUltimateGhostOverhaul.esp")) { PlaceAfterPlugin("TheUltimateGhostOverhaul.esp", "Readius_NV.esp"); } SetPluginActivation("Readius_NV.esp", true); } else if (Pipboy2005RadioButton.Checked) { CopyDataFile("Pipboy2500.bsa", "Pipboy2500.bsa"); InstallFileFromFomod("Pipboy2500.esp"); if (IsPluginActive("WMX-ArenovalisTextures.esp")) { PlaceAfterPlugin("WMX-ArenovalisTextures.esp", "Pipboy2500.esp"); } if (IsPluginActive("TheUltimateGhostOverhaul.esp")) { PlaceAfterPlugin("TheUltimateGhostOverhaul.esp", "Pipboy2500.esp"); } SetPluginActivation("Pipboy2500.esp", true); } } } How made progress bar when installing files from this script?. Edited August 18, 2011 by Ghostlamer Link to comment Share on other sites More sharing options...
Recommended Posts