MapleStory Guides


Thursday, August 20, 2009

Create your own pre-patcher & list of Maple FTPs

Since the original pre-patcher topic has not been updated by me in over 10 patches, it's pretty much assumed that I will never update it again. That is true. I figured that instead of giving away a fish, I'll teach you how. It takes only a few minutes to learn how to do.

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