Speicher von Spiel auslesen

  • Also, seit geraumer Zeit tüftle ich mit extrem laangen Pause an einem Tool für ein Spiel, was wieder verschiedene Werte zum Charakter und so auslesen soll.
    Das erste Problem tritt auf, bei einer bestimmten Zahl vom Charakter. Bis einschließlich 255 lässt sich diese Problemlos auslesen, ab 256 wird eine Zahle herausgegeben, die die normale Zahl -256 beinhaltet.

    Zweites Problem: Wenn man einen bestimmten Namen im Spiel auslesen will, so klappt auch das bei längeren Zeichen nicht. Der Name kann von xx bis 12 Zeichen lang sein, bei den längeren kmmen nur komische Zeichen raus.

    Mir wurde gesagt das habe etwas mit diesen 256 zu tun (in beiden Fällen) weil dann das und das anders ist... Mehr habe ich nicht verstanden.

    Habe meine Probleme erstmal so kurz es geht gefasst. Falls mehr Infos notwendig sind, einfach bescheidgeben.

  • Oh man, nicht schon wieder Bot oder Cheat.
    Wenn du die Grundlagen der Speicheradressierung und -Belegung nicht kennst, solltest du davon sowieso die Finger lassen.


    Nein, kein dummer Bot oder Cheat, aber danke für deine mentale Unterstützung. Ich weiß das ist nur eine Veränderung in der Funktion, ich habe schon ein paar Sachen verändert von denen ich geglaubt habe, dass es klappen könnte. Hat es aber nicht, deshalb frage ich hier. Aber auf zu gute Leute wie dich kann ich auch verzichten!
    Entschuldigung dass ich das Hilfe & Unterstützung falsch verstanden habe.

  • :P :P
    ich weiß um welches spiel es sich handelt glaub ich :P
    SRO?
    Wenn ja, dann kann ich dir mal meinen Code geben. hab mir so was auch schon geschrieben. ;)
    also wenn ich recht haben, dass es sich um SRO handelt, schreib mir einfach eine PN.
    (weiß ja nich ob das nu zu Bot Coding gehört und ich nichts posten darf)

  • Nur weil hier das Wort "Spiel" erwähnt wird geht es hier noch nicht um einen Bot. Er will Infos auslesen, was daran ist denn jetzt schon wieder verboten? 8|

  • Das ist kein Botzeug. ;) Eigentlich.

    Das Programm liest z.B. nur wieviel Health man noch hat, wieviele Skillpunkte.
    Damit kann man dann noch die Skillpunkte pro Stunde oder Minute ausrechnen. Eigentlich ganz interessant zu sehen wieviel man pro Stunde bekommt.

    Also nichts böses. Nur ein paar Infos über den eigenen Charakter.
    Bei SRO kann man so einfach auch keinen Bot erstellen. Ist ja alles Serverseitig.

  • CheatEngine ist eine möglichkeit, ja.
    Aber da es auch andere Programme gibt, die so etwas ähnliches machen(also Health und so was auslesen), kann man sich die Offsets auch aus der INI besorgen. :P (so hab ich das gemacht)

  • Hi,

    die Frage bei der Speichmanipulation ist herauszufinden, wo steht was ich ändern will. Wie bekommt ihr dies raus? CheatEngine?

    Mega


    Gibt halt schon immer "dumme" (so nenne ich sie mal^^) die schon die Offsets und Speicheradressen Public machen, so profitiert der Einsteiger natürlich davon. Ich will ja auch keine Werte verändern oder so.

    Wofür hab ich jetzt eigentlich die Warnung bekommen? Fürs nichtstun?
    Nur mal so der Verlauf:
    Ich frage höflich nach einer Antwort OHNE die Forenregeln zu verletzen, da ich keinen Cheat, Bot oder sonstiges plane.
    BugFix stelt mich dumm.
    Ich sage meine Meinung ohne jemanden zu beleidigen.


    Naja, mir auch egal.
    Wenn das von ^T!Tu$ geht, stelle ich es hier rein, und zeige was ich falsch gemacht habe...

    Einmal editiert, zuletzt von NoName (17. September 2008 um 22:59)

    • Offizieller Beitrag

    Hi,

    kannst du den Grund nicht lesen? ?(

    Na ja, um es noch mal deutlich zu machen. Dieses Forum muss auch darauf achten, dass Autoit nicht von Virenherstellen als bösartig eingestuft wird, weil wer auch immer damit Viren, Cheats usw. programmiert. Deshalb möchten wir auch keine Bots supporten.

    Die Manipulation von Speicheradressen, oder die automatisierte Anmeldung bei Spieleportalen etc. gehört für mich (nicht unbedingt die Admin/Mod-Meinung) nicht dazu.

    Es wird sicherlich schwierig sein die Grenze zwischen Bot und nicht Bot zu ziehen. :rolleyes: Aber ich denke wir werden es in Zukunft weiterhin versuchen. Dies bedeutet aber auch, dass gerade bei solchen Themen etwas genauer das Ziel beschrieben werden muss. Ansonsten werden weiterhin alle Boterstellungsthreads geschlossen.

    Vielleicht sollten wir mal ein Programm raussuchen und damit ein Beispiel durchprobieren. (Speichermanipulation)

    Mega

  • Zitat

    kannst du den Grund nicht lesen? ?(


    Weitere Informationen zur (Ver-)Warnung
    Wenn dir unsere Einstellung zu Manipulationen nicht gefällt, dann bleib lieber still. Unsere Forenregeln geben klare Auskunft, was wir tolerieren und was nicht. Eine Äußerung, wie die deine, gehört nicht dazu. bedenke das bitte für die Zukunft.

    Aber hier mein toller, bisheriger Code, der den Speicher "manipuliert":

    Spoiler anzeigen
    [autoit]

    #include <Memory.au3 >
    #include <Constants.au3>
    #include <GUIConstants.au3>
    #include <GuiListBox.au3>
    #include <include.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("TrayAutoPause", 0)
    Opt("RunErrorsFatal", 0)

    [/autoit] [autoit][/autoit] [autoit]

    ;ADRESSEN
    $PlayerBase = 0xCF2D94
    $serveradress = 0xCF1658
    $charnameadress = 0xCF1758
    $guildadress = 0xCF24F4
    ;OFFSETS
    $PlayerCurHP = 0x450
    $PlayerMaxHP = 0x448
    $PlayerCurMP = 0x444
    $PlayerMaxMP = 0x44C
    $STR_Points = 0x834
    $INT_Points = 0x836
    $Stat_Points = 0x83C
    $Curlvl = 0x820
    $curexp = 0x828
    $cursp = 0x838
    Dim $sro_pid[4]

    [/autoit] [autoit][/autoit] [autoit]

    While 1 ;Endlosschleife
    $MainGui = GUICreate("Sro Charinfo Manager", 282, 180)
    WinSetTrans($MainGui, "", 245)
    GUISetBkColor(0xCCCCCC, $MainGui)
    GUICtrlCreateLabel("Mark on of the Silkroad-Processes and click on Show", 16, 16, 264, 17)
    $srolist = GUICtrlCreateList("", 16, 40, 255, 97)
    $buttonupdate = GUICtrlCreateButton("Update", 16, 144, 115, 25, 0)
    $buttonshow = GUICtrlCreateButton("Show", 156, 144, 115, 25, 0)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetState($buttonshow, $GUI_DISABLE)
    GetProcesses()
    While 1 ;Endlosschleife für das Abrufen der MainGUI
    Switch GUIGetMsg($MainGui)
    Case $GUI_EVENT_CLOSE
    Exit
    Case $buttonupdate
    GetProcesses()
    Case $buttonshow
    $markiert_index = _GUICtrlListBox_GetCurSel($srolist)
    $markiert_name = _GUICtrlListBox_GetText($srolist, $markiert_index)
    $sro_pid = StringSplit($markiert_name, ":"); $sro_pid[2] beinhaltet die Prozess PID von dem ausgewählten client
    If $sro_pid[3] <> "" Then
    If $sro_pid[2] <> 0 Then
    GUIDelete($MainGui)
    ExitLoop
    EndIf
    Else
    MsgBox(0, "Error", "In the marked Sro-Process is no Character logged in." & @CRLF & "Please log in a Character or choose another Process.")
    GetProcesses()
    EndIf
    EndSwitch
    If _GUICtrlListBox_GetText($srolist, _GUICtrlListBox_GetCurSel($srolist)) = "" Then
    If GUICtrlGetState($buttonshow) <> 144 Then GUICtrlSetState($buttonshow, $GUI_DISABLE)
    Else
    If GUICtrlGetState($buttonshow) <> 80 Then GUICtrlSetState($buttonshow, $GUI_ENABLE)
    EndIf
    WEnd
    $ocx = _GuiCtrlOCXProgressRegister()
    $SubGUI = GUICreate(MemRead($sro_pid[2], "server") & ": " & $sro_pid[3], 300, 196)
    WinSetTrans($SubGUI, "", 245)
    GUISetBkColor(0xCCCCCC, $SubGUI)
    ;unveränderbare labels
    $Label1 = GUICtrlCreateLabel("Charname:", 16, 16, 55, 17)
    $Label2 = GUICtrlCreateLabel("Level", 158, 16, 30, 17)
    $Label3 = GUICtrlCreateLabel("Server:", 16, 40, 38, 17)
    $Label4 = GUICtrlCreateLabel("Guild:", 158, 40, 31, 17)
    $Label5 = GUICtrlCreateLabel("Skillpoints:", 158, 64, 54, 17)
    $Label6 = GUICtrlCreateLabel("Statpoints:", 16, 64, 54, 17)
    $Label8 = GUICtrlCreateLabel("Str Points:", 16, 88, 54, 17)
    $Label9 = GUICtrlCreateLabel("Int Points:", 158, 88, 54, 17)
    ;veränderbare labels
    $labelcharname = GUICtrlCreateLabel("", 72, 16, 80, 17)
    $labellevel = GUICtrlCreateLabel("", 214, 16, 80, 17)
    $labelserver = GUICtrlCreateLabel("", 72, 40, 80, 17)
    $labelguild = GUICtrlCreateLabel("", 214, 40, 80, 17)
    $labelskillpoints = GUICtrlCreateLabel("", 214, 64, 80, 17)
    $labelstatpoints = GUICtrlCreateLabel("", 72, 64, 80, 17)
    $labelstrpoints = GUICtrlCreateLabel("", 72, 88, 80, 17)
    $labelintpoints = GUICtrlCreateLabel("", 214, 88, 80, 17)
    $labelhpanzeige = GUICtrlCreateLabel("", 16, 134, 126, 17, $SS_CENTER)
    $labelmpanzeige = GUICtrlCreateLabel("", 158, 134, 126, 17, $SS_CENTER)
    $labelexpanzeige = GUICtrlCreateLabel("", 16, 175, 268, 17, $SS_CENTER)

    ;Progress
    $progresshp = _GuiCtrlCreateOCXProgress(16, 115, 126, 17)
    $progressmp = _GuiCtrlCreateOCXProgress(158, 115, 126, 17)
    $progressexp = _GuiCtrlCreateOCXProgress(16, 156, 268, 17)
    _GuiCtrlOCXProgressSetScrolling($progresshp, 9)
    _GuiCtrlOCXProgressSetColor($progresshp, 0xFF0000)
    _GuiCtrlOCXProgressSetScrolling($progressmp, 9)
    _GuiCtrlOCXProgressSetColor($progressmp, 0x0000FF)
    _GuiCtrlOCXProgressSetScrolling($progressexp, 9)
    _GuiCtrlOCXProgressSetColor($progressexp, 0x00FF00)
    _GuiCtrlOCXProgressShowText($progresshp, 1)
    _GuiCtrlOCXProgressShowText($progressmp, 1)

    GUICtrlSetData($labelcharname, MemRead($sro_pid[2], "charname"))
    GUICtrlSetData($labelserver, MemRead($sro_pid[2], "server"))

    GUISetState(@SW_SHOW, $SubGUI)
    While 1 ;Endlosschleife für das Abrufen einer SubGUI
    Switch GUIGetMsg($SubGUI)
    Case $GUI_EVENT_CLOSE
    GUIDelete($SubGUI)
    _GuiCtrlDeleteOCXProgress($progressexp)
    _GuiCtrlDeleteOCXProgress($progresshp)
    _GuiCtrlDeleteOCXProgress($progressmp)
    _GuiCtrlOCXProgressUnregister($ocx)
    GetProcesses()
    ExitLoop
    EndSwitch
    $label = ""
    ;Labels einstellen

    $oldguild = "ö"
    $oldskillspoints = -1
    $oldstatpoints = -1
    $oldstrpoints = -1
    $oldintpoints = -1
    $oldcurhp = -1
    $oldcurmp = -1
    $oldcurexp = -1

    SetLabels()
    GUICtrlSetStyle($labelhpanzeige, -1)
    Sleep(20)
    WEnd
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func GetProcesses()
    _GUICtrlListBox_ResetContent($srolist)
    $sroprocesslist = ProcessList("sro_client.exe")
    For $i = 1 To $sroprocesslist[0][0]
    GUICtrlSetData($srolist, $sroprocesslist[$i][0] & ":" & $sroprocesslist[$i][1] & ":" & MemRead($sroprocesslist[$i][1], "charname") & ":" & MemRead($sroprocesslist[$i][1], "server"))
    Next
    EndFunc ;==>GetProcesses

    [/autoit] [autoit][/autoit] [autoit]

    Func MemRead($Pid, $value)
    $Info = _MemoryOpen($Pid)
    $PlayerBase2 = _MemoryRead($PlayerBase, $Info)

    If $value = "hp%" Or $value = "vigor%" Then
    $PlayerCurHP2 = _MemoryRead($PlayerBase2 + $PlayerCurHP, $Info)
    $PlayerMaxHP2 = _MemoryRead($PlayerBase2 + $PlayerMaxHP, $Info)
    Return Round($PlayerCurHP2 / $PlayerMaxHP2 * 100, 2)
    ElseIf $value = "mp%" Then
    $PlayerCurMP2 = _MemoryRead($PlayerBase2 + $PlayerCurMP, $Info)
    $PlayerMaxMP2 = _MemoryRead($PlayerBase2 + $PlayerMaxMP, $Info)
    Return Round($PlayerCurMP2 / $PlayerMaxMP2 * 100, 2)
    ElseIf $value = "hpmax" Then
    Return _MemoryRead($PlayerBase2 + $PlayerMaxHP, $Info)
    ElseIf $value = "mpmax" Then
    Return _MemoryRead($PlayerBase2 + $PlayerMaxMP, $Info)
    ElseIf $value = "curhp" Then
    $curhp = _MemoryRead($PlayerBase2 + $PlayerCurHP, $Info)
    If $curhp = 0 Then TrayTip("Wooooooot", "You died!!!", 6)
    Return $curhp
    ElseIf $value = "curmp" Then
    Return _MemoryRead($PlayerBase2 + $PlayerCurMP, $Info)
    ElseIf $value = "exp" Then
    Return Round(_MemoryRead($PlayerBase2 + $curexp, $Info) / findmaxexp(_MemoryRead($PlayerBase2 + $Curlvl, $Info, "byte[1]")) * 100, 2) & "%"
    ElseIf $value = "curexp" Then
    Return _MemoryRead($PlayerBase2 + $curexp, $Info)
    ElseIf $value = "sp" Then
    Return _MemoryRead($PlayerBase2 + $cursp, $Info)
    ElseIf $value = "level" Then
    Return Int(_MemoryRead($PlayerBase2 + $Curlvl, $Info, "byte[1]"))

    [/autoit] [autoit][/autoit] [autoit]

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ElseIf $value = "str_points" Then
    Return Int(_MemoryRead($PlayerBase2 + $STR_Points, $Info, "byte[1]"))
    ElseIf $value = "int_points" Then
    Return Int(_MemoryRead($PlayerBase2 + $INT_Points, $Info, "byte[1]"))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $value = "stat_points" Then
    Return Int(_MemoryRead($PlayerBase2 + $Stat_Points, $Info, "byte[1]"))

    [/autoit] [autoit][/autoit] [autoit]

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ElseIf $value = "guild" Then
    $a = 0
    Dim $guild[12]
    For $i = 0 To 11
    $guild[$i] = _MemoryRead($guildadress + $a, $Info, "char[12]")
    StringReplace($guild[$i], " ", "")
    $a = $a + 2
    Next
    If $guild[0] = "" Then Return "None"
    If IsString($guild[0]) Or IsNumber($guild[0]) Then Return $guild[0] & $guild[1] & $guild[2] & $guild[3] & $guild[4] & $guild[5] & $guild[6] & $guild[7] & $guild[8] & $guild[9] & $guild[10] & $guild[11]
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $value = "server" Then
    $a = 0
    Dim $server[12]
    For $i = 0 To 11
    $server[$i] = _MemoryRead($serveradress + $a, $Info, "char[1]")
    StringReplace($server[$i], " ", "")
    $a = $a + 2
    Next
    Return $server[0] & $server[1] & $server[2] & $server[3] & $server[4] & $server[5] & $server[6] & $server[7] & $server[8] & $server[9] & $server[10] & $server[11]
    ElseIf $value = "charname" Then
    $a = 0
    Dim $char[12]
    For $i = 0 To 11
    $char[$i] = _MemoryRead($charnameadress + $a, $Info, "char[1]")
    StringReplace($char[$i], " ", "")
    $a = $a + 2
    Next
    Return $char[0] & $char[1] & $char[2] & $char[3] & $char[4] & $char[5] & $char[6] & $char[7] & $char[8] & $char[9] & $char[10] & $char[11]
    EndIf
    EndFunc ;==>MemRead

    [/autoit] [autoit][/autoit] [autoit]

    Func SetLabels()
    $run = 1
    If $run = 1 Then
    GUICtrlSetData($labellevel, MemRead($sro_pid[2], "level"))
    $oldlevel = GUICtrlRead($labellevel)
    $run = 2
    EndIf
    If $oldlevel <> MemRead($sro_pid[2], "level") Then
    If MemRead($sro_pid[2], "level") > $oldlevel Then
    TrayTip("Gratulation", "You leveled up to " & MemRead($sro_pid[2], "level"), 10)
    ElseIf MemRead($sro_pid[2], "level") < $oldlevel Then
    TrayTip("Ups", "Something was wrong... You leveled down to " & MemRead($sro_pid[2], "level"), 10)
    EndIf
    GUICtrlSetData($labellevel, MemRead($sro_pid[2], "level"))
    $oldlevel = GUICtrlRead($labellevel)
    EndIf
    If $oldguild <> MemRead($sro_pid[2], "guild") Then
    GUICtrlSetData($labelguild, MemRead($sro_pid[2], "guild"))
    $oldguild = GUICtrlRead($labelguild)
    EndIf
    If $oldskillspoints <> MemRead($sro_pid[2], "sp") Then
    GUICtrlSetData($labelskillpoints, MemRead($sro_pid[2], "sp"))
    $oldskillspoints = GUICtrlRead($labelskillpoints)
    EndIf
    If $oldstatpoints <> MemRead($sro_pid[2], "stat_points") Then
    GUICtrlSetData($labelstatpoints, MemRead($sro_pid[2], "stat_points"))
    $oldstatpoints = GUICtrlRead($labelstatpoints)
    EndIf
    If $oldstrpoints <> MemRead($sro_pid[2], "str_points") Then
    If MemRead($sro_pid[2], "str_points") > 256 Then $str = MemRead($sro_pid[2], "str_points") + 256
    GUICtrlSetData($labelstrpoints, MemRead($sro_pid[2], "str_points"))
    $oldstrpoints = GUICtrlRead($labelstrpoints)
    EndIf
    If $oldintpoints <> MemRead($sro_pid[2], "int_points") Then
    GUICtrlSetData($labelintpoints, MemRead($sro_pid[2], "int_points"))
    $oldintpoints = GUICtrlRead($labelintpoints)
    EndIf
    $newcurhp = MemRead($sro_pid[2], "curhp")
    If $newcurhp = 0 Then TrayTip("You died!", "Better check your fightstyle", 10)
    If $oldcurhp <> $newcurhp Then
    GUICtrlSetData($labelhpanzeige, $newcurhp & "/" & MemRead($sro_pid[2], "hpmax"))
    $oldcurhp = $newcurhp
    EndIf
    _GuiCtrlOCXProgressSetValue($progresshp, MemRead($sro_pid[2], "hp%"))
    $newcurmp = MemRead($sro_pid[2], "curmp")
    If $oldcurmp <> $newcurmp Then
    GUICtrlSetData($labelmpanzeige, $newcurmp & "/" & MemRead($sro_pid[2], "mpmax"))
    $oldcurmp = $newcurmp
    EndIf
    _GuiCtrlOCXProgressSetValue($progressmp, MemRead($sro_pid[2], "mp%"))
    $newcurexp = MemRead($sro_pid[2], "curexp")
    If $oldcurexp <> $newcurexp Then
    GUICtrlSetData($labelexpanzeige, $newcurexp & "/" & findmaxexp(MemRead($sro_pid[2], "level")) & " " & MemRead($sro_pid[2], "exp"))
    $oldcurexp = $newcurexp
    EndIf
    _GuiCtrlOCXProgressSetValue($progressexp, MemRead($sro_pid[2], "curexp") / findmaxexp(MemRead($sro_pid[2], "level")) * 100)
    EndFunc ;==>SetLabels

    [/autoit] [autoit][/autoit] [autoit]

    Func _CheckProcessConnect($sProcess, $iIp = False)
    If RegRead("HKEY_CURRENT_USER\Control Panel\International\", "sLanguage") <> "DEU" Then
    SetError(3)
    Return 0
    EndIf
    $iPID = $sro_pid[2]
    $foo = Run(@ComSpec & " /c netstat -on", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    Switch $iIp
    Case False
    If StringInStr(" " & $line & " ", $iPID) And StringInStr(" " & $line & " ", "HERGESTELLT") Then
    Return 1
    EndIf
    Case Else
    If StringInStr(" " & $line & " ", $iPID) And StringInStr(" " & $line & " ", "HERGESTELLT") And StringInStr(" " & $line & " ", $iIp) Then
    Return 1
    EndIf
    EndSwitch
    WEnd
    SetError(1)
    Return 0
    EndFunc ;==>_CheckProcessConnect

    [/autoit] [autoit][/autoit] [autoit]

    Func findmaxexp($level)
    Switch $level
    Case 1
    Return 118
    Case 2
    Return 470
    Case 3
    Return 1058
    Case 4
    Return 1880
    Case 5
    Return 2938
    Case 6
    Return 5640
    Case 7
    Return 9048
    Case 8
    Return 13160
    Case 9
    Return 17978
    Case 10
    Return 23500
    Case 11
    Return 34898
    Case 12
    Return 47940
    Case 13
    Return 62628
    Case 14
    Return 78960
    Case 15
    Return 96938
    Case 16
    Return 127849
    Case 17
    Return 161798
    Case 18
    Return 198810
    Case 19
    Return 238878
    Case 20
    Return 282000
    Case 21
    Return 351231
    Case 22
    Return 427755
    Case 23
    Return 512196
    Case 24
    Return 605232
    Case 25
    Return 707587
    Case 26
    Return 820046
    Case 27
    Return 943453
    Case 28
    Return 1078717
    Case 29
    Return 1226815
    Case 30
    Return 1338803
    Case 31
    Return 1595229
    Case 32
    Return 1818827
    Case 33
    Return 2060796
    Case 34
    Return 2322414
    Case 35
    Return 2605043
    Case 36
    Return 2910129
    Case 37
    Return 3239210
    Case 38
    Return 3593924
    Case 39
    Return 3976012
    Case 40
    Return 4387323
    Case 41
    Return 4869381
    Case 42
    Return 5382982
    Case 43
    Return 5929882
    Case 44
    Return 6511920
    Case 45
    Return 7131034
    Case 46
    Return 7789258
    Case 47
    Return 8488730
    Case 48
    Return 9231697
    Case 49
    Return 10020519
    Case 50
    Return 10857676
    Case 51
    Return 11857343
    Case 52
    Return 12913686
    Case 53
    Return 14029449
    Case 54
    Return 15207495
    Case 55
    Return 16450818
    Case 56
    Return 17762545
    Case 57
    Return 19145941
    Case 58
    Return 20604414
    Case 59
    Return 22141527
    Case 60
    Return 23760997
    Case 61
    Return 25933410
    Case 62
    Return 28214785
    Case 63
    Return 30609702
    Case 64
    Return 39747505
    Case 65
    Return 51493509
    Case 66
    Return 55474876
    Case 67
    Return 59648780
    Case 68
    Return 64023195
    Case 69
    Return 68606389
    Case 70
    Return 73406955
    Case 71
    Return 79345238
    Case 72
    Return 85573753
    Case 73
    Return 92104572
    Case 74
    Return 98950215
    Case 75
    Return 106123703
    Case 76
    Return 113638552
    Case 77
    Return 121508783
    Case 78
    Return 129748946
    Case 79
    Return 138374168
    Case 80
    Return 147400127
    Case 81
    Return 158227752
    Case 82
    Return 169572387
    Case 83
    Return 181455292
    Case 84
    Return 193898546
    Case 85
    Return 206558723
    Case 86
    Return 220558723
    Case 87
    Return 234824141
    Case 88
    Return 249746989
    Case 89
    Return 265353867
    Case 90
    Return 281672373
    EndSwitch
    EndFunc ;==>findmaxexp

    [/autoit]

    So, die Faktoren die nicht funktionieren, sind: MemRead("guild"), MemRead("STR") und MemRead("INT"). Warum habe ich oben beschrieben, und woran es liegen könnte. Alles was ich wollte ist eine schöne klare Antwort und jetzt entsteht hier so ein Mist aufgrund eines Missverständnisses, was ich bereits in meinem 2. Post versucht habe zu beseitigen.
    Ich hoffe jetzt mal auf einen produktiven Beitrag.

    Hier noch die Dateien die zusätzlich für das Tool gebraucht werden.

    2 Mal editiert, zuletzt von NoName (18. September 2008 um 19:08)