[HowTo] Metin2 Patcher erstellen (konfigurieren)

03/06/2011 15:21 0wnzly#1
Kurz Info: Das Tutorial habe ich hier auf Elitepvpers noch nicht gefunden,daher mache ich dieses Tut! Thanks wäre seeehr nett ;)
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 [Only registered and activated users can see links. Click Here To Register...] 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"373541193125)
GUISetOnEvent($GUI_EVENT_CLOSE"_close")
$stat GUICtrlCreateEdit(""168337281)
GUICtrlSetData(-1"Metin2 Patcher"&@CRLF&"Dateiüberprüfung von...")
$cancel GUICtrlCreateButton("Cancel"28849675250)
GUICtrlSetOnEvent($cancel"_close")

$Progress1 GUICtrlCreateProgress(1646433417)
;
1631234013
$oIE 
_IECreateEmbedded()
$oIE_ctrl GUICtrlCreateObj($oIE16312336136)
GUISetState(@SW_SHOW)
_IENavigate($oIE$adurl
$Form2 GUICreate("Metin2 Patcher"595385328160)
GUISetOnEvent($GUI_EVENT_CLOSE"_close")
$Pic1 GUICtrlCreatePic(@Tempdir&"\metin2start.bmp"00593382$BS_BITMAP)
$Pic1 GUICtrlCreatePic(@Tempdir&"\metin2start.bmp"00593382$BS_BITMAP)
$start GUICtrlCreateButton("(Not allowed)"4644012741$BS_BITMAP)
GUICtrlSetImage(-1, @Tempdir&"\btn_startgame_up.bmp"1)
GUICtrlSetOnEvent($start"start")
$config GUICtrlCreateButton("(Not allowed)"4649612725$BS_BITMAP)
GUICtrlSetOnEvent($config"config")
GUICtrlSetImage(-1, @Tempdir&"\btn_settings_up.bmp"1)
$seite1 GUICtrlCreateButton("(Not allowed)"46418412725$BS_BITMAP)
GUICtrlSetImage(-1, @Tempdir&"\btn_newaccount_up.bmp"1)
GUICtrlSetOnEvent($seite1"seite")
$seite2 GUICtrlCreateButton("(Not allowed)"46416012925$BS_BITMAP)
GUICtrlSetImage(-1,  @Tempdir&"\btn_idpwd_up.bmp"1)
GUICtrlSetOnEvent($seite2"seite")
$ende GUICtrlCreateButton("(Not allowed)"46435212725$BS_BITMAP)
GUICtrlSetImage(-1,  @Tempdir&"\btn_quit_up.bmp"1)
GUICtrlSetOnEvent($ende"_close")
$oIE1 _IECreateEmbedded()
$oIE_ctrl1 GUICtrlCreateObj($oIE188456376)
_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 
Nun könnt ihr die Namen,Button Bilder etc. bearbeiten! (Ich würde erstmal weiter machen,damit man weis wo der Text überhaupt steht :P) speichert diesen Text als eine .au3 !!!

2. Schritt
Downloadet euch AutoIt3 [Only registered and activated users can see links. Click Here To Register...] 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!
03/06/2011 15:27 Fataru#2
Cool, danke.

#first :)
03/06/2011 15:31 ηєσχ#3
Danke funktioniert alles.

Aber sowas gibt es hier doch schon ?
03/06/2011 15:35 ..::Killerpocke::..#4
screens wären auch gut
03/06/2011 15:36 0x4D617276#5
So einen hat schon iMer pub gemacht!
03/06/2011 15:52 Shuroo95#6
jetzt müsste jemand nur noch nen patcher in c++ pub machen :D
03/06/2011 16:05 °IceCold°#7
Der Source ist von iMer, haste 'ne Erlaubnis?
[Only registered and activated users can see links. Click Here To Register...]
03/06/2011 18:14 .Koopa#8
thx für die arbeit wird vielen helfen
03/06/2011 19:08 0wnzly#9
Quote:
Originally Posted by °IceCold° View Post
Der Source ist von iMer, haste 'ne Erlaubnis?
[Only registered and activated users can see links. Click Here To Register...]
Ob die Source wirklich voniMer ist weis ich gerade leider nicht,habe nur nach einer Vorlage gesucht sie dann angepasst und anschließend pub gemacht..wenn es wirklich die von iMer sei dann sorry^^
03/06/2011 19:22 .Resistance#10
Es ist sicher der Code von iMer, und du hast sogar das Copyright entfernt.
Find ich nicht Ok.
Außerdem gibt es einen besseren Patcher von iMer, der nicht nach Größe patcht (gibt Probleme bei den EIX-Dateien), sondern per Crc abgleich
03/06/2011 19:48 xSayajinx#11
Verbesserungsvorschlag man könnte doch bei der Files.txt einfach dieses How To benutzen :
[Only registered and activated users can see links. Click Here To Register...]

;) trozdem Nice !
03/06/2011 19:55 0wnzly#12
Quote:
Originally Posted by poll7979 View Post
Es ist sicher der Code von iMer, und du hast sogar das Copyright entfernt.
Find ich nicht Ok.
Außerdem gibt es einen besseren Patcher von iMer, der nicht nach Größe patcht (gibt Probleme bei den EIX-Dateien), sondern per Crc abgleich
Ich habe das Copyright sicherlich nicht entfernt ich habe einfach nach einer Vorlage gesucht,und diese dann bearbeitet ;D
03/06/2011 20:04 .Resistance#13
Doch hast du.
Ausschnitt aus m original Code:
PHP Code:
GUICtrlSetData(-1"((`~Patcher by iMer~´))"&@CRLF&"Dateiüberprüfung wird gestartet..."
Ich würde sagen, das ist ein Copyright

Außerdem:
Quote:
Originally Posted by iMer View Post
.....Sonstiges:
Patcher darf NICHT ohne meine Erlaubniss verbreitet werden.......
...
nice wäre es wenn ihr meine Erstellerangabe drinnlassen würdet
03/06/2011 20:30 xSayajinx#14
Frage bei mir kommt eine "Fehermeldung" unzwar wenn ich die Exe überschreibe oder wie auch immer bei AutoIT

unzwar zeigt die Fehlermeldung dies an

- Error adding file:
BILD BUTTON ADRESSE .BMP ---->


könnte mir einer sagen wo der fehler liegt die Icon ist die perfekte Größe und ich habe nicht wirklich viel verändert???
03/06/2011 20:36 .Resistance#15
Du musst das hier: BILD BUTTON ADRESSE .BMP ---->
Durch den Pfad zum bild ersetzen