Hey E*Pvp...wie die Überschrift schon erklärt,werde ich euch jetzt zeigen wie ihr einen eigenen Patcher erstellen könnt!
Benötigte Programme:
AutoIt 3
und eig. nur den Code :P
So dann fangen wir mal an
Ich habe den Code NICHT von iMer geklaut,ich habe den Code auf Website gefunden!
1. Schritt
Öffnet einen Editor..
und kopiert den PHP Code dort rein:
PHP Code:
#Include <File.au3>
#Include <GuiConstants.au3>
#include <IE.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#NoTrayIcon
Global $m2ordner = @ScriptDir
Global $ScriptDir = @ScriptDir
Global $TempDir = @TempDir
Global $url = FileReadLine($ScriptDir & "\patch.ini", 1)
Global $adurl = FileReadLine ($ScriptDir & "\patch.ini",2)
Global $fensterurl = FileReadLine ($ScriptDir & "\patch.ini",3)
Global $buttonurl = FileReadLine ($ScriptDir & "\patch.ini",4)
FileInstall("PFADADRESSE ZU PICTURE.BMP (NAME VON --->)", @Tempdir&"\metin2start.bmp",1)
FileInstall("PFADADRESSE ZU PICTURE.BMP (NAME VON --->)", @Tempdir&"\btn_startgame_up.bmp",1)
FileInstall("PFADADRESSE ZU PICTURE.BMP (NAME VON --->)", @Tempdir&"\btn_settings_up.bmp",1)
FileInstall("PFADADRESSE ZU PICTURE.BMP (NAME VON --->)", @Tempdir&"\btn_newaccount_up.bmp",1)
FileInstall("PFADADRESSE ZU PICTURE.BMP (NAME VON --->)", @Tempdir&"\btn_idpwd_up.bmp",1)
FileInstall("PFADADRESSE ZU PICTURE.BMP (NAME VON --->)", @Tempdir&"\btn_quit_up.bmp",1)
;GUI######################################################
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Metin2 Patcher", 373, 541, 193, 125)
GUISetOnEvent($GUI_EVENT_CLOSE, "_close")
$stat = GUICtrlCreateEdit("", 16, 8, 337, 281)
GUICtrlSetData(-1, "Metin2 Patcher"&@CRLF&"Dateiüberprüfung von...")
$cancel = GUICtrlCreateButton("Cancel", 288, 496, 75, 25, 0)
GUICtrlSetOnEvent($cancel, "_close")
$Progress1 = GUICtrlCreateProgress(16, 464, 334, 17)
;16, 312, 340, 13
$oIE = _IECreateEmbedded()
$oIE_ctrl = GUICtrlCreateObj($oIE, 16, 312, 336, 136)
GUISetState(@SW_SHOW)
_IENavigate($oIE, $adurl)
$Form2 = GUICreate("Metin2 Patcher", 595, 385, 328, 160)
GUISetOnEvent($GUI_EVENT_CLOSE, "_close")
$Pic1 = GUICtrlCreatePic(@Tempdir&"\metin2start.bmp", 0, 0, 593, 382, $BS_BITMAP)
$Pic1 = GUICtrlCreatePic(@Tempdir&"\metin2start.bmp", 0, 0, 593, 382, $BS_BITMAP)
$start = GUICtrlCreateButton("(Not allowed)", 464, 40, 127, 41, $BS_BITMAP)
GUICtrlSetImage(-1, @Tempdir&"\btn_startgame_up.bmp", 1)
GUICtrlSetOnEvent($start, "start")
$config = GUICtrlCreateButton("(Not allowed)", 464, 96, 127, 25, $BS_BITMAP)
GUICtrlSetOnEvent($config, "config")
GUICtrlSetImage(-1, @Tempdir&"\btn_settings_up.bmp", 1)
$seite1 = GUICtrlCreateButton("(Not allowed)", 464, 184, 127, 25, $BS_BITMAP)
GUICtrlSetImage(-1, @Tempdir&"\btn_newaccount_up.bmp", 1)
GUICtrlSetOnEvent($seite1, "seite")
$seite2 = GUICtrlCreateButton("(Not allowed)", 464, 160, 129, 25, $BS_BITMAP)
GUICtrlSetImage(-1, @Tempdir&"\btn_idpwd_up.bmp", 1)
GUICtrlSetOnEvent($seite2, "seite")
$ende = GUICtrlCreateButton("(Not allowed)", 464, 352, 127, 25, $BS_BITMAP)
GUICtrlSetImage(-1, @Tempdir&"\btn_quit_up.bmp", 1)
GUICtrlSetOnEvent($ende, "_close")
$oIE1 = _IECreateEmbedded()
$oIE_ctrl1 = GUICtrlCreateObj($oIE1, 8, 8, 456, 376)
_IENavigate($oIE1, $fensterurl)
GUISetState(@SW_HIDE)
;gui#####################################################
Func seite ()
_IECreate($buttonurl)
EndFunc
func start ()
run($Scriptdir&"/metin2.bin")
Exit
EndFunc
Func config ()
Run($ScriptDir&"\config.exe")
EndFunc
func _close ()
Exit
EndFunc
Sleep (500)
patch ()
func patch ()
$file = @TempDir&"\files.txt"
InetGet( $url&"\files.txt" , $file)
$lines = _FileCountLines($file)
If $lines = 0 Then
MsgBox(48,"Error","Patchlist Fehler!")
Exit
EndIf
DirCreate("pack")
DirCreate("BGM")
DirCreate("lib")
DirCreate("mark")
DirCreate("miles")
DirCreate("screenshot")
DirCreate("upload")
DirCreate("lib/armor")
While ($lines >= 1)
$datei = FileReadLine($file,$lines)
GUICtrlSetData($stat,"Dateiprüfung startet... "& $datei & @CRLF & GUICtrlRead($stat))
$size_inet = InetGetSize($url&"\"&$datei)
If FileExists($ScriptDir&""&$datei) Then
If @error Then
MsgBox(16 , "Fehler", @error)
EndIf
$size_ordner = FileGetSize( $ScriptDir&""&$datei)
If $size_inet <> $size_ordner Then
GUICtrlSetData($stat,"Aktualisierung von..."& $datei & @CRLF & GUICtrlRead($stat))
InetGet($url&$datei , $ScriptDir& "" & $datei , 1 , 1)
while 1
$hFileSize = FileGetSize($ScriptDir & "" & $datei) ;Wie viel wurde schon geladen.
$iPercent = round ( @InetGetBytesRead / $size_inet *100) ;Rechen Operation ? O.O
GUICtrlSetData($Progress1, $iPercent) ;Progressbar einstellen
If $hFileSize = $size_inet Then
GUICtrlSetData($Progress1, 100)
ExitLoop
EndIf
sleep (50)
WEnd
Else
GUICtrlSetData($stat,"Übersprung..."& $datei & @CRLF & GUICtrlRead($stat))
EndIf
Else
InetGet($url&$datei , $ScriptDir& "\" & $datei , 1 , 1)
GUICtrlSetData($stat, "Aktualisieren von..."& $datei& @CRLF & GUICtrlRead($stat))
while 1
$hFileSize = FileGetSize($ScriptDir & "" & $datei) ;Wie viel wurde schon geladen.
$iPercent = round ( @InetGetBytesRead / $size_inet *100) ;Rechen Operation ? O.O
GUICtrlSetData($Progress1, $iPercent) ;Progressbar einstellen
If $hFileSize = $size_inet Then
GUICtrlSetData($Progress1, 100)
ExitLoop
EndIf
sleep (50)
WEnd
EndIf
sleep (500)
$lines = $lines-1
WEnd
FileDelete($TempDir&"files.txt")
GUISetState(@SW_HIDE,$Form1)
GUISetState(@SW_SHOW,$Form2)
while 1
Sleep(100)
WEnd
EndFunc
2. Schritt
Downloadet euch AutoIt3 und installiert es
3. Schritt
Öffnet wieder einen Editor und erstellt (ohne was reinzuschreiben) eine normale .txt datei mit dem Namen " files.txt " (ohne das ")und speichert sie am besten in einem Ordner rein!
4. Schritt
Öffnet nocheinmal den Editor und erstellt eine .ini Datei mit dem Namen Patch (großes "P" [ohne "] es muss genau gleich sein) speichert sie anschließend wieder zusammen mit der files.txt Datei!
5. Schritt
Nun öffnen wir den Ordner von AutoIt und öffnen die Anwendung: Compile script to .exe (oder sowas in der Art)
6. Schritt
Jetzt finden wir einmal (Source AutoIt .au3 file) Dort suchen wir nach der .au3 Datei die wir in Schritt 1 abgespeichert haben!
7. Schritt
Jetzt finden wir (Destination .exe/a3x.file) die a3x.file brauchen wir indem Falle nicht!!
Ihr downloadet euch die angehängte .exe vion mir und zieht sie in den Ordner indem auch di files.txt und auch die Patch.ini drin ist!
Bei (Destination .exe/a3x.file) wählen wir nun die .exe aus!
8. Schritt
Nun könnt ihr euch ein icon für eure exe raussuchen! (es muss eine .ico datei sein)
9. Schritt
Nun habt ihr den anfang geschafft!Jetzt müssen wir aber noch die gewünschten Datein zum patchen kriegen!
Das ist rechteinfach wenn man weis wie! Das werde ich euch jetzt zeigen!
10. Schritt
Erstellt euch einen Konto bei einem Webhoster (NICHT .DE.TL ODER WEITERES!!!) Beispielsweise bei cwcity.de
11. Schritt
Ihr öffnet die Patch.ini Datei und schreibt in der ersten Zeile
URL zur Homepage (... .cwsurf.de [BSP!]
In der zweiten Zeile kommt nun der URL zum Patchfenster
In der dritten Zeile kommt nun die URL zum Nachpatchfenster
und anschließend in der letzen wie auch 4 Zeile kommt die URL zum Acc erstellen Button! speichert die Patch.ini Datei nun ab!
12. Schritt
Ihr nehmt euch nun die files.txt Datei raus!
Wenn ihr die Datei locale_de.epk oder locale_de.eix patchen wollt müsst ihr folgendes tun!
Ihr schreibt in der files.txt Datei den Namen der Datei die gepatcht werden soll! ACHTUNG:IHR MÜSST DIE .DLL .ASI ETC. AUCH HINSCHREIBEN UND AUF DIE GROSS UND KLEIN WIE AUCH RECHTSCHREIBFEHLER ACHTEN!!!
13. Schritt
Ich möchte beispielsweise die root.epk wie auch root.eix patchen!
Dann macht ihr das:
1. Schreibt in die files.txt Datei die Datei auf die gepatcht werden soll...
2.Geht bei eurem Hoster auf die Webspaceverwaltung und ladet die Datei hoch (Bei mir Bsp: root.epk und root.eix hochladen)
3. ladet die files.txt datei mit den Datein die gepatcht werden sollen auch bei eurem Hoster hoch (Bsp: cwcity)
14. Schritt
Wenn ihr eine Datei patchen wollt die in dem Ordner Pack ist,müsst ihr bei der files.txt datei reinschreiben : /pack/root.epk ...
15. Schritt
Damit keiner was veränder kann,einfach die .au3 Datei aus dem Clienten ziehen oder löschen :P
16. Schritt
Fals ich was vergessen habe oder fals etwas nicht klappen sollte bitte hier posten!
(Wer Rechtschreibfehler findet schuldet mir 1 Euro xP)
Bitte ein fetttttttes THANKS geben! xP
Mfg,0wnzly
EDIT# 18.12.2011 - 16:48
Ich habe ein Tutorial veröffentlicht,wie man solch ein Patcher erstellen kann..
Sucht bei Youtube einfach mal nach 'TutorialsChecker' Dort findet ihr es!
Viel Glück!