Камрад
|
На самом деле все это стоит обобщить для всех вариантов .exe'шника, потому что патчи выходят регулярно. Да и при нынешнем 1.20 патче скажем у меня файл другой длины (5,254,611 байт). Но это на самом деле не проблема, стоит только найти правильные оффсеты.
На ассемблере есссно ниче программить не нужно, потому что выложен же побайтовый список изменений. Просто байты нужные могут быть в разных местах. То есть, например, если у RealKtulhu первый оффсет 00290BBA, а последний - 00290DEE, то в моем варианте было соотвественно: 002915BA и 002917EЕ.
Вообще для любого варината nwmain нужные оффсеты проще всего найти по 33-байтному блоку (15 14 F4 85 00 8B 4B 68 81 E7 FF 00 00 00 3B 4C BA 1C 72 0D 5F 5E 5D B8 01 00 00 00 5B 83 C4 08 C3). В nwmain.exe только одна такая последовательность (она примерно в середине файла). Так что ошибиться тут невозможно. У RealKtulhu этот блок начинается с оффсета 00290DBC. Поэтому сравнив свой начальный оффсет для такого же блока с 00290DBC, можно вычислить разницу (у меня скажем она была равна A00, то есть все мои оффсеты на A00 больше).
P.S. Думаю, что это будет работать точно так же даже для всяких левых (типа русЕфЕцированных) версий. Вычисление экспы по идее все равно должно работать одинаково.
P.P.S. Зато у меня есть вопрос. Я так понял, что выше 25-го левела на левел всегда по 25k экспы требуется? Понятно, что официальных таблиц 3Ed экспы выше 20-го левела просто нет, но вот откуда взялось именно 25k... Что, так в xptable.2da записано?
Изменено: prodigy_, 20-07-2002 в 07:44
|