Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server > Metin2 PServer Guides & Strategies
You last visited: Today at 05:36

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[HowTo] einfachen Valvuesearcher erstellen

Discussion on [HowTo] einfachen Valvuesearcher erstellen within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1



 
xShizoidx's Avatar
 
elite*gold: 0
The Black Market: 279/0/0
Join Date: Feb 2011
Posts: 1,345
Received Thanks: 410
[HowTo] einfachen Valvuesearcher erstellen

Guten Tag,

in diesem Tutorial werde ich euch einmal erklären , wie ihr ganz einfach einen Valvuesearcher erstellen könnt. Als Programmiersprache verwende ich Autoit.
Gewisse Grundkenntnisse in Autoit sind für dieses Tutorial erforderlich.

1.) Erstellung einer GUI für den Valvuesearcher

Zuerstmal einmal solltet ihr euch eine GUI für den Valvuesearcher erstellen, dazu könnt ihr den Koda Form Designer benutzen.
So sieht meine GUI aus, damit ihr weißt, wie ihr es ungefähr machen könnt :
Code:
#include <ButtonConstants.au3> 
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
$GUI = GUICreate("ValvueSearcher", 272, 106, 192, 124) 
$LabelSuche = GUICtrlCreateLabel("Suchen", 8, 12, 40, 17)
$InputSuche = GUICtrlCreateInput("", 60, 8, 209, 21)
$LabelValvue = GUICtrlCreateLabel("Valvue", 8, 44, 37, 17)
$Edit1 = GUICtrlCreateEdit("", 60, 40, 209, 21, BitOR($ES_READONLY,$ES_WANTRETURN))
$Suchen = GUICtrlCreateButton("Suchen", 184, 72, 75, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd
2.) Grundskript fertigstellen

Nun müssen wir es erstmal so schreiben, dass wenn ein Name angegeben wird, in der Editbox auch die passende Valvue erscheint. Ich habe es mal so geschrieben :
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
$GUI = GUICreate("ValvueSearcher", 272, 106, 192, 124)
$LabelSuche = GUICtrlCreateLabel("Suchen", 8, 12, 40, 17)
$InputSuche = GUICtrlCreateInput("", 60, 8, 209, 21)
$LabelValvue = GUICtrlCreateLabel("Valvue", 8, 44, 37, 17)
$Edit1 = GUICtrlCreateEdit("", 60, 40, 209, 21, BitOR($ES_READONLY,$ES_WANTRETURN))
$Suchen = GUICtrlCreateButton("Suchen", 184, 72, 75, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Suchen
			Switch (GuiCtrlRead($InputSuche))
				Case "Schwert" ; Wenn in der Inputbox bei Suche Schwert gelesen wird, dann ...
					GuiCtrlSetData($Edit1,"1") ; Wird in die Editbox die Zahl 1 geschrieben, welches die Valvue darstellen soll
			EndSwitch
	EndSwitch
WEnd
So wird es nachher mit allen Namen und Valvues ablaufen.

3.) Valvues und Namen aus der Item_proto filtern

Wer nun denkt, dass er jede einzelne Valvue und jeden Name selber eintragen muss im Skript, der liegt da total falsch, da wird uns die Arbeit einfach ersparen können, indem wir die Informationen aus der Item_proto.xml
aus einem beliebigen Clienten ziehen können, wobei wir vorher die .epk und .eix entpacken müssen um an die Item_proto zu kommen und diese dann auch weiter zu entpacken.
So, dann haben wir nun die Item_proto entpackt und öffnen mal die item_proto.xml.
Hier mal eine Zeile aus der Item_proto.xml :
Code:
<Item vnum="10" hashName="'µµ+0'" name="Schwert+0" type="1" subtype="0" weight="0" size="2" antiflag="32" flag="1" wearflag="16" immuneflag="0" gold="0" buy_price="0" limittype0="1" limitvalue0="0" limittype1="0" limitvalue1="0" applytype0="7" applyvalue0="22" applytype1="0" applyvalue1="0" applytype2="0" applyvalue2="0" value0="0" value1="15" value2="19" value3="13" value4="15" value5="0" socket0="0" socket1="64992" socket2="127" socket3="64976" socket4="21631" socket5="4855" refine_vnum="11" refine_set="1" magic_pct="15" specular="0" socket_pct="1" />
Wir wir nun sehen befindet sich zwischen einem dem Text name=" und dem nächsten " der Itemname und die Valvue befindet sich zwischen <Item vnum=" und dem nächsten ". Diese Namen und die Valvues werden wir gleich mit einem zweiten Skript auslesen und dieses so in eine Textdatei schreiben, dass er quasi schon den Autoit Code für uns ausspuckt.
Hier einmal der Code mit Erklärung, wo die .xml durchgelesen werden, die Namen und Valvues rausgefiltert werden und als Autoit Code in eine Textdatei geschrieben werden.
Code:
#include <String.au3>
#include <File.au3>
FileOpen(@ScriptDir & "\Source.txt",2) ; Source.txt wird geöffnet im Schreibmodus
FileOpen(@ScriptDir & "\item_proto_dump.xml") ; item_proto_dump.xml wird im Lesemodus geöffnet
$LCount = _FileCountLines(@ScriptDir & "\item_proto_dump.xml") ; Es wird ermittelt, wieviele Zeilen die item_proto_dump.xml hat
For $i = 1 To $LCount ; For Schleife $i hat den Wert 1 und bei jeder For Schleife erhöht sich der Wert von $i um 1, bis die Anzahl der Zeilen erreicht wurde
	$ReadLine = FileReadLine(@ScriptDir & "\item_proto_dump.xml", $i) ; Bestimmte Zeile wird ausgelesen
	If StringInStr($ReadLine, 'name="') Then ; Wenn name=" sich im ausgelesenen Zeilentext befindet, dann ...
		$Name = _StringBetween($ReadLine, 'name="', '"',1) ; Name wird herausgefiltert
		$Valvue = _StringBetween($ReadLine, '<Item vnum="', '"',1) ; Valvue wird herausgefiltert
		FileWrite("Source.txt",'case "' &  $Name[0] & '"' & @CRLF) ; Schreibt Autoit Code in Textdatei ..
		FileWrite("Source.txt",'GuiCtrlSetData($Edit1,"' & $Valvue[0] & '")' & @CRLF) ; Schreibt Autoit Code in Textdatei ..
	EndIf ; Ende der If Schleife
Next ; Ende der Schleife
FileClose(@ScriptDir & "\Source.txt") ; Schließt die Source.txt
FileClose(@ScriptDir & "\item_proto_dump.xml") ; Schließt die item_proto_dump.xml wieder
$Edit1 muss noch zu eurer Control ID angepasst werden, falls ihr eine andere habt !
So, nun packt ihr die item_proto_dump.xml in den Ordner, worin sich dieses Script befindet und startest das Skript. Nun dauert es einen Moment und ihr werdet dann sehen, dass die Infos herausgefiltert und als Code in eure Source.txt geschrieben wurden.
So sieht es bei mir in der Source.txt aus :
Code:
case "Yang"
GuiCtrlSetData($Edit1,"1")
case "Deutsche Version"
GuiCtrlSetData($Edit1,"2")
case "Schwert+0"
GuiCtrlSetData($Edit1,"10")
case "Schwert+1"
GuiCtrlSetData($Edit1,"11")
case "Schwert+2"
GuiCtrlSetData($Edit1,"12")
case "Schwert+3"
GuiCtrlSetData($Edit1,"13")
case "Schwert+4"
GuiCtrlSetData($Edit1,"14")
case "Schwert+5"
GuiCtrlSetData($Edit1,"15")
case "Schwert+6"
GuiCtrlSetData($Edit1,"16")
case "Schwert+7"
GuiCtrlSetData($Edit1,"17")
....
4.) Autoit Code, worin sich auch die Valvues + Itemnamen befinden in Skript einbinden

Ja, nun müsst ihr den Inhalt der Source.txt noch in euer Skript einfügen, niemlich direkt nach dem " Switch (GuiCtrlRead($Edit1)) ", falls ihr mein Skript benutzt.
So sollte es dann bei euch ca. aussehen :
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
$GUI = GUICreate("ValvueSearcher", 272, 106, 192, 124)
$LabelSuche = GUICtrlCreateLabel("Suchen", 8, 12, 40, 17)
$InputSuche = GUICtrlCreateInput("", 60, 8, 209, 21)
$LabelValvue = GUICtrlCreateLabel("Valvue", 8, 44, 37, 17)
$Edit1 = GUICtrlCreateEdit("", 60, 40, 209, 21, BitOR($ES_READONLY,$ES_WANTRETURN))
$Suchen = GUICtrlCreateButton("Suchen", 184, 72, 75, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Suchen
			Switch (GuiCtrlRead($InputSuche))
				case "Yang"
GuiCtrlSetData($Edit1,"1")
case "Deutsche Version"
GuiCtrlSetData($Edit1,"2")
case "Schwert+0"
GuiCtrlSetData($Edit1,"10")
case "Schwert+1"
GuiCtrlSetData($Edit1,"11")
case "Schwert+2"
GuiCtrlSetData($Edit1,"12")
case "Schwert+3"
GuiCtrlSetData($Edit1,"13")
; ..... und so weiter
			EndSwitch
	EndSwitch
WEnd
Und schon ist der Valvuesearcher ohne großen Aufwand fertig. Ich habe euch als Anhang nochmal mein Valvuesearcher mit Source rangehangen, damit ihr euch es anschauen könnt. < wenn ihr dort z.b. Schwert+1 bei Suche eingibt, dann erscheint darunter die Valvue.
Attached Files
File Type: zip Valvuesearcher.zip (374.7 KB, 21 views)
xShizoidx is offline  
Thanks
4 Users
Old 01/27/2012, 17:24   #2
 
Stamm1994's Avatar
 
elite*gold: 24
Join Date: Jun 2011
Posts: 667
Received Thanks: 782
nice gefällt mir
Stamm1994 is offline  
Thanks
1 User
Old 02/06/2012, 23:26   #3
 
Spearfist's Avatar
 
elite*gold: 0
Join Date: Aug 2009
Posts: 537
Received Thanks: 144
Sehr schön Danke
Echt klasse von dir, wird AutoIt einsteigern sicherlich
helfen.
Gruß Spearfist
Spearfist is offline  
Thanks
1 User
Old 02/07/2012, 10:05   #4
 
Mashkin's Avatar
 
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,747
Allein der Richtigkeit zuliebe möchte ich dich darauf hinweisen, dass es nicht "Valvues" sondern "Values" heißt, was zu deutsch "Werte" bedeutet.

Ansonsten kann ich zwar überhaupt nichts damit anfangen, aber ich kann mir vorstellen, dass es den einen oder anderen interessiert.
Mashkin is offline  
Thanks
2 Users
Old 02/07/2012, 17:00   #5
 
exi°'s Avatar
 
elite*gold: 5
Join Date: Jun 2011
Posts: 1,455
Received Thanks: 554
Sehr praktisch.
exi° is offline  
Thanks
1 User
Old 02/07/2012, 17:23   #6



 
xShizoidx's Avatar
 
elite*gold: 0
The Black Market: 279/0/0
Join Date: Feb 2011
Posts: 1,345
Received Thanks: 410
Danke für eure Kommentare.

Das ganze könnte man natürlich auch verkürzen, z.B. so :

Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
$GUI = GUICreate("ValvueSearcher", 272, 106, 192, 124)
$LabelSuche = GUICtrlCreateLabel("Suchen", 8, 12, 40, 17)
$InputSuche = GUICtrlCreateInput("", 60, 8, 209, 21)
$LabelValvue = GUICtrlCreateLabel("Value", 8, 44, 37, 17)
$Edit1 = GUICtrlCreateEdit("", 60, 40, 209, 21, BitOR($ES_READONLY,$ES_WANTRETURN))
$Suchen = GUICtrlCreateButton("Suchen", 184, 72, 75, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Suchen
$Items = StringSplit ("Schwert+0|Schwert+1|Schwert+2|Schwert+3","|") ; ....
$Values = StringSplit ("10|11|12|13","|") ; ....
For $i = 1 to $Items[0]
	If GuiCtrlRead($Inputsuche) = $Items[$i] Then
		GuiCtrlSetData($Edit1,$Values[$i])
	EndIf
Next
	EndSwitch
WEnd
So haben wir nachher nur 6 Zeilen anstatt mehrere tausende Zeilen, wobei dies eigentlich auch kein Unterschied macht, außer dass die Datei nachher nicht so groß ist. Es gibt auch noch andere Methoden zum verkürzen, dies ist also nur ein Beispiel, wie man es machen könnte.
xShizoidx is offline  
Reply


Similar Threads Similar Threads
[HowTo]Einfachen Installer erstellen mit NSIS
11/12/2012 - Flyff PServer Guides & Releases - 22 Replies
.
Metin2 einfachen bypass erstellen
08/10/2011 - Metin2 Guides & Templates - 15 Replies
Ich hab heute ein thread gefunden. Indem ein Metin2 bypass angeboten wird. Wahrscheinlich ist schon bekannt wie das funkt aber hiermit möchte ich alle threads vermeiden. Geht in euren Metin2 ordner Rechtsklick Neu > Textdokument So jetzt geht ihr auf umbenennen und ändert .txt zu .bat Wenn das nicht geht geht ihr bei Windows 7 und Vista oben links auf Ordner und Suchoptionen oder so ähnlich dann auf Ansicht. Dann bei Datentyp bei bekannten Dateitypen ausblenden den hacken wegmachen So...
Einfachen Injector erstellen
04/16/2011 - WarRock Guides, Tutorials & Modifications - 17 Replies
Hallo e*PvP, Dieser Thread hat mir eine Menge Zeit und viel Aufwand gekostet. Aber ich hoffe ich konnte euer Wissen erweitern und euch weiterhelfen :) Hier die GANZEN schritte. #include <windows.h> #include <tlhelp32.h> //define functions BOOL IsAdministrator(VOID);
[HowTo]Einfachen Installer erstellen mit NSIS
04/09/2010 - Metin2 PServer Guides & Strategies - 11 Replies
Wer einen Installer für seinen Server machen will mit NSIS sollte dieses tutorial abarbeiten. Die Credits für diesen Guide gehen an Cross LG Sedrika



All times are GMT +2. The time now is 05:36.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.