Tutorial: How to make a Maplestory pre-patcher.
Time to completion: 5-10 minutes
Required files: PatchMaker.zip
How to do it:
1. Unpack PatchMaker.zip into your Maplestory directory. Then open the PatchMaker folder.
2. Inside the folder you will see three files - ManualPatch.base, WzPatchMaker.exe, and WzPatch.bat. The third file, WzPatch.bat, is the only file you will ever need to change.
3. Download the patch file from Nexon's FTP:
Here's what the patch file URL is for 0.72:
http://download2.nexon.net/Game/MapleStory/patch/patchdir/00072/00071to00072.patch
for 0.73:
http://download2.nexon.net/Game/MapleStory/patch/patchdir/00073/00072to00073.patch
Just look at the links to figure out how to get your patch files. It's really hard to describe, but very easy to comprehend.
When you download the patch file, download it to your PatchMaker directory.
4. After the file is downloaded, right click on "WzPatch.bat" and click on "Edit".
5. Change "00071to00072.patch" to the name of the file you downloaded. Save and exit.
6. Double click on the WzPatch.bat to make your ManualPatcher.exe
7. Run the ManualPatcher.exe file, select your Maplestory directory, and patch your game!
Some people might feel wary about using EXE files provided by other people. I completely understand. The source code is below. Credits to TEXEL for providing it:
Source Code - C++
Code:
#include
using std::string;
int main(unsigned int argc, char *argv[])
{
//open files
FILE* filePatch = NULL;
FILE* fileInfo = NULL;
FILE* fileBase = NULL;
FILE* fileOut = NULL;
if(argc < 1)
{
printf("%s\n", argv[0]);
return 0;
}
filePatch = fopen(argv[1], "rb");
if(!filePatch)
{
printf("Failed to open patch file %s!\n", argv[1]);
return 1;
}
fileBase = fopen("ManualPatch.base", "rb");
if(!fileBase)
{
if(filePatch)
fclose(filePatch);
if(fileInfo)
fclose(fileInfo);
printf("Failed to open exe file %s!\n", "ManualPatch.base");
return 1;
}
fileOut = fopen("ManualPatch.exe", "wb");
if(!fileOut)
{
if(filePatch)
fclose(filePatch);
if(fileInfo)
fclose(fileInfo);
if(fileBase)
fclose(fileBase);
printf("Failed to open output file %s!\n", "ManualPatch.exe");
return 0;
}
//write base EXE
fseek(fileBase, 0, SEEK_END);
unsigned int fileBaseSize = ftell(fileBase);
fseek(fileBase, 0, SEEK_SET);
printf("Base EXE size is %u\n", fileBaseSize);
unsigned char* pBuffer = new unsigned char[fileBaseSize];
fread(pBuffer, 1, fileBaseSize, fileBase);
fwrite(pBuffer, 1, fileBaseSize, fileOut);
delete[] pBuffer;
//write patch data
fseek(filePatch, 0, SEEK_END);
unsigned int filePatchSize = ftell(filePatch);
fseek(filePatch, 0, SEEK_SET);
printf("Patch size is %u\n", filePatchSize);
pBuffer = new unsigned char[filePatchSize];
fread(pBuffer, 1, filePatchSize, filePatch);
fwrite(pBuffer, 1, filePatchSize, fileOut);
delete[] pBuffer;
//write info data
unsigned int fileInfoSize = 0;
char* note = "\r\nCreated by Fiel - Southperry.net\r\n";
fwrite(note, 1, strlen(note), fileOut);
printf("Note size is %u\n", strlen(note));
fileInfoSize += (unsigned int)strlen(note);
fwrite(&filePatchSize, 4, 1, fileOut);
fwrite(&fileInfoSize, 4, 1, fileOut);
unsigned int patchcrc = 0xF2F7FBF3;
fwrite(&patchcrc, 4, 1, fileOut);
if(filePatch)
fclose(filePatch);
if(fileInfo)
fclose(fileInfo);
if(fileBase)
fclose(fileBase);
if(fileOut)
fclose(fileOut);
printf("All done, ManualPatch.exe created.\n");
}
Here are the FTPs for many versions of Maplestory:
MSEA:
-- Patch
-- Full Download (name of download changes with every patch)
GMS:
-- Old Patch FTP
-- New Patch FTP
-- [Versions 63-69] --> Direct Client Download (No Pando) (Remember to change URL for the version)
-- [Versions 70+] --> Direct Client Download (No Pando) (Remember to change URL for the version)
JMS:
-- Patch
-- Full Download
KMST:
-- Patch (Entire directory is forbidden. You have to know the exact link you want)
-- Full Download
BMS:
-- Patch
-- Full Download
EMS:
-- Patch
-- Full Download
CMS:
-- Patch