示例#1
0
        public NPC(string Datei, MainForm Main)
        {
            InitializeComponent();

            this.Main = Main;
            NPCFile = Datei;

            this.Text = new FileInfo(NPCFile).Name;

            for(int i = 0; i < Main.ItemsArr.Length; i++)
            {
                combo_newItemName.Items.Add(Main.ItemsArr[i].AnzeigeName);
            }

            for(int i = 0; i < 4; i++)
            {
                lv_slots[i] = new ListView();
                lv_slots[i].Columns.Add("Item ID", 62);
                lv_slots[i].Columns.Add("Nom", 131);
                lv_slots[i].FullRowSelect = true;
                lv_slots[i].View = View.Details;
                lv_slots[i].Dock = DockStyle.Fill;

                tp_slots[i] = new TabPage("Slot " + i.ToString());
                tp_slots[i].Controls.Add(lv_slots[i]);

                tc_slots.TabPages.Add(tp_slots[i]);
            }

            openNPC = ReadNPC();
            NPCAnzeigen(openNPC);
        }
示例#2
0
        public StructNPC ReadNPC()
        {
            string NPCFileText = File.ReadAllText(NPCFile, System.Text.Encoding.UTF8);
            StructNPC returnNPC = new StructNPC();
            returnNPC.Items = new System.Windows.Forms.ListView.ListViewItemCollection[4];

            for(int i = 0; i < 4; i++)
            {
                returnNPC.Items[i] = new System.Windows.Forms.ListView.ListViewItemCollection(lv_slots[i]);
            }

            returnNPC.Texte = new System.Windows.Forms.ListView.ListViewItemCollection(lv_texte);

            NPCFileText = NPCFileText.Replace("\r", string.Empty);

            Regex zahl      = new Regex(@"[\d]+");
            Regex floatZahl = new Regex(@"[\d]+[.]?[\d]*");

            Regex[] spawnCMDs = new Regex[] {new Regex("NAME \"[\\w]+\""),
                                             new Regex(@"MOVER " + zahl.ToString()),
                                             new Regex(@"POS " + floatZahl.ToString() + " " + floatZahl.ToString() + " " + floatZahl.ToString()),
                                             new Regex(@"WORLD " + floatZahl.ToString()),
                                             new Regex(@"ROTATION " + zahl.ToString()),
                                             new Regex(@"SIZE " + zahl.ToString()),
                                             new Regex(@"PAGE [0|1|2|3]"),
                                             new Regex("TEXT " + zahl.ToString() + " \"[\\w]+[\"]?")};

            string[] lines = NPCFileText.Split('\n');

            try
            {
                for(int x = 0; x < lines.Length; x++)
                {
                    if(!lines[x].StartsWith("//"))
                    {
                        for(int i = 0; i < spawnCMDs.Length; i++)
                        {
                            if(spawnCMDs[i].IsMatch(lines[x]))
                            {
                                if(i == 0) // Name
                                {
                                    returnNPC.Name = lines[x].Split(' ')[1].Replace("\"", "");
                                    break;
                                }
                                else if(i == 1) // NPC-ID
                                {
                                    returnNPC.NPCID = int.Parse(zahl.Matches(lines[x])[0].ToString());
                                    break;
                                }
                                else if(i == 2) // Position
                                {
                                    returnNPC.Pos.X  = float.Parse(floatZahl.Matches(lines[x])[0].ToString().Replace('.', ','));
                                    returnNPC.Pos.Y  = float.Parse(floatZahl.Matches(lines[x])[1].ToString().Replace('.', ','));
                                    returnNPC.Pos.Z  = float.Parse(floatZahl.Matches(lines[x])[2].ToString().Replace('.', ','));
                                    break;
                                }
                                else if(i == 3) // Position.World
                                {
                                    returnNPC.Pos.World = int.Parse(zahl.Matches(lines[x])[0].ToString());
                                    break;
                                }
                                else if(i == 4) // Rotation
                                {
                                    returnNPC.Rotation = int.Parse(zahl.Matches(lines[x])[0].ToString());
                                    break;
                                }
                                else if(i == 5) // Size
                                {
                                    returnNPC.Size = int.Parse(zahl.Matches(lines[x])[0].ToString());
                                    break;
                                }
                                else if(i == 6) // Items
                                {
                                    Regex RegexSpace = new Regex(@"[\s]*");

                                    int o = x+1;
                                    int Slot = int.Parse(lines[x].Substring(5, 1));

                                    while(!lines[o].Contains("END") || lines[o].Contains("PAGE"))
                                    {

                                        returnNPC.Items[Slot].Add(RegexSpace.Replace(lines[o], ""));
                                        returnNPC.Items[Slot][returnNPC.Items[Slot].Count-1].SubItems.Add(findeItem(int.Parse(RegexSpace.Replace(lines[o], ""))));
                                        o++;
                                    }

                                    break;
                                }
                                else if(i == 7) // Texte
                                {
                                    for(int y = 0; y < lines[x].Length; y++)
                                    {
                                        if(lines[x].Substring(y, 1) == "\"")
                                        {
                                            int o = x+1;
                                            string Text = string.Empty;
                                            Text += lines[x].Substring(y+1) + "%N";

                                            while(!lines[o-1].Contains("\"") || lines[o-1].Contains("TEXT"))
                                            {
                                                Text += lines[o] + "%N";
                                                o++;
                                            }
                                            Text = Text.Remove(Text.Length-2, 2);

                                            returnNPC.Texte.Add(Text.Replace("\"", "")).SubItems.Add(zahl.Matches(lines[x])[0].ToString());
                                            break;
                                        }
                                    }
                                    break;
                                }
                            }
                        }
                    }
                }
            /*				foreach(ListView.ListViewItemCollection lv in returnNPC.Items)
                {
                    foreach(ListViewItem lvItem in lv)
                    {
                        lvItem.SubItems[2].Text = findeItem(int.Parse(lvItem.SubItems[1].Text));
                    }
                } */
            }
             		catch ( Exception ex )
            {
                Main.LoggIt(ex.Message, ex.StackTrace);
            }

            return returnNPC;
        }
示例#3
0
 void NPCAnzeigen(StructNPC zeigeNPC)
 {
     try
     {
         txt_id.Text   = zeigeNPC.NPCID.ToString();
         txt_name.Text = zeigeNPC.Name;
         txt_rotation.Text = zeigeNPC.Rotation.ToString();
         txt_size.Text = zeigeNPC .Size.ToString();
         txt_World.Text = zeigeNPC.Pos.World.ToString();
         txt_X.Text = zeigeNPC.Pos.X.ToString();
         txt_Y.Text = zeigeNPC.Pos.Y.ToString();
         txt_Z.Text = zeigeNPC.Pos.Z.ToString();
     }
     catch (Exception ex)
     {
         Main.LoggIt(ex.Message, ex.StackTrace);
     }
 }