nur ein kleines Tool von mir um SPT Dateien von WPE Pro zu editieren.
SPT Files = Send Lists
Wo liegt der Sinn ? Antwort dazu:
Wenn man in WPE in der Sendlist ein Paket verschieben will, geht das ohne weiteres nicht. Man muss immer erst die letzten Pakete löschen.
Code ist unsauber, kein Error Handling, es funktioniert ^_^
pic:
Code:
#include <array.au3> #Include <String.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form=C:\Users\Sascha\Desktop\ROSEonline bot\NewRosy\LoadSaveWPE.kxf $Form1 = GUICreate("Simple SPT Editor v0.1 for WPE PRO", 587, 624, 192, 124) $Edit = GUICtrlCreateEdit("", 0, 0, 585, 537, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL), 0) GUICtrlSetData($Edit, StringFormat("Name of Entry | 00 00 00 00 00 01 FF 00 ")) GUICtrlSetFont($Edit, 11, 400, 0, "Times New Roman") GUICtrlSetResizing(-1, $GUI_DOCKAUTO+$GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKBOTTOM+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) $Load = GUICtrlCreateButton("Load", 0, 536, 585, 41, BitOR($WS_BORDER,$WS_CLIPSIBLINGS)) $Save = GUICtrlCreateButton("save", 0, 576, 585, 41, BitOR($WS_BORDER,$WS_CLIPSIBLINGS)) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Func open() $open = FileOpenDialog("select a File",@WorkingDir& "\", "SPT (*.SPT)") $file = FileOpen($open, 16) ; Check if file opened for reading OK If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf ; Read in 1 character at a time until the EOF is reached $chars = Hex(FileRead($file)) FileClose($file) if($chars == "") Then $chars = "010000000B0000004E616D656F66456E74727908000000000000000001FF00" EndIf $entries = StripZero(StringLeft($chars,8)) $length = StringLen($chars) Dim $Content[Dec($entries)][2] $chars = StringTrimLeft($chars,8) $output = "" $length -= 8 for $i = 0 To Dec($entries)-1 for $j = 0 to 1 $next = Dec(StripZero(StringLeft($chars,8))) $chars = StringTrimLeft($chars,8) $length -= 8 $valHex = StringLeft($chars,$next*2) $chars = StringTrimLeft($chars,$next*2) $length -= $next*2 if($j == 0) Then $Content[$i][$j] = _HexToString($valHex) $output = $output & $Content[$i][$j] & " | " Else $Content[$i][$j] = $valHex for $k = 1 to StringLen($Content[$i][$j]) Step 2 $output = $output & StringLeft($valHex,2) & " " $valHex = StringTrimLeft($valHex,2) Next if $i <> Dec($entries)-1 Then $output = $output & "\r\n" EndIf EndIf Next Next GUICtrlSetData($Edit, StringFormat($output)) EndFunc Func StripZero($string) for $charnum = 7 to 0 Step -1 if StringRight($string,1) == 0 Then $string = StringLeft($string, $charnum) Else ExitLoop EndIf Next Return $string EndFunc Func save() $data = GUICtrlRead($Edit) if $data <> "" then $splitLines = StringSplit($data,@CR) $saveto = FileSaveDialog("select a File",@WorkingDir& "\", "SPT (*.SPT)") $write = "" $h = Hex($splitLines[0]) for $pos = 1 to 3 if StringLeft($h,2) == "00" Then $h = StringTrimLeft($h,2) & "00" Else ExitLoop EndIf Next $write = $h for $i = 1 to $splitLines[0] $splitLines[$i] = StringStripWS($splitLines[$i],8) ConsoleWrite( $splitLines[$i]&@CRLF) $split = StringSplit($splitLines[$i],"|") if $split[0] == 2 then $namehex = _StringToHex($split[1]) $h = Hex(StringLen($split[2])/2) for $pos = 1 to 3 if StringLeft($h,2) == "00" Then $h = StringTrimLeft($h,2) & "00" Else ExitLoop EndIf Next $len2hex = $h $h = Hex(StringLen($namehex)/2) for $pos = 1 to 3 if StringLeft($h,2) == "00" Then $h = StringTrimLeft($h,2) & "00" Else ExitLoop EndIf Next $lenhex = $h $namehexlen = StringLen($lenhex) $hexhexlen = StringLen($len2hex) $write &= $lenhex & $namehex & $len2hex & $split[2] EndIf Next $bstring = $write $file = FileOpen($saveto, BitOR(16, 2)) ; Check if file opened for writing OK If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf for $k = 1 to StringLen($bstring) Step 2 FileWrite($file, Binary("0x"&StringLeft($bstring,2))) $bstring = StringTrimLeft($bstring,2) Next FileClose($file) EndIf EndFunc While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Save save() Case $Load open() EndSwitch WEnd