IPB

Здравствуйте, гость ( Вход | Регистрация )

> Heroes RTS, требуются программисты
Baklajan
сообщение 17 Mar 2008, 20:25
Сообщение #1

Immortal
Сообщений: 2 359
Спасибо сказали: 461 раз




Требуются программисты на Си (ковыряние чужих исходников на языке, являющимся близкой производной Си) и реверс-инженеры (ковыряние чужого экзешника, откомпилированного с Си, и ничем не защищенного и не запакованного). Также приветствуются любые люди, умеющие писать распаковщики под хитрые деф-подобные форматы файлов.

Тема проекта: http://forum.df2.ru/index.php?showtopic=8422&st=220


--------------------
Бак, ты чего? Усмотрел в моём сообщении крамолу? ;)
hippocamus

Руки бы тебе отрезать за такие предложения по тактике и балансу. И клизму с патефонными иголками.
Бак
Go to the top of the pageAdd Nick
 
+Quote Post
 
Start new topic
Ответов
Bourn
сообщение 23 Mar 2008, 00:32
Сообщение #2

Immortal
Сообщений: 2 415
Спасибо сказали: 60 раз




Это содержимое плагина экстрактора на Яве для PAK файлов игры
Код
import java.io.File;

public class Plugin_PAK_HMMSYS extends ArchivePlugin
{

   public Plugin_PAK_HMMSYS()
   {
       name = "PAK_HMMSYS";
       canRead = true;
       canWrite = false;
       canReplace = false;
       canRename = false;
       allowImplicitReplacing = true;
       games = (new String[] {
           "Rising Kingdoms"
       });
       extensions = (new String[] {
           "pak"
       });
       columns = Archive.getColumns();
   }

   public int getMatchRating(FileManipulator filemanipulator)
   {
       int i;
       i = 0;
       if(filemanipulator.getExtension().equals(extensions[0]))
           i += 25;
       if(filemanipulator.readString(15).equals("HMMSYS PackFile"))
           i += 50;
       filemanipulator.skip(17);
       int j = filemanipulator.getLength();
       ArchivePlugin.check;
       if(FieldValidator.numFiles(filemanipulator.readIntL()))
           i += 5;
       ArchivePlugin.check;
       if(FieldValidator.length(filemanipulator.readIntL(), j))
           i += 5;
       return i;
       Throwable throwable;
       throwable;
       return 0;
   }

   public Resource[] read(File file)
   {
       Resource aresource[];
       addFileTypes();
       FileManipulator filemanipulator = new FileManipulator(file, "r");
       filemanipulator.skip(32);
       int i = filemanipulator.readIntL();
       ArchivePlugin.check;
       FieldValidator.numFiles(i);
       filemanipulator.skip(4);
       int j = filemanipulator.getLength();
       aresource = new Resource[i];
       WSProgressDialog.loadProgress(i);
       String s = "";
       for(int k = 0; k < i; k++)
       {
           int l = filemanipulator.readByteU();
           int i1 = filemanipulator.readByteU();
           int j1 = l - i1;
           String s1 = "";
           if(i1 > 0)
               s1 = s.substring(0, i1);
           s1 = s1 + filemanipulator.readString(j1);
           s = s1;
           int k1 = filemanipulator.getOffset();
           byte byte0 = 4;
           int l1 = filemanipulator.readIntL();
           ArchivePlugin.check;
           FieldValidator.offset(l1, j);
           int i2 = filemanipulator.getOffset();
           byte byte1 = 4;
           int j2 = filemanipulator.readIntL();
           ArchivePlugin.check;
           FieldValidator.length(j2, j);
           aresource[k] = new ReplacableResource(file, s1, l1, k1, byte0, j2, i2, byte1);
           WSProgressDialog.setProgress(k);
       }

       filemanipulator.close();
       return aresource;
       Throwable throwable;
       throwable;
       Plugin.logError(throwable);
       return null;
   }

А вот описание:
Код
// The filenames are stored so that directory names etc are reused, thus minimising repeats.
// To determine the filename, take the first "Previous Filename Reuse Length" chars of the
// filename of the previous file, and append the "Filename Part" to it.
// In other words, if a directory repeats, you would keep the first X bytes of the previous
// file and just append the actual name of the file.

16 - Header ("HMMSYS PackFile" + (byte)10)
4 - Unknown (26)
12 - null
4 - Number Of Files?
4 - Directory Length [+40 archive header]

// for each file
 1 - Filename Length
 1 - Previous Filename Reuse Length
 X - Filename Part (length = filenameLength - previousFilenameReuseLength)
 4 - File Offset
 4 - File Length
 
X - Padding (repeating 153,121,150,50) until first file offset
X - File Data


--------------------
Не лезь в дела Мудрых. Понять - не поймешь, а хлопот не оберешься.
Go to the top of the pageAdd Nick
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 12 October 2025 - 22:23
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика