Ejemplo n.º 1
0
        static void VDFS_Open(Hook hook, RegisterMemory mem)
        {
            zString path    = new zString(mem[Registers.EAX]);
            string  pathStr = path.ToString();

            if (pathStr.EndsWith("CAMERA.DAT")) // f**k this
            {
                path.Set(@"_WORK\DATA\SCRIPTS\_COMPILED\CAMERA.DAT");
            }

            // check if it exists in vdfs
            int filePtr = mem[Registers.ESI];

            if (Process.THISCALL <BoolArg>(filePtr, 0x449020) && Process.ReadInt(filePtr + 0x2A00) == VDF_VIRTUAL)
            {
                return;
            }

            // check if it's in the project's folder
            string projectPath = GetProjectFilePath(pathStr);

            if (File.Exists(projectPath))
            {
                path.Set(projectPath);
            }
        }
Ejemplo n.º 2
0
        // basically only for music system
        static void DirectFileConvert(RegisterMemory mem)
        {
            zString       zStr = new zString(mem.GetArg(0));
            StringBuilder sb   = new StringBuilder(zStr.ToString());

            if (sb.Length > 0)
            {
                if (sb.ToString().StartsWith(Program.GothicRootPath, StringComparison.OrdinalIgnoreCase))
                {
                    sb.Remove(0, Program.GothicRootPath.Length);
                }

                if (sb[0] != '\\')
                {
                    sb.Insert(0, '\\');
                }
                sb.Insert(0, Program.ProjectPath);

                string path = sb.ToString();
                if (Directory.Exists(path))
                {
                    zStr.Set(path);
                }
            }
        }
Ejemplo n.º 3
0
        static void hook_LoadParserFile(Hook hook, RegisterMemory rmem)
        {
            try
            {
                zString str = new zString(rmem[0]);
                Logger.Log("LoadParserFile: " + str);

                Process.THISCALL <NullReturnCall>(0xAB40C0, 0x00793100);                                                //parser.reset
                Process.THISCALL <NullReturnCall>(Gothic.Session.oCGame.GameAddress, 0x006D4780, new IntArg(0xAB40C0)); //Define_ulfi_externals
                Process.THISCALL <NullReturnCall>(0xAB40C0, 0x00793460, new IntArg(0));                                 //parser.enabletreeload(0)
                Process.THISCALL <NullReturnCall>(0xAB40C0, 0x00793440, new IntArg(0));                                 //parser.enabletreesave(0)

                initDefaultScripts();

                using (zString z = zString.Create("C_NPC"))
                    Process.THISCALL <NullReturnCall>(0xAB40C0, 0x00794730, z, new IntArg(0x120)); // parser.AddClassOffset

                using (zString z = zString.Create("C_ITEM"))
                    Process.THISCALL <NullReturnCall>(0xAB40C0, 0x00794730, z, new IntArg(0x120)); // parser.AddClassOffset

                zString mainfile = new zString(0xAB40C0 + 0x2074);
                mainfile.Set("GUC.src");

                Process.THISCALL <NullReturnCall>(0xAB40C0, 0x007900E0); //parser.createPCode
                Process.THISCALL <NullReturnCall>(0xAB40C0, 0x0078E730); //parser.error
            }
            catch (Exception ex)
            {
                Logger.LogError(ex);
            }
        }
Ejemplo n.º 4
0
        static void DirectFileConvert(Hook hook, RegisterMemory mem)
        {
            zString fileName = new zString(mem[0]);
            string  projPath = GetProjectFilePath(fileName.ToString());

            if (Directory.Exists(projPath))
            {
                fileName.Set(projPath);
            }
        }