Jump to content



Photo

Pinball Trainer?


  • Please log in to reply
12 replies to this topic

#1 Dellairion

Dellairion

    Adventurer

  • Active Members
  • PipPip
  • 111 posts

Posted 31 August 2006 - 01:30 AM

Wel hello out there, i was bussy with making a trainer for pinball but i think im going to quit autoit becouse im going to learn C++ at school. :)
but i will post what i already had... (just one last question is it possible to keep the freeze button down when its pressed? :P no nvm. )

I tested this only on windows xp media center... not sure if adresses and pointers are same on other computers. (you can always change them ofcourse)
It works, atleast for me it does.


AutoIt         
; Pinball Trainer (Trainer_Pinball.au3) ; By kristof 2006-2007 ; ; #NoTrayIcon #include <GUIConstants.au3> Opt("WinTitleMatchMode", 2) AutoItSetOption("PixelCoordMode", 0) $title =    "Pinball Space Cadet Trainer - By Kristof" $title_pinball = ", Space Cadet" $exe =      "PINBALL.EXE" $Process =  ProcessExists($exe) If $Process > 0 Then MsgBox(0, $title, "Pinball is already running. Please close it and restart pinball with this trainer."&@CR&"Some functions will possible not work if you don't do this.") $Mem_Players =      0x01025658 ; pointer $Mem_curplayer =    0x00CAAEA2 ; pointer $Mem_Score_p1 =     0x00B33D74 $Mem_Score_p2 =     0x00B33DC4 $Mem_Score_p3 =     0x00B33E14 $Mem_Score_p4 =     0x00B33E64 $Mem_Score_write =  0x00CAAEBA $Mem_Balls =        0x00CAAE9E ; pointer $Mem_replayball =   0x01023D04 ; pointer $Mem_hyper1 =       0x00CADA2C ; pointer $Mem_hyper2 =       0x00CAD448 ; pointer $Mem_hyper3 =       0x00CBA49C ; pointer $Mem_hyper4 =       0x00CBA4A0 ; pointer $Mem_magnet =       0x00CCBC3A ; pointer $Mem_ball_x =       0x00B30E84 $Mem_ball_y =       0x00B30E88 Dim $Mem_Players_offset[2] Dim $Mem_Balls_offset[2] Dim $Mem_replayball_offset[2] Dim $Mem_curplayer_offset[2] Dim $Mem_hyper1_offset[2] Dim $Mem_hyper2_offset[2] Dim $Mem_hyper3_offset[2] Dim $Mem_hyper4_offset[2] Dim $Mem_magnet_offset[2] $Mem_players_offset[1] =    Dec("D6") $Mem_Balls_offset[1] =      Dec("00") $Mem_replayball_offset[1] = Dec("4E") $Mem_curplayer_offset[1] =  Dec("00") $Mem_hyper1_offset[1] =     Dec("4E") $Mem_hyper2_offset[1] =     Dec("4E") $Mem_hyper3_offset[1] =     Dec("4E") $Mem_hyper4_offset[1] =     Dec("4E") $Mem_magnet_offset[1] =     Dec("05") $Maxplayers =       1 $Currentplayer =    1 $Balls =        1 $score_p1 =     0 $score_p2 =     0 $score_p3 =     0 $score_p4 =     0 $ratio =    1 $X =        0 $Y =        0 $Flipper_left_x_start =     130 $Flipper_left_x_end =       165 $Flipper_left_y_start =     365 $Flipper_left_y_end =       405 $Flipper_right_x_start =    183 $Flipper_right_x_end =      212 $Flipper_right_y_start =    360 $Flipper_right_y_end =      405 $Launch_x_start =   315 $Launch_y_start =   368 $Launch_x_end =     325 $Launch_y_end =     375 $Ball_color =       0xD4CCCC $Flipper_left =     "LEFT" $Flipper_right =    "RIGHT" $Launch =           "SPACE" $GUI = GUICreate($title, 506, 445, 236, 141) Opt("GUIOnEventMode", 1) $M_main = GUICtrlCreateMenu("&Start") $M_pinball = GUICtrlCreateMenuItem("Start Pinball", $M_main) GUICtrlSetOnEvent(-1, "Start_Pinball") $M_about = GUICtrlCreateMenuItem("About", $M_main) GUICtrlSetOnEvent(-1, "About") $M_exit = GUICtrlCreateMenuItem("Exit", $M_main) GUICtrlSetOnEvent(-1, "Quit") GUISetOnEvent($GUI_EVENT_CLOSE, "Quit") $L_maxplayers = GUICtrlCreateLabel("Max players:", 8, 16, 63, 17) $L_currentplayer = GUICtrlCreateLabel("Current player:", 8, 32, 72, 17) $LV_maxplayers = GUICtrlCreateLabel($Maxplayers, 96, 16, 62, 17) $LV_currentplayer = GUICtrlCreateLabel($Currentplayer, 96, 32, 71, 17) $G_ball = GUICtrlCreateGroup("Ball", 8, 56, 201, 73) $L_balls = GUICtrlCreateLabel("Ball nr:", 21, 72, 36, 17) $LV_balls = GUICtrlCreateLabel($Balls, 60, 72, 26, 17) $L_x = GUICtrlCreateLabel("Poss X:", 24, 88, 40, 17) $L_y = GUICtrlCreateLabel("Poss Y:", 24, 104, 40, 17) $LV_x = GUICtrlCreateLabel($X, 72, 88, 30, 17) $LV_y = GUICtrlCreateLabel($Y, 72, 104, 30, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $B_editballs = GUICtrlCreateInput($Balls, 387, 9, 22, 21, $ES_NUMBER) $L_editball = GUICtrlCreateLabel("Edit current ball nr:", 283, 16, 92, 17) $BT_freezeball = GUICtrlCreateCheckbox("Freeze", 412, 12, 41, 17, $BS_PUSHLIKE) $BT_setball = GUICtrlCreateButton("Set", 457, 12, 41, 17, 0) $CB_hyper1 = GUICtrlCreateCheckbox("Hyper space level 1", 229, 61, 121, 17) $CB_hyper2 = GUICtrlCreateCheckbox("Hyper space level 2", 229, 76, 121, 17) $CB_hyper3 = GUICtrlCreateCheckbox("Hyper space level 3", 229, 91, 121, 17) $CB_hyper4 = GUICtrlCreateCheckbox("Hyper space level 4", 229, 106, 121, 17) $CB_pin = GUICtrlCreateCheckbox("Pin between 2 flippers", 365, 76, 129, 17) $CB_magnet = GUICtrlCreateCheckbox("Magnet", 365, 91, 129, 17) $CB_flipper = GUICtrlCreateCheckbox("Auto flipper (Win mode)", 365, 106, 129, 17) $L_ratio = GUICtrlCreateLabel("Points ratio:", 283, 40, 59, 17) $BT_setratio = GUICtrlCreateButton("Set", 412, 35, 41, 17, 0) GUICtrlSetOnEvent(-1, "ratio_set") ;$L_ratio2 = GUICtrlCreateLabel("/10", 410, 40, 59, 17) $B_ratio = GUICtrlCreateInput($ratio, 379, 31, 30, 21, $ES_NUMBER) $CB_replayball = GUICtrlCreateCheckbox("Replay ball", 365, 61, 97, 17) $G_player1 = GUICtrlCreateGroup("Player 1", 8, 136, 489, 65) $L_score_p1 = GUICtrlCreateLabel("Score:", 24, 168, 35, 17) $LV_score_P1 = GUICtrlCreateLabel($Score_p1, 64, 168, 54, 17) $B_score_p1 = GUICtrlCreateInput($Score_p1, 272, 161, 65, 21, $ES_NUMBER) $L_editscore_p1 = GUICtrlCreateLabel("Edit score:", 209, 168, 54, 17) $BT_freezescore_p1 = GUICtrlCreateCheckbox("Freeze", 345, 164, 41, 17, $BS_PUSHLIKE) GUICtrlSetOnEvent(-1, "score_freeze_p1") $BT_setscore_p1 = GUICtrlCreateButton("Set", 390, 164, 41, 17, 0) GUICtrlSetOnEvent(-1, "score_write_p1") GUICtrlCreateGroup("", -99, -99, 1, 1) $G_player2 = GUICtrlCreateGroup("Player 2", 9, 208, 489, 65) $L_score_p2 = GUICtrlCreateLabel("Score:", 25, 240, 35, 17) $LV_score_p2 = GUICtrlCreateLabel($Score_p2, 65, 240, 54, 17) $B_score_p2 = GUICtrlCreateInput($Score_p2, 273, 233, 65, 21, $ES_NUMBER) $L_editscore_p2 = GUICtrlCreateLabel("Edit score:", 210, 240, 54, 17) $BT_freezescore_p2 = GUICtrlCreateCheckbox("Freeze", 345, 236, 41, 17, $BS_PUSHLIKE) GUICtrlSetOnEvent(-1, "score_freeze_p2") $BT_setscore_p2 = GUICtrlCreateButton("Set", 390, 236, 41, 17, 0) GUICtrlSetOnEvent(-1, "score_write_p2") GUICtrlCreateGroup("", -99, -99, 1, 1) $G_player3 = GUICtrlCreateGroup("Player 3", 9, 280, 489, 65) $L_score_p3 = GUICtrlCreateLabel("Score:", 25, 312, 35, 17) $LV_score_p3 = GUICtrlCreateLabel($Score_p3, 65, 312, 54, 17) $B_score_p3 = GUICtrlCreateInput($Score_p3, 273, 305, 65, 21, $ES_NUMBER) $L_editscore_p3 = GUICtrlCreateLabel("Edit score:", 210, 312, 54, 17) $BT_freezescore_p3 = GUICtrlCreateCheckbox("Freeze", 345, 308, 41, 17, $BS_PUSHLIKE) GUICtrlSetOnEvent(-1, "score_freeze_p3") $BT_setscore_p3 = GUICtrlCreateButton("Set", 390, 308, 41, 17, 0) GUICtrlSetOnEvent(-1, "score_write_p3") GUICtrlCreateGroup("", -99, -99, 1, 1) $G_player4 = GUICtrlCreateGroup("Player 4", 9, 352, 489, 65) $L_score_p4 = GUICtrlCreateLabel("Score:", 25, 384, 35, 17) $LV_score_p4 = GUICtrlCreateLabel($Score_p4, 65, 384, 54, 17) $B_score_p4 = GUICtrlCreateInput($Score_p4, 273, 377, 65, 21, $ES_NUMBER) $L_editscore_p4 = GUICtrlCreateLabel("Edit score:", 210, 384, 54, 17) $BT_freezescore_p4 = GUICtrlCreateCheckbox("Freeze", 345, 380, 41, 17, $BS_PUSHLIKE) GUICtrlSetOnEvent(-1, "score_freeze_p4") $BT_setscore_p4 = GUICtrlCreateButton("Set", 390, 380, 41, 17, 0) GUICtrlSetOnEvent(-1, "score_write_p4") GUICtrlCreateGroup("", -99, -99, 1, 1) GUISetState(@SW_SHOW) GUICtrlSetState($BT_freezeball, $GUI_DISABLE) GUICtrlSetState($BT_setball, $GUI_DISABLE) GUICtrlSetState($B_editballs, $GUI_DISABLE) GUICtrlSetState($B_ratio, $GUI_DISABLE) GUICtrlSetState($BT_setratio, $GUI_DISABLE) Func Start_Pinball()     if Not ProcessExists($exe) then         Run(@HomeDrive & "\Program Files\Windows NT\Pinball\PINBALL.EXE", @HomeDrive & "\Program Files\Windows NT\Pinball")         $Process = ProcessExists($exe)     endif EndFunc Func Quit()     If $Process > 0 Then         $M_open = _MemoryOpen($Process)         _MemoryPointerWrite($M_open, $Mem_replayball, $Mem_replayball_offset, 0)         _MemoryPointerWrite($M_open, $Mem_magnet, $Mem_magnet_offset, 0)         _MemoryPointerWrite($M_open, $Mem_hyper1, $Mem_hyper1_offset, 0)         _MemoryPointerWrite($M_open, $Mem_hyper2, $Mem_hyper2_offset, 0)         _MemoryPointerWrite($M_open, $Mem_hyper3, $Mem_hyper3_offset, 0)         _MemoryPointerWrite($M_open, $Mem_hyper4, $Mem_hyper4_offset, 0)         _MemoryClose($M_open)     EndIf     Exit EndFunc Func About()     GUISetState(@SW_HIDE)     MsgBox(0, "3D Pinball Space Cadet Trainer", "A creation by Kris - Copyright 2006-2007"  & @CRLF & "Tested on Windows XP Media Center" & @CRLF & "For more information or help e-mail:" & @CRLF & "thealphateamonline@gmail.com")     GUISetState(@SW_SHOW) EndFunc Func ratio_set()     $ratio_read = GUICtrlRead($B_ratio)     If $ratio_read = 0 Then $ratio_read = 1     $ratio = $ratio_read     ConsoleWrite("ratio: "&$ratio&@CR) EndFunc $Flipper_time = TimerInit() $Launch_time = TimerInit() $Flipper_down = 0 $Launch_down = 0 Func auto_flipper()     If $Launch_down = 1 And TimerDiff($Launch_time) > 500 Then         Send("{"&$Launch&" up}")         $Launch_down = 0     EndIf         ;If TimerDiff($Flipper_time) < 200 Then Return     If $Flipper_down = 1 And TimerDiff($Flipper_time) > 200 Then         Send("{"&$Flipper_left&" up}")         Send("{"&$Flipper_right&" up}")         $Flipper_down = 0     EndIf         If WinActive($title_pinball) Then         $M_open = _MemoryOpen($Process)         $X = _MemoryRead($M_open, $Mem_ball_x)         $Y = _MemoryRead($M_open, $Mem_ball_y)         _MemoryClose($M_open)                 If $X >= $Flipper_left_x_start And $X <= $Flipper_left_x_end Then             If $Y >= $Flipper_left_y_start And $Y <= $Flipper_left_y_end Then                 Send("{"&$Flipper_left&" down}")                 $Flipper_time = TimerInit()                 $Flipper_down = 1             EndIf         EndIf                 If $X >= $Flipper_right_x_start And $X <= $Flipper_right_x_end Then             If $Y >= $Flipper_right_y_start And $Y <= $Flipper_right_y_end Then                 Send("{"&$Flipper_right&" down}")                 $Flipper_time = TimerInit()                 $Flipper_down = 1             EndIf         EndIf                 If $X >= $Launch_x_start And $X <= $Launch_x_end Then             If $Y >= $Launch_y_start And $Y <= $Launch_y_end And $Launch_down = 0 Then                 Send("{"&$Launch&" down}")                 $Launch_time = TimerInit()                 $Launch_down = 1             EndIf         EndIf                 ;PixelSearch($Flipper_left_x_start, $Flipper_left_y_start, $Flipper_left_x_end, $Flipper_left_y_end, $Ball_color)         ;If Not @Error Then         ;   Send("{"&$Flipper_left&" down}")         ;   $Flipper_time = TimerInit()         ;   ;ConsoleWrite(@CR&$pixel[0]&" | "&$pixel[1]&@CR)         ;   $Flipper_down = 1         ;EndIf         ;         ;PixelSearch($Flipper_right_x_start, $Flipper_right_y_start, $Flipper_right_x_end, $Flipper_right_y_end, $Ball_color)         ;If Not @Error Then         ;   Send("{"&$Flipper_right&" down}")         ;   $Flipper_time = TimerInit()         ;   ;ConsoleWrite(@CR&$pixel2[0]&" | "&$pixel2[1]&@CR)         ;   $Flipper_down = 1         ;EndIf         ;         ;PixelSearch($Launch_x_start, $Launch_y_start, $Launch_x_end, $Launch_y_end, $Ball_color)         ;If Not @Error Then         ;           ;   $Launch_down = 1         ;EndIf     EndIf EndFunc $Player_stat = 1 Func Read()     $M_open = _MemoryOpen($Process)     $Maxplayers_read = _MemoryPointerRead($M_open, $Mem_Players, $Mem_players_offset)     $Balls_read = _MemoryPointerRead($M_open, $Mem_Balls, $Mem_Balls_offset)     $Currentplayer_read = _MemoryPointerRead($M_open, $Mem_curplayer, $Mem_curplayer_offset)         $Maxplayers = $Maxplayers_read[1]     $Balls = $Balls_read[1]     $Currentplayer = $Currentplayer_read[1]         $X = _MemoryRead($M_open, $Mem_ball_x)     $Y = _MemoryRead($M_open, $Mem_ball_y)         $Score_read = _MemoryRead($M_open, $Mem_Score_write)     ;ConsoleWrite(GUICtrlRead($LV_score_p2)&@CR&$Score_read&@CR&$Currentplayer&@CR&@CR)     If $Currentplayer = 1 And GUICtrlRead($LV_score_p1) <> $Score_read And $Player_stat = 4 Then         _MemoryWrite($M_open, $Mem_Score_write, GUICtrlRead($LV_score_p1))         _MemoryWrite($M_open, $Mem_Score_p1, GUICtrlRead($LV_score_p1))         $Player_stat = 1     ElseIf $Currentplayer = 2 And GUICtrlRead($LV_score_p2) <> $Score_read And $Player_stat = 1 Then         _MemoryWrite($M_open, $Mem_Score_write, GUICtrlRead($LV_score_p2))         _MemoryWrite($M_open, $Mem_Score_p2, GUICtrlRead($LV_score_p2))         $Player_stat = 2     ElseIf $Currentplayer = 3 And GUICtrlRead($LV_score_p3) <> $Score_read And $Player_stat = 2 Then         _MemoryWrite($M_open, $Mem_Score_write, GUICtrlRead($LV_score_p3))         _MemoryWrite($M_open, $Mem_Score_p3, GUICtrlRead($LV_score_p3))         $Player_stat = 3     ElseIf $Currentplayer = 4 And GUICtrlRead($LV_score_p4) <> $Score_read And $Player_stat = 3 Then         _MemoryWrite($M_open, $Mem_Score_write, GUICtrlRead($LV_score_p4))         _MemoryWrite($M_open, $Mem_Score_p4, GUICtrlRead($LV_score_p4))         $Player_stat = 4     EndIf         $Score_p1_ratio = 0     $Score_p1_ratio = 0     $Score_p1_ratio = 0     $Score_p1_ratio = 0         ;If $Currentplayer = 1 Then         $Score_p1 = _MemoryRead($M_open, $Mem_Score_p1)         ;$Score_p1_read = _MemoryRead($M_open, $Mem_Score_p1)         ;If $Score_p1_read < 0 Then $Score_p1_read = 0         If $Score_p1 < 0 Then $Score_p1 = 0         ;         ;If $Score_p1 < $Score_p1_read Then         ;   $Score_p1_ratio = ($Score_p1_read - $Score_p1)*$ratio         ;   ConsoleWrite("Score: "&$score_p1&" DIFF: "&$Score_p1_ratio/$ratio&@CR)         ;           ;   _MemoryWrite($M_open, $Mem_Score_p1, $Score_read)         ;   If $Currentplayer = 1 Then _MemoryWrite($M_open, $Mem_Score_write, $Score_read)         ;           ;ElseIf $Score_p1 <> $Score_p1_read Then         ;   $Score_p1_ratio = $Score_p1_read         ;EndIf         ;$Score_p1 += Round($Score_p1_ratio)                 ;_MemoryWrite($M_open, $Mem_Score_p1, $Score_read)         ;If $Currentplayer = 1 Then _MemoryWrite($M_open, $Mem_Score_write, $Score_read)             ;ElseIf $Currentplayer = 2 Then         $Score_p2 = _MemoryRead($M_open, $Mem_Score_p2)         If $Score_p2 < 0 Then $Score_p2 = 0     ;ElseIf $Currentplayer = 3 Then         $Score_p3 = _MemoryRead($M_open, $Mem_Score_p3)         If $Score_p3 < 0 Then $Score_p3 = 0     ;ElseIf $Currentplayer = 4 Then         $Score_p4 = _MemoryRead($M_open, $Mem_Score_p4)         If $Score_p4 < 0 Then $Score_p4 = 0     ;EndIf         _MemoryClose($M_open) EndFunc #cs ;;;;;; GUICtrlCreateMenuitem("test", $M_main) GUICtrlSetOnEvent(-1, "test") Func test()     $M_open = _MemoryOpen($Process)     _MemoryWrite($M_open, 0x00CAAEBA, 1)     _MemoryClose($M_open)     ConsoleWrite("test " & @error & @CR) EndFunc ;;;;;;; #ce $Score_p1_freeze_val = -1 $Score_p2_freeze_val = -1 $Score_p3_freeze_val = -1 $Score_p4_freeze_val = -1 Func Score_Freeze($player)     If Eval("Score_p"&$player&"_freeze_val") >= 0 Then         Assign("Score_p"&$player&"_freeze_val", -1)         ;ConsoleWrite("EX0" & @CR)     Else         Assign("Score_p"&$player&"_freeze_val", Eval("score_p"&$player))         ;ConsoleWrite("EX1" & @CR)     EndIf EndFunc ;Func Balls_Write()     ;$Balls = GUICtrlRead($B_editballs)     ;$M_open = _MemoryOpen($Process)     ;_MemoryWrite($M_open, $Mem_Balls + $Mem_Balls_offset, "0x" & Hex($Balls))     ;;_MemoryWrite($M_open, "0x" & $Mem_Balls_p1, "0x" & Hex($Balls_p1_Read))     ;_MemoryClose($M_open) ;EndFunc Func Score_Write($player)     If $player > 4 Or $player < 1 Then Return     ;If $player <> $Currentplayer Then Return         $Score_read = GuiCtrlRead(Eval("B_score_p"&$player))     If Eval("Score_p"&$player&"_freeze_val") >= 0 Then Assign("Score_p"&$player&"_freeze_val", $Score_read)         $M_open = _MemoryOpen($Process)     If $player = $Currentplayer Then _MemoryWrite($M_open, $Mem_Score_write, $Score_read)     _MemoryWrite($M_open, Eval("Mem_Score_p"&$player), $Score_read)     _MemoryClose($M_open) EndFunc Func score_write_p1()     Score_Write(1) EndFunc Func score_write_p2()     Score_Write(2) EndFunc Func score_write_p3()     Score_Write(3) EndFunc Func score_write_p4()     Score_Write(4) EndFunc Func score_freeze_p1()     Score_freeze(1) EndFunc Func score_freeze_p2()     Score_freeze(2) EndFunc Func score_freeze_p3()     Score_freeze(3) EndFunc Func score_freeze_p4()     Score_freeze(4) EndFunc $Replayball = 0 $Magnet = 0 $Hyper1 = 0 $Hyper2 = 0 $Hyper3 = 0 $Hyper4 = 0 $Process_state = 1 $Maxplayers_rec = 0 $refresh = TimerInit() GUISetState(@SW_SHOW) while 1     If GUICtrlRead($CB_flipper) = $GUI_CHECKED And $Process > 0 Then auto_flipper()     If TimerDiff($refresh) > 300 Then         $Process = ProcessExists($exe)         If $Process > 0 Then             Read()                         $M_open = _MemoryOpen($Process)             If GUICtrlRead($CB_replayball) = $GUI_CHECKED Then                 _MemoryPointerWrite($M_open, $Mem_replayball, $Mem_replayball_offset, 1)                 $Replayball = 1             ElseIf $Replayball = 1 And GUICtrlRead($CB_replayball) = $GUI_UNCHECKED Then                 _MemoryPointerWrite($M_open, $Mem_replayball, $Mem_replayball_offset, 0)                 $Replayball = 0             EndIf             If GUICtrlRead($CB_magnet) = $GUI_CHECKED Then                 _MemoryPointerWrite($M_open, $Mem_magnet, $Mem_magnet_offset, 1)                 $Magnet = 1             ElseIf $Magnet = 1 And GUICtrlRead($CB_magnet) = $GUI_UNCHECKED Then                 _MemoryPointerWrite($M_open, $Mem_magnet, $Mem_magnet_offset, 0)                 $Magnet = 0             EndIf                         If GUICtrlRead($CB_hyper1) = $GUI_CHECKED Then                 _MemoryPointerWrite($M_open, $Mem_hyper1, $Mem_hyper1_offset, 1)                 $Hyper1 = 1             ElseIf $Hyper1 = 1 And GUICtrlRead($CB_hyper1) = $GUI_UNCHECKED Then                 _MemoryPointerWrite($M_open, $Mem_hyper1, $Mem_hyper1_offset, 0)                 $Hyper1 = 0             EndIf             If GUICtrlRead($CB_hyper2) = $GUI_CHECKED Then                 _MemoryPointerWrite($M_open, $Mem_hyper2, $Mem_hyper2_offset, 1)                 $Hyper2 = 1             ElseIf $Hyper2 = 1 And GUICtrlRead($CB_hyper2) = $GUI_UNCHECKED Then                 _MemoryPointerWrite($M_open, $Mem_hyper2, $Mem_hyper2_offset, 0)                 $Hyper2 = 0             EndIf             If GUICtrlRead($CB_hyper3) = $GUI_CHECKED Then                 _MemoryPointerWrite($M_open, $Mem_hyper3, $Mem_hyper3_offset, 1)                 $Hyper3 = 1             ElseIf $Hyper3 = 1 And GUICtrlRead($CB_hyper3) = $GUI_UNCHECKED Then                 _MemoryPointerWrite($M_open, $Mem_hyper3, $Mem_hyper3_offset, 0)                 $Hyper3 = 0             EndIf             If GUICtrlRead($CB_hyper4) = $GUI_CHECKED Then                 _MemoryPointerWrite($M_open, $Mem_hyper4, $Mem_hyper4_offset, 1)                 $Hyper4 = 1             ElseIf $Hyper4 = 1 And GUICtrlRead($CB_hyper1) = $GUI_UNCHECKED Then                 _MemoryPointerWrite($M_open, $Mem_hyper4, $Mem_hyper4_offset, 0)                 $Hyper4 = 0             EndIf             _MemoryClose($M_open)                         GUICtrlSetData($LV_maxplayers, $Maxplayers)             GUICtrlSetData($LV_currentplayer, $Currentplayer)             GUICtrlSetData($LV_score_p1, $Score_p1)             GUICtrlSetData($LV_score_p2, $Score_p2)             GUICtrlSetData($LV_score_p3, $Score_p3)             GUICtrlSetData($LV_score_p4, $Score_p4)             GUICtrlSetData($LV_balls, $Balls)             GUICtrlSetData($B_editballs, $Balls)             GUICtrlSetData($LV_x, $X)             GUICtrlSetData($LV_y, $Y)                         If GuiCtrlRead($B_score_p1) = $score_p1 Or Not WinActive($title) And GuiCtrlRead($B_score_p1) <> "" Then                 ;If $Currentplayer = 1 Then                 GUICtrlSetData($B_Score_p1, $Score_p1)             EndIf             If GuiCtrlRead($B_score_p2) = $score_p2 Or Not WinActive($title) And GuiCtrlRead($B_score_p2) <> "" Then                 ;If $Currentplayer = 2 Then                 GUICtrlSetData($B_Score_p2, $Score_p2)             EndIf             If GuiCtrlRead($B_score_p3) = $score_p3 Or Not WinActive($title) And GuiCtrlRead($B_score_p3) <> "" Then                 ;If $Currentplayer = 3 Then                 GUICtrlSetData($B_Score_p3, $Score_p3)             EndIf             If GuiCtrlRead($B_score_p4) = $score_p4 Or Not WinActive($title) And GuiCtrlRead($B_score_p4) <> "" Then                 ;If $Currentplayer = 4 Then                 GUICtrlSetData($B_Score_p4, $Score_p4)             EndIf                         If Eval("Score_p"&$Currentplayer&"_freeze_val") >= 0 Then                 If Eval("Score_p"&$Currentplayer&"_freeze_val") <> Eval("score_p"&$Currentplayer) Then                     $M_open = _MemoryOpen($Process)                     _MemoryWrite($M_open, $Mem_Score_write, Eval("Score_p"&$Currentplayer&"_freeze_val"))                     _MemoryClose($M_open)                 EndIf             EndIf         EndIf         $refresh = TimerInit()     EndIf         If $Maxplayers <> $Maxplayers_rec Then         If $Maxplayers > 3 Then             GUICtrlSetState($B_Score_p2, $GUI_ENABLE)             GUICtrlSetState($BT_freezescore_p2, $GUI_ENABLE)             GUICtrlSetState($BT_setscore_p2, $GUI_ENABLE)             GUICtrlSetState($B_Score_p3, $GUI_ENABLE)             GUICtrlSetState($BT_freezescore_p3, $GUI_ENABLE)             GUICtrlSetState($BT_setscore_p3, $GUI_ENABLE)             GUICtrlSetState($B_Score_p4, $GUI_ENABLE)             GUICtrlSetState($BT_freezescore_p4, $GUI_ENABLE)             GUICtrlSetState($BT_setscore_p4, $GUI_ENABLE)         ElseIf $Maxplayers > 2 Then             GUICtrlSetState($B_Score_p2, $GUI_ENABLE)             GUICtrlSetState($BT_freezescore_p2, $GUI_ENABLE)             GUICtrlSetState($BT_setscore_p2, $GUI_ENABLE)             GUICtrlSetState($B_Score_p3, $GUI_ENABLE)             GUICtrlSetState($BT_freezescore_p3, $GUI_ENABLE)             GUICtrlSetState($BT_setscore_p3, $GUI_ENABLE)             GUICtrlSetState($B_Score_p4, $GUI_DISABLE)             GUICtrlSetState($BT_freezescore_p4, $GUI_DISABLE)             GUICtrlSetState($BT_setscore_p4, $GUI_DISABLE)         ElseIf $Maxplayers > 1 Then             GUICtrlSetState($B_Score_p2, $GUI_ENABLE)             GUICtrlSetState($BT_freezescore_p2, $GUI_ENABLE)             GUICtrlSetState($BT_setscore_p2, $GUI_ENABLE)             GUICtrlSetState($B_Score_p3, $GUI_DISABLE)             GUICtrlSetState($BT_freezescore_p3, $GUI_DISABLE)             GUICtrlSetState($BT_setscore_p3, $GUI_DISABLE)             GUICtrlSetState($B_Score_p4, $GUI_DISABLE)             GUICtrlSetState($BT_freezescore_p4, $GUI_DISABLE)             GUICtrlSetState($BT_setscore_p4, $GUI_DISABLE)         Else             GUICtrlSetState($B_Score_p2, $GUI_DISABLE)             GUICtrlSetState($BT_freezescore_p2, $GUI_DISABLE)             GUICtrlSetState($BT_setscore_p2, $GUI_DISABLE)             GUICtrlSetState($B_Score_p3, $GUI_DISABLE)             GUICtrlSetState($BT_freezescore_p3, $GUI_DISABLE)             GUICtrlSetState($BT_setscore_p3, $GUI_DISABLE)             GUICtrlSetState($B_Score_p4, $GUI_DISABLE)             GUICtrlSetState($BT_freezescore_p4, $GUI_DISABLE)             GUICtrlSetState($BT_setscore_p4, $GUI_DISABLE)         EndIf         $Maxplayers_rec = $Maxplayers     EndIf         If Not $Process > 0 And $Process_state = 1 Then         $Process_state = 0         GUICtrlSetState($CB_hyper1, $GUI_DISABLE)         GUICtrlSetState($CB_hyper2, $GUI_DISABLE)         GUICtrlSetState($CB_hyper3, $GUI_DISABLE)         GUICtrlSetState($CB_hyper4, $GUI_DISABLE)         GUICtrlSetState($CB_magnet, $GUI_DISABLE)         GUICtrlSetState($CB_replayball, $GUI_DISABLE)         ;GUICtrlSetState($CB_pin, $GUI_DISABLE)         GUICtrlSetState($CB_flipper, $GUI_DISABLE)                 GUICtrlSetState($B_Score_p1, $GUI_DISABLE)         GUICtrlSetState($BT_freezescore_p1, $GUI_DISABLE)         GUICtrlSetState($BT_setscore_p1, $GUI_DISABLE)         GUICtrlSetState($B_Score_p2, $GUI_DISABLE)         GUICtrlSetState($BT_freezescore_p2, $GUI_DISABLE)         GUICtrlSetState($BT_setscore_p2, $GUI_DISABLE)         GUICtrlSetState($B_Score_p3, $GUI_DISABLE)         GUICtrlSetState($BT_freezescore_p3, $GUI_DISABLE)         GUICtrlSetState($BT_setscore_p3, $GUI_DISABLE)         GUICtrlSetState($B_Score_p4, $GUI_DISABLE)         GUICtrlSetState($BT_freezescore_p4, $GUI_DISABLE)         GUICtrlSetState($BT_setscore_p4, $GUI_DISABLE)         ;GUICtrlSetState($BT_freezeball, $GUI_DISABLE)         ;GUICtrlSetState($BT_setball, $GUI_DISABLE)         ;GUICtrlSetState($B_editballs, $GUI_DISABLE)     ElseIf $Process > 0 And $Process_state = 0 Then         GUICtrlSetState($CB_hyper1, $GUI_ENABLE)         GUICtrlSetState($CB_hyper2, $GUI_ENABLE)         GUICtrlSetState($CB_hyper3, $GUI_ENABLE)         GUICtrlSetState($CB_hyper4, $GUI_ENABLE)         GUICtrlSetState($CB_magnet, $GUI_ENABLE)         GUICtrlSetState($CB_replayball, $GUI_ENABLE)         ;GUICtrlSetState($CB_pin, $GUI_ENABLE)         GUICtrlSetState($CB_flipper, $GUI_ENABLE)                 ;GUICtrlSetState($BT_freezeball, $GUI_ENABLE)         ;GUICtrlSetState($BT_setball, $GUI_ENABLE)         ;GUICtrlSetState($B_editballs, $GUI_ENABLE)         GUICtrlSetState($B_Score_p1, $GUI_ENABLE)         GUICtrlSetState($BT_freezescore_p1, $GUI_ENABLE)         GUICtrlSetState($BT_setscore_p1, $GUI_ENABLE)         $Process_state = 1     EndIf     WEnd #Region MEM Func _MemoryOpen($iv_Pid, $iv_DesiredAccess = 0x1F0FFF, $if_InheritHandle = 1)     If Not ProcessExists($iv_Pid) Then         SetError(1)         Return 0     EndIf     Local $ah_Handle[2] = [DllOpen('kernel32.dll')]     If @Error Then         SetError(2)         Return 0     EndIf     Local $av_OpenProcess = DllCall($ah_Handle[0], 'int', 'OpenProcess', 'int', $iv_DesiredAccess, 'int', $if_InheritHandle, 'int', $iv_Pid)     If @Error Then         DllClose($ah_Handle[0])         SetError(3)         Return 0     EndIf     $ah_Handle[1] = $av_OpenProcess[0]     Return $ah_Handle EndFunc Func _MemoryRead($ah_Handle, $iv_Address, $sv_Type = 'dword')     If Not IsArray($ah_Handle) Then         SetError(1)         Return 0     EndIf     Local $v_Buffer = DllStructCreate($sv_Type)     If @Error Then         SetError(@Error + 1)         Return 0     EndIf     DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')     If Not @Error Then         Local $v_Value = DllStructGetData($v_Buffer, 1)         Return $v_Value     Else         SetError(6)         Return 0     EndIf EndFunc Func _MemoryWrite($ah_Handle, $iv_Address, $v_Data, $sv_Type = 'dword')     If Not IsArray($ah_Handle) Then         SetError(1)         Return 0     EndIf     Local $v_Buffer = DllStructCreate($sv_Type)     If @Error Then         SetError(@Error + 1)         Return 0     Else         DllStructSetData($v_Buffer, 1, $v_Data)         If @Error Then             SetError(6)             Return 0         EndIf     EndIf     DllCall($ah_Handle[0], 'int', 'WriteProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')     If Not @Error Then         Return 1     Else         SetError(7)         Return 0     EndIf EndFunc Func _MemoryClose($ah_Handle)     If Not IsArray($ah_Handle) Then         SetError(1)         Return 0     EndIf     DllCall($ah_Handle[0], 'int', 'CloseHandle', 'int', $ah_Handle[1])     If Not @Error Then         DllClose($ah_Handle[0])         Return 1     Else         DllClose($ah_Handle[0])         SetError(2)         Return 0     EndIf EndFunc Func _MemoryPointerRead ($ah_Handle, $iv_Address, $av_Offset, $sv_Type = 'dword')     If IsArray($av_Offset) Then         If IsArray($ah_Handle) Then             Local $iv_PointerCount = UBound($av_Offset) - 1         Else             SetError(2)             Return 0         EndIf     Else         SetError(1)         Return 0     EndIf     Local $iv_Data[2], $i     Local $v_Buffer = DllStructCreate('dword')     For $i = 0 to $iv_PointerCount         If $i = $iv_PointerCount Then             $v_Buffer = DllStructCreate($sv_Type)             If @Error Then                 SetError(@Error + 2)                 Return 0             EndIf             $iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i])             DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')             If @Error Then                 SetError(7)                 Return 0             EndIf             $iv_Data[1] = DllStructGetData($v_Buffer, 1)         ElseIf $i = 0 Then             DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')             If @Error Then                 SetError(7)                 Return 0             EndIf             $iv_Data[1] = DllStructGetData($v_Buffer, 1)         Else             $iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i])             DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')             If @Error Then                 SetError(7)                 Return 0             EndIf             $iv_Data[1] = DllStructGetData($v_Buffer, 1)         EndIf     Next     $iv_Data[0] = $iv_Address     Return $iv_Data EndFunc Func _MemoryPointerWrite ($ah_Handle, $iv_Address, $av_Offset, $v_Data, $sv_Type = 'dword')     If IsArray($av_Offset) Then         If IsArray($ah_Handle) Then             Local $iv_PointerCount = UBound($av_Offset) - 1         Else             SetError(2)             Return 0         EndIf     Else         SetError(1)         Return 0     EndIf     Local $iv_StructData, $i     Local $v_Buffer = DllStructCreate('dword')     For $i = 0 to $iv_PointerCount         If $i = $iv_PointerCount Then             $v_Buffer = DllStructCreate($sv_Type)             If @Error Then                 SetError(@Error + 3)                 Return 0             EndIf             DllStructSetData($v_Buffer, 1, $v_Data)             If @Error Then                 SetError(8)                 Return 0             EndIf             $iv_Address = '0x' & hex($iv_StructData + $av_Offset[$i])             DllCall($ah_Handle[0], 'int', 'WriteProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')             If @Error Then                 SetError(9)                 Return 0             Else                 Return $iv_Address             EndIf         ElseIf $i = 0 Then             DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')             If @Error Then                 SetError(3)                 Return 0             EndIf             $iv_StructData = DllStructGetData($v_Buffer, 1)         Else             $iv_Address = '0x' & hex($iv_StructData + $av_Offset[$i])             DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')             If @Error Then                 SetError(3)                 Return 0             EndIf             $iv_StructData = DllStructGetData($v_Buffer, 1)         EndIf     Next EndFunc #endregion


[EDIT]updated it :)[/EDIT]

Edited by Dellairion, 31 March 2007 - 05:05 PM.






#2 Manadar

Manadar

    Taking a REST.

  • MVPs
  • 10,714 posts

Posted 04 September 2006 - 03:14 PM

Don't stop learning AutoIt because you will learn C++ at school. AutoIt is for some tasks almost infinitely better then any language! Besides, the C courses given at various educational facility's are often poor quality..

#3 Dellairion

Dellairion

    Adventurer

  • Active Members
  • PipPip
  • 111 posts

Posted 05 September 2006 - 04:55 PM

yes it is a very intresting language i will see where the future brings me lol

Edited by Dellairion, 31 March 2007 - 05:07 PM.


#4 EWOlson

EWOlson

    Seeker

  • Active Members
  • 24 posts

Posted 07 September 2006 - 06:38 PM

Here are the memory locations I have found:

7AFC04 Current Player
7AB302 Current Player's Score
7AB31A Player 1's Score
7AB336 Player 2's Score
7AB352 Player 3's Score
7AB36E Player 4's Score

Thanks for the script. It helped me to learn more of AutoIt's language.

I'll try to make a script that incorporates these values.

I agree with Manadar, it's a good idea to continue with AutoIt even if you learn C++ because it is much more complicated to do the same thing in C++ as compared to AutoIt. Sometimes you want/need that complexity, but for other projects you may just want/need to be able to knock it out in short order.

#5 EWOlson

EWOlson

    Seeker

  • Active Members
  • 24 posts

Posted 07 September 2006 - 08:38 PM

OK, I made a script that incorporates the memory locations I mentioned in my last post.

Attached File  Space_Cadet_Trainer.au3   8.09K   262 downloads

Dellairion, where did you get those memory functions? Did you write them yourself?

Also, does anyone know of a tool to help me set up the GUI? Trying to figure out the X and Y values of the controls is a real pain.

Edited by EWOlson, 08 September 2006 - 12:59 AM.


#6 Valuater

Valuater

    www.PayFreeWireless.com

  • MVPs
  • 11,078 posts

Posted 07 September 2006 - 08:43 PM

...
Also, does anyone know of a tool to help me set up the GUI? Trying to figure out the X and Y values of the controls is a real pain.


for GUI creation... there is GUIBuilder and KODA(FormDesigner)

in SciTE press

Tools > GUIBuilder

8)

Posted Image

Clic The Pic!!!


#7 EWOlson

EWOlson

    Seeker

  • Active Members
  • 24 posts

Posted 07 September 2006 - 09:17 PM

for GUI creation... there is GUIBuilder and KODA(FormDesigner)

in SciTE press

Tools > GUIBuilder

8)


Thanks.

I didn't have the latest version of SciTE, so I didn't have those options. Downloaded it, and now I'm off to play. :P

#8 EWOlson

EWOlson

    Seeker

  • Active Members
  • 24 posts

Posted 08 September 2006 - 01:00 AM

Made a small change in the script.

Also, I was using the beta version of SciTE which is why I didn't see those options.

Thanks again.

#9 Dellairion

Dellairion

    Adventurer

  • Active Members
  • PipPip
  • 111 posts

Posted 20 September 2006 - 09:08 AM

hehe a lot of response wel the mem functions i found somewhere on this forum i didnt write them myself*

Edited by Dellairion, 20 September 2006 - 06:13 PM.


#10 Zedna

Zedna

    AutoIt rulez!

  • MVPs
  • 8,315 posts

Posted 20 September 2006 - 07:58 PM

Thanks.

I didn't have the latest version of SciTE, so I didn't have those options. Downloaded it, and now I'm off to play. :)


Forget about very old obsolete GUIBuilder, when there is new fantastic Koda 1.6 :P
http://www.autoitscript.com/fileman/users/lookfar/formdesign.html
http://www.autoitscript.com/forum/index.php?showtopic=32299

#11 EWOlson

EWOlson

    Seeker

  • Active Members
  • 24 posts

Posted 21 September 2006 - 01:07 AM

I've been having some trouble with this working as of late. I may have to take another look at it. Been working on things for other programs as well, including doing AutoIt style stuff in C.

#12 yaziquex

yaziquex

    Seeker

  • Active Members
  • 36 posts

Posted 01 October 2006 - 11:24 PM

Here are the memory locations I have found:

7AFC04 Current Player
7AB302 Current Player's Score
7AB31A Player 1's Score
7AB336 Player 2's Score
7AB352 Player 3's Score
7AB36E Player 4's Score


How do you find those and also the other locations in the first post above?

#13 Dellairion

Dellairion

    Adventurer

  • Active Members
  • PipPip
  • 111 posts

Posted 06 March 2007 - 06:47 PM

How do you find those and also the other locations in the first post above?

You can find those memory adresses with for example Cheat Engine.
Check out
http://cheatengine.org/
or
http://forum.cheatengine.org/viewforum.php?f=7
for tutorials. :whistle:
i hope this can helps you.
grtz




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users