SourceSkyBoxer
Частый гость Девойс
Дата регистрации : Oct 2012
Проживает : Singen from Germany
Сообщений : 39
Возраст: 41
Рейтинг
[кратко]
Пользователи:
4.5 (2 )
Нарушения:
-5.8 (? )
Сообщения:
0.0 (Метки )
Регистрация:
8.0
Цитата:
This editor doesn't implement grid hack at all.
Why not?
Wait:
I have patch c++ file by Vluzacn on my computer.
I have tried to compile with Visual Studio 2008 Professional C++
It works fine and creates executable patch
C++ Source Code:
7 typedef unsigned char byte;
9 void error (const char *s)
11 printf ("Error: %s\nPress any key to quit" , s);
16 const unsigned int maxlen = 256;
25 int match (byte *buffer, unsigned int length, const part_t *part)
28 for (i=0; part[i].len; i++)
30 if (length < part[i].pos + part[i].len)
32 if (memcmp (buffer + part[i].pos, part[i].data, part[i].len))
38 int modify (byte *buffer, unsigned int length, const part_t *part)
41 for (i=0; part[i].len; i++)
43 if (length < part[i].pos + part[i].len)
45 memcpy (buffer + part[i].pos, part[i].data, part[i].len);
50 int main (int argc, char **argv)
52 const part_t part_35_4096[] =
54 {0x215F9, 4, {0x00,0x00,0x80,0x45}}, // max (float)4096
55 {0x21603, 4, {0x00,0x00,0x80,0xC5}}, // min (float)-4096
56 {0x51CD9, 4, {0x10,0x27,0x00,0x00}}, // visibility (int)10000
57 {0x3C4F1, 4, {0x00,0x00,0x00,0x3D}}, // min scale to reach (float)0.03125
58 {0x3C514, 4, {0x00,0x00,0x80,0x43}}, // max scale to reach (float)256
59 {0xB96E8, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x40}}, // max scale (double)256
60 {0xB96F0, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x3F}}, // min scale (double)0.03125
63 const part_t part_35_30720[] =
65 {0x215F9, 4, {0x00,0x00,0x80,0x46}}, // max (float)16777216
66 {0x21603, 4, {0x00,0x00,0x80,0xC6}}, // min (float)-16777216
67 {0x51CD9, 4, {0x25,0x72,0x00,0x00}}, // visibility (int)20000
68 {0x3C4F1, 4, {0x00,0x00,0x80,0x3C}}, // min scale to reach (float)0.015625
69 {0x3C514, 4, {0x00,0x00,0x00,0x43}}, // max scale to reach (float)128
70 {0xB96E8, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40}}, // max scale (double)128
71 {0xB96F0, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3F}}, // min scale (double)0.015625
74 const part_t part_35_unknown[] =
76 {0xD4480, 16,"220\0mapversion\0" },
79 const part_t part_34_4096[] =
81 {0x212C9, 4, {0x00,0x00,0x80,0x45}}, // max (float)4096
82 {0x212D3, 4, {0x00,0x00,0x80,0xC5}}, // min (float)-4096
83 {0x51959, 4, {0x10,0x27,0x00,0x00}}, // visibility (int)10000
84 {0x3C231, 4, {0x00,0x00,0x00,0x3D}}, // min scale to reach (float)0.03125
85 {0x3C254, 4, {0x00,0x00,0x80,0x43}}, // max scale to reach (float)256
86 {0xB86E0, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x40}}, // max scale (double)256
87 {0xB86E8, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x3F}}, // min scale (double)0.03125
90 const part_t part_34_30720[] =
92 {0x215F9, 4, {0x00,0x00,0x80,0x46}}, // max (float)16777216
93 {0x21603, 4, {0x00,0x00,0x80,0xC6}}, // min (float)-16777216
94 {0x51CD9, 4, {0x25,0x72,0x00,0x00}}, // visibility (int)20000
95 {0x3C4F1, 4, {0x00,0x00,0x80,0x3C}}, // min scale to reach (float)0.015625
96 {0x3C514, 4, {0x00,0x00,0x00,0x43}}, // max scale to reach (float)128
97 {0xB96E8, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40}}, // max scale (double)128
98 {0xB96F0, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3F}}, // min scale (double)0.015625
101 const part_t part_34_unknown[] =
103 {0xD3470, 16,"220\0mapversion\0" },
106 char filename[MAX_PATH+1];
109 strncpy (filename, argv[1], MAX_PATH);
114 memset (&ofn, 0, sizeof (ofn));
115 ofn.lStructSize = sizeof (ofn);
116 ofn.lpstrFile = filename;
117 strcpy (filename, "" );
118 ofn.nMaxFile = MAX_PATH;
119 ofn.lpstrDefExt = "exe" ;
120 ofn.lpstrFilter = "Executable(hammer.exe)\0*.exe\0All Files(*.*)\0*.*\0" ;
121 ofn.nFilterIndex = 1;
122 ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST;
123 ofn.lpstrTitle = "Convert Valve Hammer Editor Executable" ;
124 if (!GetSaveFileName (&ofn))
125 error ("No file selected" );
126 printf ("%s\n" , filename);
133 if (!(f = fopen (filename, "rb" )))
134 error ("Can not open file for read" );
135 fseek(f, 0, SEEK_END);
137 fseek(f, 0, SEEK_SET);
138 if (!(buffer = (byte *)malloc (length)))
140 if (fread (buffer, 1, length, f) != length)
141 error ("Can not read file" );
142 if (match (buffer, length, part_35_4096))
145 printf ("Detected version: Valve Hammer Editor 3.5 (normal)\n" );
147 else if (match (buffer, length, part_35_30720))
149 type = part_35_30720;
150 printf ("Detected version: Valve Hammer Editor 3.5 (already modified)\n" );
152 else if (match (buffer, length, part_35_unknown))
154 type = part_35_unknown;
155 printf ("Detected version: Valve Hammer Editor 3.5 (other)\n" );
157 else if (match (buffer, length, part_34_4096))
160 printf ("Detected version: Valve Hammer Editor 3.4 (normal)\n" );
162 else if (match (buffer, length, part_34_30720))
164 type = part_34_30720;
165 printf ("Detected version: Valve Hammer Editor 3.4 (already modified)\n" );
167 else if (match (buffer, length, part_34_unknown))
169 type = part_34_unknown;
170 printf ("Detected version: Valve Hammer Editor 3.5 (other)\n" );
174 error ("Not hammer.exe from Valve Hammer Editor 3.4 or 3.5" );
179 printf ("Press 1 to convert to normal version\nPress 2 to enlarge the range of grid\n" );
183 if (type == part_35_4096 || type == part_35_30720 || type == part_35_unknown)
185 if (type == part_34_4096 || type == part_34_30720 || type == part_34_unknown)
190 if (type == part_35_4096 || type == part_35_30720 || type == part_35_unknown)
191 type = part_35_30720;
192 if (type == part_34_4096 || type == part_34_30720 || type == part_34_unknown)
193 type = part_34_30720;
196 error ("Invalid input" );
200 if (!(f = fopen (filename, "wb" )))
201 error ("Can not open file for write" );
202 modify (buffer, length, type);
203 if (fwrite (buffer, 1, length, f) != length)
204 error ("Can not write file" );
208 printf ("Done\nPress any key to quit" );
I don't know - how do i change hex binaries from "-/+4096" to "-/+30720"?
Look out thread: am-half-lifecreations Sven-Coop Forum and Cry of Fear Forum
__________________
Здравствуйте, хорошие люди, я
из Германии, и я прощаю тебя,
что я глухой. Я просто хочу,
чтобы писать по-английски.
Мне очень жаль. Я не могу
написать хороший русский
язык.
Сообщить модератору | IP: Записан
Сообщение: 126008