Fiel
2008-08-01, 05:34 AM
GMS-only
Want pre-patcher support? Consider donating (http://www.southperry.net/forums/showthread.php?t=330).
Note: Even if I'm not able to post the pre-patcher before the Nexon servers come online, I will still be posting a pre-patcher in this topic as soon as I am able. Many users have reported the futility of using the Nexon auto-patcher and would prefer to use this pre-patcher instead.
I am not your tech support. You do this at your own risk. These pre-patchers are not endorsed by or affiliated with Nexon America in any way, shape, or form.
Link (0.60 - 0.61) --> http://rapidshare.com/files/154359669/00060to00061new.exe.html
Link (0.58 - 0.59) --> http://rapidshare.com/files/137336596/00058to00059.exe <--- this is the one updated as of 3:17 PM on the FTP
(MD5: 5a0641ca5b7789a77410c51eeb546f4e) (Size: 28,483,584 bytes)
Link (0.55 - 0.56) --> http://www.megaupload.com/?d=IKQ9UI89
(MD5: 7bf049cfc23225ca5690f545e4f93116) (Size: 171,151,360 bytes)
Due to the Character.wz bug, no 0.55 pre-patcher will be posted.
1. What is a pre-patcher?
2. How do you create a patcher early?
3. Why should I trust this? Is there a keylogger?
4. But what about people who have their games corrupted by using this patcher? They have to redownload the entire game to keep playing Maple!
5. I can't use this patcher because it says that Base.wz is corrupted OR My patcher keeps freezing at Base.wz
6. What if they change the patch data after I've patched?
7. I don't get it. How do I use this patcher?
8. I created my own pre-patcher, can you include the link to it in this thread?
9. How do I create my own manual patcher?
1.Q: What is a pre-patcher?
1.A: A pre-patcher is an executable file that will patch your game before the Nexon login servers come up. Using this pre-patcher means that immediately once the Nexon login servers come online, you will not need to use the auto-patcher in order to play the game.
2.Q: How do you create a patcher early?
2.A: Nexon posts the *.patch files online before the login servers come up. It's possible to create a pre-patcher using those files on the FTP.
3.Q: Why should I trust this? Is there a keylogger?
3.A: There are several reasons why this is a trustworthy program:
1. The source for how to create this pre-patcher in Python is provided below (super easy to make in Python too!):
#!/usr/bin/python
import struct
import cStringIO
import os
import time
import zlib
def Main(OldVer, NewVer):
#Read old Nexon Patcher
PrintLog('%sto%s - Reading manualpatch.base file' % (OldVer, NewVer))
Base = openfile('manualpatch.base', 'rb')
BaseData = CheckBase(Base.read(), OldVer, NewVer)
Base.close()
#Read the patch data
PrintLog('%sto%s - Reading the patch data' % (OldVer, NewVer))
Patch = openfile(OldVer + 'to' + NewVer + '.patch', 'rb')
PatchData = CheckZLIB(Patch.read(), OldVer, NewVer)
PatchSize = len(PatchData)
Patch.close()
#Read the patch text file
PrintLog('%sto%s - Reading the notice file' % (OldVer, NewVer))
Notice = cStringIO.StringIO('Created by Fiel - Southperry.net\r\nPatch 0.%s' % RemoveZeros(NewVer))
NoticeData = Notice.read()
NoticeSize = len(NoticeData)
Notice.close()
#Constructing the ManualPatcher
PrintLog('%sto%s - Creating the Manual Patcher' % (OldVer, NewVer))
ManualPatcher = openfile(OldVer + 'to' + NewVer + '.exe', 'wb')
ManualPatcher.write(BaseData)
ManualPatcher.write(PatchData)
ManualPatcher.write(NoticeData)
ManualPatcher.write(struct.pack('L', PatchSize))
ManualPatcher.write(struct.pack('L', NoticeSize))
ManualPatcher.write(struct.pack('BBBB', 0xF3, 0xFB, 0xF7, 0xF2))
ManualPatcher.close()
PrintLog('%sto%s - Manual Patcher created successfully!' % (OldVer, NewVer))
def PrintError(StringError):
f = open('PatcherLog.txt', 'a')
f.write('%s : ERROR - %s\n' % (time.strftime('%x (%H:%M)'),StringError))
f.close()
exit(-1)
def PrintLog(StringLog):
f = openfile('PatcherLog.txt', 'a')
f.write('%s : %s\n' % (time.strftime('%x (%H:%M)'),StringLog))
f.close()
def openfile(FileName, OpenType):
try:
f = open(FileName, OpenType)
except IOError:
PrintError('File %s does not exist. Please make sure the file is in all lowercase letters.' % (FileName))
return f
def RemoveZeros(string):
if string[0] == '0':
string = RemoveZeros(string[1:])
return string
def CheckBase(BaseFile, OldVer, NewVer):
if hex(struct.unpack('H', BaseFile[0:2])[0]) == '0xda78':
BaseFile = zlib.decompress(BaseFile)
crc = zlib.crc32(BaseFile)
PrintLog('%sto%s - Checking the manualpatch.base file for the correct version.' % (OldVer, NewVer))
if crc != 562146221:
PrintError('manualpatch.base file is the wrong version. Please download the newest version from southperry.net/manualpatch.base')
else:
return BaseFile
def CheckZLIB(PatchFile, OldVer, NewVer):
text = PatchFile[16:len(PatchFile)]
PrintLog('%sto%s - Checking the *.patch file for errors' % (OldVer, NewVer))
try:
zlib.decompress(text)
except:
PrintError('%sto%s.patch is corrupt.' % (OldVer, NewVer))
return PatchFile
def FindPatches():
patchnames = []
ManualPatchBase = 0
for file in os.listdir('.'):
if file[-6:] == '.patch':
x = file.replace('.patch','')
x = x.split('to')
if len(x) != 2:
PrintError("Patch file name '%s' is incorrect. It must be in the format 'XtoY.patch' where X is your current version and Y is the version you're patching to." % file)
PrintLog('Found patch file %s' % file)
patchnames.append(x)
elif file == 'manualpatch.base':
ManualPatchBase = 1
if patchnames == []:
PrintError('There are no *.patch files in your current directory.')
if ManualPatchBase == 0:
PrintError('manualpatch.base does not exist. Please download it from southperry.net/manualpatch.base to your current directory')
return patchnames
Versions = FindPatches()
for OldVer, NewVer in Versions:
Main(OldVer, NewVer)
2. Another common objection to this pre-patcher is that there is a noticeable size difference between my own pre-patcher and Nexon's official patcher (usually on the order of about 1 megabyte). The reason for this is that Nexon's newer patcher contains a lot of useless GUI-related items in their patcher. This pre-patcher does away with a lot of that, therefore resulting in a slightly smaller patch size.
4.Q: But what about people who have their games corrupted by using this patcher? They have to redownload the entire game to keep playing Maple!
4.A: That is always a risk, but not a risk that can't be avoided with due precaution. Before you use the patcher, copy your entire Maplestory folder and save it to another directory. Use the pre-patcher on your original Maplestory folder. If the pre-patcher fails, use your backup copy instead.
5.Q: I can't use this patcher because it says that Base.wz is corrupted OR My patcher keeps freezing at Base.wz
5.A: This is another common problem dealing with all of Nexon's patchers, whether it's using this pre-patcher or the manual patcher on their website. To alleviate this problem somewhat (especially because I've never had this problem with any patcher I've created), I've included my own base.wz file that I've used to patch to the newest version. Try to use this base.wz file instead of your own for a greater success in patching.
If you're still having problems with a stuck patcher, see vnc's thread (http://www.sleepywood.net/forum/showthread.php?t=1217887) on how to "unstick" it.
6.Q: What if they change the patch data after I've patched?
6.A: That's a possibility, and it has happened a few times before. In that case, I will remove the link for that patch as soon as possible and upload a new patcher. Secondly, if you take careful precaution as done in the "corrupted games" question above, this shouldn't be an issue for you.
7.Q: I don't get it. How do I use this patcher?
7.A: Follow these simple steps:
Click on the Megaupload link
On the top portion of the screen to the right of the MegaUpload logo, it states "Please enter ____ here:" Type those three letters/numbers into the box. Click download.
Wait for the 45 seconds, then click on "download" under the free column. Download the ZIP file to your Maplestory directory.
Go to your Maplestory directory and double click on the ZIP file. There should be two files inside the zip file - Base.wz and ManualPatcher.exe. Run ManualPatcher.exe
The program now needs to know where Maplestory is installed. Usually the program can auto-detect where the installation is, but this auto-detection can be incorrect if you have multiple versions of Maple (JMS, KMS, EMS) installed on your computer. Make sure that you select the correct directory.
Click OK. Maplestory will begin patching!
If you can't figure out how to use the pre-patcher past this point, there's really nothing else I can do to help you.
8.Q: I created my own pre-patcher, can you include the link in this thread?
8.A: In the interest of security for the general population of Maplers, I will not be accepting any links for any other pre-patchers
9.Q: How do I create my own manual patcher?
9.A: These directions will change from patch to patch due to the version numbers. But simply replace "55" in the following with your current version number and "56" with the version you're patching to.
Here's how you can make a pre-patcher yourself
1)Install Python(http://www.python.org/download/)
2)Copy Fiel's script in the spoiler into a text document. Click File --> Save As. In the "Save as type" combo box, change the option to "All Files". Save the document as "patcher.py".
3)Download the ManualPatch.base file from www.southperry.net/manualpatch.base
4)Download the patch file from ftp://patch.mapleglobal.com/Maple/patch/patchdir/
5)Put the patcher.py, manualpatch.base, and the patch file in the same folder (desktop works)
6)Double-click patcher.py
The patcher.py script also creates a verbose log of everything it does. Check the PatcherLog.txt file that appears if your manual patcher is not created.
After double-clicking the *.py a command prompt should pop up and when it's gone the patcher should be created.
Want pre-patcher support? Consider donating (http://www.southperry.net/forums/showthread.php?t=330).
Note: Even if I'm not able to post the pre-patcher before the Nexon servers come online, I will still be posting a pre-patcher in this topic as soon as I am able. Many users have reported the futility of using the Nexon auto-patcher and would prefer to use this pre-patcher instead.
I am not your tech support. You do this at your own risk. These pre-patchers are not endorsed by or affiliated with Nexon America in any way, shape, or form.
Link (0.60 - 0.61) --> http://rapidshare.com/files/154359669/00060to00061new.exe.html
Link (0.58 - 0.59) --> http://rapidshare.com/files/137336596/00058to00059.exe <--- this is the one updated as of 3:17 PM on the FTP
(MD5: 5a0641ca5b7789a77410c51eeb546f4e) (Size: 28,483,584 bytes)
Link (0.55 - 0.56) --> http://www.megaupload.com/?d=IKQ9UI89
(MD5: 7bf049cfc23225ca5690f545e4f93116) (Size: 171,151,360 bytes)
Due to the Character.wz bug, no 0.55 pre-patcher will be posted.
1. What is a pre-patcher?
2. How do you create a patcher early?
3. Why should I trust this? Is there a keylogger?
4. But what about people who have their games corrupted by using this patcher? They have to redownload the entire game to keep playing Maple!
5. I can't use this patcher because it says that Base.wz is corrupted OR My patcher keeps freezing at Base.wz
6. What if they change the patch data after I've patched?
7. I don't get it. How do I use this patcher?
8. I created my own pre-patcher, can you include the link to it in this thread?
9. How do I create my own manual patcher?
1.Q: What is a pre-patcher?
1.A: A pre-patcher is an executable file that will patch your game before the Nexon login servers come up. Using this pre-patcher means that immediately once the Nexon login servers come online, you will not need to use the auto-patcher in order to play the game.
2.Q: How do you create a patcher early?
2.A: Nexon posts the *.patch files online before the login servers come up. It's possible to create a pre-patcher using those files on the FTP.
3.Q: Why should I trust this? Is there a keylogger?
3.A: There are several reasons why this is a trustworthy program:
1. The source for how to create this pre-patcher in Python is provided below (super easy to make in Python too!):
#!/usr/bin/python
import struct
import cStringIO
import os
import time
import zlib
def Main(OldVer, NewVer):
#Read old Nexon Patcher
PrintLog('%sto%s - Reading manualpatch.base file' % (OldVer, NewVer))
Base = openfile('manualpatch.base', 'rb')
BaseData = CheckBase(Base.read(), OldVer, NewVer)
Base.close()
#Read the patch data
PrintLog('%sto%s - Reading the patch data' % (OldVer, NewVer))
Patch = openfile(OldVer + 'to' + NewVer + '.patch', 'rb')
PatchData = CheckZLIB(Patch.read(), OldVer, NewVer)
PatchSize = len(PatchData)
Patch.close()
#Read the patch text file
PrintLog('%sto%s - Reading the notice file' % (OldVer, NewVer))
Notice = cStringIO.StringIO('Created by Fiel - Southperry.net\r\nPatch 0.%s' % RemoveZeros(NewVer))
NoticeData = Notice.read()
NoticeSize = len(NoticeData)
Notice.close()
#Constructing the ManualPatcher
PrintLog('%sto%s - Creating the Manual Patcher' % (OldVer, NewVer))
ManualPatcher = openfile(OldVer + 'to' + NewVer + '.exe', 'wb')
ManualPatcher.write(BaseData)
ManualPatcher.write(PatchData)
ManualPatcher.write(NoticeData)
ManualPatcher.write(struct.pack('L', PatchSize))
ManualPatcher.write(struct.pack('L', NoticeSize))
ManualPatcher.write(struct.pack('BBBB', 0xF3, 0xFB, 0xF7, 0xF2))
ManualPatcher.close()
PrintLog('%sto%s - Manual Patcher created successfully!' % (OldVer, NewVer))
def PrintError(StringError):
f = open('PatcherLog.txt', 'a')
f.write('%s : ERROR - %s\n' % (time.strftime('%x (%H:%M)'),StringError))
f.close()
exit(-1)
def PrintLog(StringLog):
f = openfile('PatcherLog.txt', 'a')
f.write('%s : %s\n' % (time.strftime('%x (%H:%M)'),StringLog))
f.close()
def openfile(FileName, OpenType):
try:
f = open(FileName, OpenType)
except IOError:
PrintError('File %s does not exist. Please make sure the file is in all lowercase letters.' % (FileName))
return f
def RemoveZeros(string):
if string[0] == '0':
string = RemoveZeros(string[1:])
return string
def CheckBase(BaseFile, OldVer, NewVer):
if hex(struct.unpack('H', BaseFile[0:2])[0]) == '0xda78':
BaseFile = zlib.decompress(BaseFile)
crc = zlib.crc32(BaseFile)
PrintLog('%sto%s - Checking the manualpatch.base file for the correct version.' % (OldVer, NewVer))
if crc != 562146221:
PrintError('manualpatch.base file is the wrong version. Please download the newest version from southperry.net/manualpatch.base')
else:
return BaseFile
def CheckZLIB(PatchFile, OldVer, NewVer):
text = PatchFile[16:len(PatchFile)]
PrintLog('%sto%s - Checking the *.patch file for errors' % (OldVer, NewVer))
try:
zlib.decompress(text)
except:
PrintError('%sto%s.patch is corrupt.' % (OldVer, NewVer))
return PatchFile
def FindPatches():
patchnames = []
ManualPatchBase = 0
for file in os.listdir('.'):
if file[-6:] == '.patch':
x = file.replace('.patch','')
x = x.split('to')
if len(x) != 2:
PrintError("Patch file name '%s' is incorrect. It must be in the format 'XtoY.patch' where X is your current version and Y is the version you're patching to." % file)
PrintLog('Found patch file %s' % file)
patchnames.append(x)
elif file == 'manualpatch.base':
ManualPatchBase = 1
if patchnames == []:
PrintError('There are no *.patch files in your current directory.')
if ManualPatchBase == 0:
PrintError('manualpatch.base does not exist. Please download it from southperry.net/manualpatch.base to your current directory')
return patchnames
Versions = FindPatches()
for OldVer, NewVer in Versions:
Main(OldVer, NewVer)
2. Another common objection to this pre-patcher is that there is a noticeable size difference between my own pre-patcher and Nexon's official patcher (usually on the order of about 1 megabyte). The reason for this is that Nexon's newer patcher contains a lot of useless GUI-related items in their patcher. This pre-patcher does away with a lot of that, therefore resulting in a slightly smaller patch size.
4.Q: But what about people who have their games corrupted by using this patcher? They have to redownload the entire game to keep playing Maple!
4.A: That is always a risk, but not a risk that can't be avoided with due precaution. Before you use the patcher, copy your entire Maplestory folder and save it to another directory. Use the pre-patcher on your original Maplestory folder. If the pre-patcher fails, use your backup copy instead.
5.Q: I can't use this patcher because it says that Base.wz is corrupted OR My patcher keeps freezing at Base.wz
5.A: This is another common problem dealing with all of Nexon's patchers, whether it's using this pre-patcher or the manual patcher on their website. To alleviate this problem somewhat (especially because I've never had this problem with any patcher I've created), I've included my own base.wz file that I've used to patch to the newest version. Try to use this base.wz file instead of your own for a greater success in patching.
If you're still having problems with a stuck patcher, see vnc's thread (http://www.sleepywood.net/forum/showthread.php?t=1217887) on how to "unstick" it.
6.Q: What if they change the patch data after I've patched?
6.A: That's a possibility, and it has happened a few times before. In that case, I will remove the link for that patch as soon as possible and upload a new patcher. Secondly, if you take careful precaution as done in the "corrupted games" question above, this shouldn't be an issue for you.
7.Q: I don't get it. How do I use this patcher?
7.A: Follow these simple steps:
Click on the Megaupload link
On the top portion of the screen to the right of the MegaUpload logo, it states "Please enter ____ here:" Type those three letters/numbers into the box. Click download.
Wait for the 45 seconds, then click on "download" under the free column. Download the ZIP file to your Maplestory directory.
Go to your Maplestory directory and double click on the ZIP file. There should be two files inside the zip file - Base.wz and ManualPatcher.exe. Run ManualPatcher.exe
The program now needs to know where Maplestory is installed. Usually the program can auto-detect where the installation is, but this auto-detection can be incorrect if you have multiple versions of Maple (JMS, KMS, EMS) installed on your computer. Make sure that you select the correct directory.
Click OK. Maplestory will begin patching!
If you can't figure out how to use the pre-patcher past this point, there's really nothing else I can do to help you.
8.Q: I created my own pre-patcher, can you include the link in this thread?
8.A: In the interest of security for the general population of Maplers, I will not be accepting any links for any other pre-patchers
9.Q: How do I create my own manual patcher?
9.A: These directions will change from patch to patch due to the version numbers. But simply replace "55" in the following with your current version number and "56" with the version you're patching to.
Here's how you can make a pre-patcher yourself
1)Install Python(http://www.python.org/download/)
2)Copy Fiel's script in the spoiler into a text document. Click File --> Save As. In the "Save as type" combo box, change the option to "All Files". Save the document as "patcher.py".
3)Download the ManualPatch.base file from www.southperry.net/manualpatch.base
4)Download the patch file from ftp://patch.mapleglobal.com/Maple/patch/patchdir/
5)Put the patcher.py, manualpatch.base, and the patch file in the same folder (desktop works)
6)Double-click patcher.py
The patcher.py script also creates a verbose log of everything it does. Check the PatcherLog.txt file that appears if your manual patcher is not created.
After double-clicking the *.py a command prompt should pop up and when it's gone the patcher should be created.