Пример #1
0
 public void readCUS(string cusPath)
 {
     charSkillSet[] css      = new charSkillSet[1];
     skill[]        Super    = new skill[1];
     skill[]        Ultimate = new skill[1];
     skill[]        Evasive  = new skill[1];
     skill[]        blast    = new skill[1];
     skill[]        Awaken   = new skill[1];
     CUS.Read(cusPath, ref css, ref Super, ref Ultimate, ref Evasive, ref Awaken, ref blast);
     this.css.AddRange((IEnumerable <charSkillSet>)css);
     this.Super.AddRange((IEnumerable <skill>)Super);
     this.Ultimate.AddRange((IEnumerable <skill>)Ultimate);
     this.Evasive.AddRange((IEnumerable <skill>)Evasive);
     this.blast.AddRange((IEnumerable <skill>)blast);
     this.Awaken.AddRange((IEnumerable <skill>)Awaken);
 }
Пример #2
0
 public void writeCUS(string cusPath)
 {
     charSkillSet[] charSkillSetArray = new charSkillSet[1];
     skill[]        skillArray1       = new skill[1];
     skill[]        skillArray2       = new skill[1];
     skill[]        skillArray3       = new skill[1];
     skill[]        skillArray4       = new skill[1];
     skill[]        skillArray5       = new skill[1];
     charSkillSet[] array1            = this.css.ToArray();
     skill[]        array2            = this.Super.ToArray();
     skill[]        array3            = this.Ultimate.ToArray();
     skill[]        array4            = this.Evasive.ToArray();
     skill[]        array5            = this.blast.ToArray();
     skill[]        array6            = this.Awaken.ToArray();
     CUS.Write(cusPath, ref array1, ref array2, ref array3, ref array4, ref array6, ref array5);
 }
Пример #3
0
        public static void writeSkill(ref BinaryWriter bw, skill s, ref int[] wordAddress, ref List <string> CmnText)
        {
            bw.Write(Encoding.ASCII.GetBytes(s.shortName));
            if (s.shortName.Length == 3)
            {
                bw.BaseStream.Seek(5, SeekOrigin.Current);
            }
            else
            {
                bw.BaseStream.Seek(4, SeekOrigin.Current);
            }

            bw.Write(s.id);
            bw.Write(s.id2);
            bw.Write(s.racelock);
            bw.Write(s.unk1);
            bw.Write(s.unk2);
            bw.Write(s.hair);
            bw.Write(s.unk3);

            for (int k = 0; k < s.Paths.Length; k++)
            {
                if (s.Paths[k] == "")
                {
                    bw.Write((int)0);
                }
                else
                {
                    bw.Write(wordAddress[CmnText.IndexOf(s.Paths[k])]);
                }
            }

            bw.BaseStream.Seek(2, SeekOrigin.Current);
            bw.Write(s.unk4);
            bw.Write(s.unk5);
            bw.Write(s.unk6);
            bw.Write(s.unk7);
            bw.Write(s.unk8);
            bw.Write(s.unk9);
            bw.Write(s.unk10);
            bw.Write(s.unk11);
        }
Пример #4
0
        public static void ReadSkills(string path, ref skill[] Super, ref skill[] Ultimate, ref skill[] Evasive, ref skill[] Awaken, ref skill[] blast)
        {
            BinaryReader br = new BinaryReader(File.Open(path, FileMode.Open));


            br.BaseStream.Seek(16, SeekOrigin.Begin);
            int supCount = br.ReadInt32(); //super
            int ultCount = br.ReadInt32(); //ultimate
            int evaCount = br.ReadInt32(); //evasive
            int unkCount = br.ReadInt32(); //unknown
            int blaCount = br.ReadInt32(); //blast
            int awaCount = br.ReadInt32(); //awaken

            int supAddress = br.ReadInt32();
            int ultAddress = br.ReadInt32();
            int evaAddress = br.ReadInt32();
            int unkAddress = br.ReadInt32();
            int blaAddress = br.ReadInt32();
            int awaAddress = br.ReadInt32();

            Super    = new skill[supCount];
            Ultimate = new skill[ultCount];
            Evasive  = new skill[evaCount];
            //unknown = new skill[unkCount];
            blast  = new skill[blaCount];
            Awaken = new skill[awaCount];

            for (int i = 0; i < supCount; i++)
            {
                br.BaseStream.Seek(supAddress + (i * 68), SeekOrigin.Begin);
                byte[] b = br.ReadBytes(4);
                Super[i].shortName = Encoding.ASCII.GetString(b);
                br.BaseStream.Seek(4, SeekOrigin.Current);
                Super[i].id       = br.ReadInt16();
                Super[i].id2      = br.ReadInt16();
                Super[i].racelock = br.ReadByte();
                Super[i].unk1     = br.ReadByte();
                Super[i].unk2     = br.ReadInt16();
                Super[i].hair     = br.ReadInt16();
                Super[i].unk3     = br.ReadInt16(); //20

                Super[i].Paths    = new string[7];
                Super[i].Paths[0] = Helper.ReadAddressText(br, br.ReadInt32());
                Super[i].Paths[1] = Helper.ReadAddressText(br, br.ReadInt32());
                Super[i].Paths[2] = Helper.ReadAddressText(br, br.ReadInt32());
                Super[i].Paths[3] = Helper.ReadAddressText(br, br.ReadInt32());
                Super[i].Paths[4] = Helper.ReadAddressText(br, br.ReadInt32());
                Super[i].Paths[5] = Helper.ReadAddressText(br, br.ReadInt32());
                Super[i].Paths[6] = Helper.ReadAddressText(br, br.ReadInt32()); //28

                br.BaseStream.Seek(2, SeekOrigin.Current);
                Super[i].unk4  = br.ReadInt16();
                Super[i].unk5  = br.ReadInt16();
                Super[i].unk6  = br.ReadInt16();
                Super[i].unk7  = br.ReadInt16();
                Super[i].unk8  = br.ReadInt16();
                Super[i].unk9  = br.ReadInt16();
                Super[i].unk10 = br.ReadInt16();
                Super[i].unk11 = br.ReadInt32(); //20
            }

            for (int i = 0; i < ultCount; i++)
            {
                br.BaseStream.Seek(ultAddress + (i * 68), SeekOrigin.Begin);
                byte[] b = br.ReadBytes(4);
                Ultimate[i].shortName = Encoding.ASCII.GetString(b);
                br.BaseStream.Seek(4, SeekOrigin.Current);
                Ultimate[i].id       = br.ReadInt16();
                Ultimate[i].id2      = br.ReadInt16();
                Ultimate[i].racelock = br.ReadByte();
                Ultimate[i].unk1     = br.ReadByte();
                Ultimate[i].unk2     = br.ReadInt16();
                Ultimate[i].hair     = br.ReadInt16();
                Ultimate[i].unk3     = br.ReadInt16();

                Ultimate[i].Paths    = new string[7];
                Ultimate[i].Paths[0] = Helper.ReadAddressText(br, br.ReadInt32());
                Ultimate[i].Paths[1] = Helper.ReadAddressText(br, br.ReadInt32());
                Ultimate[i].Paths[2] = Helper.ReadAddressText(br, br.ReadInt32());
                Ultimate[i].Paths[3] = Helper.ReadAddressText(br, br.ReadInt32());
                Ultimate[i].Paths[4] = Helper.ReadAddressText(br, br.ReadInt32());
                Ultimate[i].Paths[5] = Helper.ReadAddressText(br, br.ReadInt32());
                Ultimate[i].Paths[6] = Helper.ReadAddressText(br, br.ReadInt32()); //28

                br.BaseStream.Seek(2, SeekOrigin.Current);
                Ultimate[i].unk4  = br.ReadInt16();
                Ultimate[i].unk5  = br.ReadInt16();
                Ultimate[i].unk6  = br.ReadInt16();
                Ultimate[i].unk7  = br.ReadInt16();
                Ultimate[i].unk8  = br.ReadInt16();
                Ultimate[i].unk9  = br.ReadInt16();
                Ultimate[i].unk10 = br.ReadInt16();
                Ultimate[i].unk11 = br.ReadInt32(); //20
            }

            for (int i = 0; i < evaCount; i++)
            {
                br.BaseStream.Seek(evaAddress + (i * 68), SeekOrigin.Begin);
                byte[] b = br.ReadBytes(4);
                Evasive[i].shortName = Encoding.ASCII.GetString(b);
                br.BaseStream.Seek(4, SeekOrigin.Current);
                Evasive[i].id       = br.ReadInt16();
                Evasive[i].id2      = br.ReadInt16();
                Evasive[i].racelock = br.ReadByte();
                Evasive[i].unk1     = br.ReadByte();
                Evasive[i].unk2     = br.ReadInt16();
                Evasive[i].hair     = br.ReadInt16();
                Evasive[i].unk3     = br.ReadInt16();

                Evasive[i].Paths    = new string[7];
                Evasive[i].Paths[0] = Helper.ReadAddressText(br, br.ReadInt32());
                Evasive[i].Paths[1] = Helper.ReadAddressText(br, br.ReadInt32());
                Evasive[i].Paths[2] = Helper.ReadAddressText(br, br.ReadInt32());
                Evasive[i].Paths[3] = Helper.ReadAddressText(br, br.ReadInt32());
                Evasive[i].Paths[4] = Helper.ReadAddressText(br, br.ReadInt32());
                Evasive[i].Paths[5] = Helper.ReadAddressText(br, br.ReadInt32());
                Evasive[i].Paths[6] = Helper.ReadAddressText(br, br.ReadInt32()); //28

                br.BaseStream.Seek(2, SeekOrigin.Current);
                Evasive[i].unk4  = br.ReadInt16();
                Evasive[i].unk5  = br.ReadInt16();
                Evasive[i].unk6  = br.ReadInt16();
                Evasive[i].unk7  = br.ReadInt16();
                Evasive[i].unk8  = br.ReadInt16();
                Evasive[i].unk9  = br.ReadInt16();
                Evasive[i].unk10 = br.ReadInt16();
                Evasive[i].unk11 = br.ReadInt32(); //20
            }

            for (int i = 0; i < blaCount; i++)
            {
                br.BaseStream.Seek(blaAddress + (i * 68), SeekOrigin.Begin);
                byte[] b = br.ReadBytes(4);
                blast[i].shortName = Encoding.ASCII.GetString(b);
                br.BaseStream.Seek(4, SeekOrigin.Current);
                blast[i].id       = br.ReadInt16();
                blast[i].id2      = br.ReadInt16();
                blast[i].racelock = br.ReadByte();
                blast[i].unk1     = br.ReadByte();
                blast[i].unk2     = br.ReadInt16();
                blast[i].hair     = br.ReadInt16();
                blast[i].unk3     = br.ReadInt16();

                blast[i].Paths    = new string[7];
                blast[i].Paths[0] = Helper.ReadAddressText(br, br.ReadInt32());
                blast[i].Paths[1] = Helper.ReadAddressText(br, br.ReadInt32());
                blast[i].Paths[2] = Helper.ReadAddressText(br, br.ReadInt32());
                blast[i].Paths[3] = Helper.ReadAddressText(br, br.ReadInt32());
                blast[i].Paths[4] = Helper.ReadAddressText(br, br.ReadInt32());
                blast[i].Paths[5] = Helper.ReadAddressText(br, br.ReadInt32());
                blast[i].Paths[6] = Helper.ReadAddressText(br, br.ReadInt32()); //28

                br.BaseStream.Seek(2, SeekOrigin.Current);
                blast[i].unk4  = br.ReadInt16();
                blast[i].unk5  = br.ReadInt16();
                blast[i].unk6  = br.ReadInt16();
                blast[i].unk7  = br.ReadInt16();
                blast[i].unk8  = br.ReadInt16();
                blast[i].unk9  = br.ReadInt16();
                blast[i].unk10 = br.ReadInt16();
                blast[i].unk11 = br.ReadInt32(); //20
            }

            for (int i = 0; i < awaCount; i++)
            {
                br.BaseStream.Seek(awaAddress + (i * 68), SeekOrigin.Begin);
                byte[] b = br.ReadBytes(4);
                Awaken[i].shortName = Encoding.ASCII.GetString(b);
                br.BaseStream.Seek(4, SeekOrigin.Current);
                Awaken[i].id       = br.ReadInt16();
                Awaken[i].id2      = br.ReadInt16();
                Awaken[i].racelock = br.ReadByte();
                Awaken[i].unk1     = br.ReadByte();
                Awaken[i].unk2     = br.ReadInt16();
                Awaken[i].hair     = br.ReadInt16();
                Awaken[i].unk3     = br.ReadInt16();

                Awaken[i].Paths    = new string[7];
                Awaken[i].Paths[0] = Helper.ReadAddressText(br, br.ReadInt32());
                Awaken[i].Paths[1] = Helper.ReadAddressText(br, br.ReadInt32());
                Awaken[i].Paths[2] = Helper.ReadAddressText(br, br.ReadInt32());
                Awaken[i].Paths[3] = Helper.ReadAddressText(br, br.ReadInt32());
                Awaken[i].Paths[4] = Helper.ReadAddressText(br, br.ReadInt32());
                Awaken[i].Paths[5] = Helper.ReadAddressText(br, br.ReadInt32());
                Awaken[i].Paths[6] = Helper.ReadAddressText(br, br.ReadInt32()); //28

                br.BaseStream.Seek(2, SeekOrigin.Current);
                Awaken[i].unk4  = br.ReadInt16();
                Awaken[i].unk5  = br.ReadInt16();
                Awaken[i].unk6  = br.ReadInt16();
                Awaken[i].unk7  = br.ReadInt16();
                Awaken[i].unk8  = br.ReadInt16();
                Awaken[i].unk9  = br.ReadInt16();
                Awaken[i].unk10 = br.ReadInt16();
                Awaken[i].unk11 = br.ReadInt32(); //20
            }

            br.Close();
        }