if problem

  • hi wen ich bei meinem autoit script die ifbedingung weggebe geht alles ganz gut aber wen ich die ifbedingung habe und der schuss auf "frei" ist geht es trozdem nicht was kann ich das machen? hoffe ich könnt mir helfen

    Spoiler anzeigen
    [autoit]

    Func _schuss()
    $schuss = "frei"
    If $schuss = "frei" Then
    AdlibUnRegister("_schussrechts")
    AdlibUnRegister("_schusslinks")
    If $richtung = "rechts" Then AdlibRegister("_schussrechts",1)
    If $richtung = "links" Then AdlibRegister("_schusslinks",1)
    AdlibUnRegister("_schuss")
    EndIf
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von manuel6000 (17. März 2011 um 16:40)

  • ich weiß nicht ob das einen Unterschied macht, finde es aber schöner

    [autoit]

    Func _schuss()
    $schuss = "frei"
    If $schuss = "frei" Then
    AdlibUnRegister("_schussrechts")
    AdlibUnRegister("_schusslinks")
    ElseIf $richtung = "rechts" Then
    AdlibRegister("_schussrechts", 1)
    ElseIf $richtung = "links" Then
    AdlibRegister("_schusslinks", 1)
    AdlibUnRegister("_schuss")
    EndIf
    EndFunc ;==>_schuss

    [/autoit]
  • nein macht keinen unterschied aber trozdem danke habe jezt die $schuss überall durch $feuern ersetzt glaube es geht nicht eine $ mit dem gleichen namen wie der func

  • dann weis ich nicht an was es liegt aber seit dem jezt alle befehle feuern heißen gehts

  • Dein erstes if ist total unnötig, weil $schuss selbstverständlich immer "frei" sein wird da du dies ja eine Zeile vorher so bestimmst. Also entweder Zeile 2 entfernen, dann macht deine If Bedingung eventuell Sinn oder Zeile 3 und 9 raus, da die Bedingung ohnehin immer True sein wird. Btw. vielleicht auch mal einen Blick in die Forenregeln werfen. Deinen Variablen und Funktionsnamen nach vermute ich mal einen Spiele Bot, was hier nicht erwünscht ist. Ein vollständiges Script hast du ja vermutlich aus gutem Grund nicht gepostet...

  • Deinen Variablen und Funktionsnamen nach vermute ich mal einen Spiele Bot, was hier nicht erwünscht ist. Ein vollständiges Script hast du ja vermutlich aus gutem Grund nicht gepostet...


    misterspeed: da wird beim supporten wohl davon asgegangen dass es sich um ein eigenes Spiel handelt, ist ja auch schon gelöst und da man das Skriptschnipsel nicht als Vorlage für einen BOT gebrauchen kann, wird es auch nicht deaktiviert oder gelöscht.

    @manuel6000: poste bei solchen Anfragen in Zukunft den kompletten Skriptcode deines Spieles,

    mfg autoBert

  • Dein erstes if ist total unnötig, weil $schuss selbstverständlich immer "frei" sein wird da du dies ja eine Zeile vorher so bestimmst. Also entweder Zeile 2 entfernen, dann macht deine If Bedingung eventuell Sinn oder Zeile 3 und 9 raus, da die Bedingung ohnehin immer True sein wird. Btw. vielleicht auch mal einen Blick in die Forenregeln werfen. Deinen Variablen und Funktionsnamen nach vermute ich mal einen Spiele Bot, was hier nicht erwünscht ist. Ein vollständiges Script hast du ja vermutlich aus gutem Grund nicht gepostet...

    die erste if bedingung habe ich nur gemacht weil ich euch zeigen wollte das da was nicht stimmt und der ganze scipt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>

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

    $richtung = "rechts"
    $maus = 1
    $feuer = "frei"
    $dsim = 1

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

    If $dsim = 0 Then
    Sleep(5000)
    Sleep(1000)
    MouseMove(211, 686)
    Sleep(100)
    MouseDown("left")
    Sleep(100)
    MouseMove(751, 686)
    MouseUp("left")
    EndIf

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

    If $dsim = 1 Then
    Opt("GUIOnEventMode", 1)

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

    $xs = -100
    $ys = -100
    $iX = 0
    $iY = 570
    $vX = 2
    $vY = 1
    $Jump = 0
    $ddd = 0
    $iSleep = 10

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

    $hWnd = GUICreate("Game", 400, 400)
    GUISetState()

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

    _GDIPlus_Startup()
    $kreis = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\Dekaron50.jpg")
    $schuss = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\mmmschuss.png")
    $weiss = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\welt 1.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    While Sleep($iSleep)
    If _IsPressed(25) Then
    If Not $ix = 0 Then
    $Ix -= 5
    $richtung = "links"
    EndIf
    EndIf
    If _IsPressed(26) Then
    If $jump = 0 Then AdlibRegister("_jump",1)
    EndIf
    If _IsPressed(27) Then
    If Not( $ix = 580) Then
    $Ix += 5
    $richtung = "rechts"
    EndIf
    EndIf
    If _IsPressed(20) Then
    If $xs <= -600 Or $xs >= 600 Then $feuer = "frei"
    If $feuer = "frei" Then
    $feuer = "besetzt"
    $xs = $ix
    $ys = $iy +5
    AdlibRegister("_schuss",1)
    EndIf
    EndIf
    If $maus = 1 Then
    If _IsPressed(1) Then MsgBox(0,"",$Ix & "," & $Iy)
    EndIf
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $weiss, 0, 0, 640, 600)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $schuss, $xs, $ys, 3, 6)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $kreis, $iX, $iY, 20, 20)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 400, 400)
    WEnd
    EndIf

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

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

    Func _jump()
    AdlibUnRegister("_Jumpdown2")
    $jump = 1
    $collisionmove = $ix
    $collosion1 = $iy + 20
    If Not($collosion1 = 570 Or $collosion1 = 490) Or ($collisionmove >= 574 And $collisionmove <=580 And Not($collosion1 = 490)) Or ($collisionmove >= 0 And $collisionmove <=40 And Not($collosion1 = 570)) Then
    $ddd = $ddd + 2.5
    If $ddd <= 100 Then
    $Iy -= 2.5
    Else
    AdlibUnRegister("_Jump")
    AdlibRegister("_jumpdown",1)
    EndIf
    Else
    AdlibUnRegister("_Jump")
    AdlibRegister("_jumpdown",1)
    EndIf
    EndFunc

    Func _jumpdown()
    $collosion = $iy
    If Not( $collosion= 570 Or $collosion = 525 Or $iy = 455 Or $collosion = 540) Then
    $Iy += 2.5
    Else
    AdlibRegister("_jumpdown2",1)
    $ddd = 0
    AdlibUnRegister("_jumpdown")

    EndIf
    EndFunc

    Func _schuss2()
    If $richtung = "rechts" Then $xs = $xs +5
    If $richtung = "links" Then $xs = $xs -5
    EndFunc

    Func _schuss()
    AdlibUnRegister("_schussrechts")
    AdlibUnRegister("_schusslinks")
    If $richtung = "rechts" Then AdlibRegister("_schussrechts",1)
    If $richtung = "links" Then AdlibRegister("_schusslinks",1)
    AdlibUnRegister("_schuss")
    EndFunc

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

    Func _schussrechts()
    $xs = $xs +5
    EndFunc

    Func _schusslinks()
    $xs = $xs -5
    EndFunc

    Func _jumpdown2()
    $collisionmove = $ix
    $collosion = $iy
    If Not( $collosion= 570 Or ($collosion = 525 Or $collosion =455 And Not($collisionmove >= 574 And $collisionmove <=580 And $collisionmove >=550 And $collisionmove <= 600 And $collosion = 525))) Or ($collosion = 455 And( $collisionmove >=0 And $collisionmove <=40)) Then
    $Iy += 2.5
    Else
    $jump = 0
    EndIf
    EndFunc

    [/autoit]
  • Erstmal sorry für meine falsche Vermutung. Trotzdem wäre es natürlich sinnvoll gewesen das ganze Script gleich zu posten wie du es ja nun hast. Nun kann man auch sehen warum du zuvor Probleme mit der Variable $schuss hattest.
    Du hattest diese Variable wohl doppelt verwendet:

    [autoit]


    $schuss = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\mmmschuss.png")

    [/autoit]

    An dieser Stelle verwendest du $schuss für das Bild, später für den Status ob gefeuert werden darf oder nicht. Durchs erneute verwenden der Variable verhinderst du dann Operationen mit dem Bild, da die ctrlid/bildhandle nicht mehr in $schuss gespeichert ist. Sowas kann man natürlich nicht erkennen wenn man nur eine einzige Funktion zu Gesicht bekommt. ;)

  • hab jezt im spiel so einen lift eingebaut aber die figur fährt da nicht mit rauf

    Spoiler anzeigen
    [autoit]

    Func _zug()
    $collisionmove = $ix
    $collosion11 = $iy + 20
    If $zugy = 450 Then $zugrauf = "hinauf"
    If $zugy = 300 Then $zugrauf = "hinunter"
    If $zugrauf = "hinauf" Then
    If $collisionmove >=390 And $collisionmove <=470 And $collosion11 = $zugy Then
    $iy = $iy - 1
    EndIf
    $zugy = $zugy -1
    Else
    If $collisionmove >=390 And $collisionmove <=470 And $collosion11 = $zugy Then $iy = $iy +2
    $zugy = $zugy +1
    EndIf
    EndFunc

    [/autoit]

    und hier der ganze script

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>

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

    $zugrauf = "hinauf"
    $richtung = "rechts"
    $maus = 0
    $feuer = "frei"
    $dsim = 1

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

    If $dsim = 0 Then
    Sleep(5000)
    Sleep(1000)
    MouseMove(211, 686)
    Sleep(100)
    MouseDown("left")
    Sleep(100)
    MouseMove(751, 686)
    MouseUp("left")
    EndIf
    AdlibRegister("_zug",1)
    If $dsim = 1 Then
    Opt("GUIOnEventMode", 1)
    $zugx = 390
    $zugy = 450
    $xs = -100
    $ys = -100
    $iX = 0
    $iY = 570
    $vX = 2
    $vY = 1
    $Jump = 0
    $ddd = 0
    $iSleep = 10
    $d = 0
    $dx = 0
    $zugy2 = 0
    $zugx2 = 0
    $asd = 240
    $asd2 = 200
    $hWnd = GUICreate("Game", 400, 400)
    GUISetState()
    $iy = 0
    $asd3 = 0
    $asd4 = 0
    _GDIPlus_Startup()
    $kreis = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\Dekaron50.jpg")
    $ttt = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\gamename.png")
    $schuss = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\mmmschuss.png")
    $weiss = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\welt 1.png")
    $zug = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\mmmzug1.png")
    $kreis2 = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\Dekaron50.jpg")
    $schuss2 = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\mmmschuss.png")
    $weiss2 = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\welt 1.png")
    $zug2 = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Andrea\Desktop\-- ----\mmmzug1.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    For $dsasd = 0 To 320
    If Not($iY >= 570) Then $iy = $iy +1.9
    If Not ($d = 640) Then $d = $d +2
    If Not ($dx = 600) Then $dx = $dx +2
    If Not ($zugy2 = 450) And $d >= 100 Then $zugy2 = $zugy2 + 2
    If Not ($zugx2 = 390) And $d >= 100 Then $zugx2 = $zugx2 + 1.5
    If Not ($asd = 400) And $d >= 400 Then
    $asd = $asd -0.5
    $asd2 = $asd2 -0.5
    $asd3 = $asd3 +2.5
    $asd4 = $asd4 +2.5
    EndIf
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $weiss2, 0, 0, $d, $dx)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $ttt, $asd, $asd2, $asd3, $asd4)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $schuss2, $xs, $ys, 3, 6)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $zug2, $zugx2, $zugy2, 100, 10)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $kreis2, $iX, $iY, 20, 20)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 400, 400)
    Next
    $d = -1000
    $dx = -1000
    $zugy2 = -1000
    $zugx2 = -1000
    $iX = 0
    $iY = 570
    $zugy = 450

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

    While Sleep($iSleep)
    If _IsPressed(25) Then
    If Not $ix = 0 Then
    $Ix -= 5
    $richtung = "links"
    EndIf
    EndIf
    If _IsPressed(26) Then
    If $jump = 0 Then AdlibRegister("_jump",1)
    EndIf
    If _IsPressed(27) Then
    If Not( $ix = 580) Then
    $Ix += 5
    $richtung = "rechts"
    EndIf
    EndIf
    If _IsPressed(20) Then
    If $xs <= -600 Or $xs >= 600 Then $feuer = "frei"
    If $feuer = "frei" Then
    $feuer = "besetzt"
    $xs = $ix
    $ys = $iy +5
    AdlibRegister("_schuss",1)
    EndIf
    EndIf
    If $maus = 1 Then
    If _IsPressed(1) Then MsgBox(0,"",$Ix & "," & $Iy)
    EndIf
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $weiss, 0, 0, 640, 600)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $schuss, $xs, $ys, 3, 6)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $zug, $zugx, $zugy, 100, 10)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $kreis, $iX, $iY, 20, 20)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 400, 400)
    WEnd
    EndIf

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

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

    Func _jump()
    AdlibUnRegister("_Jumpdown2")
    $jump = 1
    $collisionmove = $ix
    $collosion1 = $iy + 20
    If Not($collosion1 = 570 Or $collosion1 = 490) Or ($collisionmove >= 574 And $collisionmove <=580 And Not($collosion1 = 490)) Or ($collisionmove >= 0 And $collisionmove <=40 And Not($collosion1 = 570)) Then
    $ddd = $ddd + 2.5
    If $ddd <= 100 Then
    $Iy -= 2.5
    Else
    AdlibUnRegister("_Jump")
    AdlibRegister("_jumpdown",1)
    EndIf
    Else
    AdlibUnRegister("_Jump")
    AdlibRegister("_jumpdown",1)
    EndIf
    EndFunc

    Func _jumpdown()
    $collosion = $iy
    If Not( $collosion= 570 Or $collosion = 525 Or $iy = 455 Or $collosion = 540 Or $collosion = $zugy ) Then
    $Iy += 2.5
    Else
    AdlibRegister("_jumpdown2",1)
    $ddd = 0
    AdlibUnRegister("_jumpdown")

    EndIf
    EndFunc

    Func _schuss2()
    If $richtung = "rechts" Then $xs = $xs +5
    If $richtung = "links" Then $xs = $xs -5
    EndFunc

    Func _schuss()
    AdlibUnRegister("_schussrechts")
    AdlibUnRegister("_schusslinks")
    If $richtung = "rechts" Then AdlibRegister("_schussrechts",1)
    If $richtung = "links" Then AdlibRegister("_schusslinks",1)
    AdlibUnRegister("_schuss")
    EndFunc

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

    Func _schussrechts()
    $xs = $xs +5
    EndFunc

    Func _schusslinks()
    $xs = $xs -5
    EndFunc

    Func _jumpdown2()
    $collisionmove = $ix
    $collosion = $iy
    ; And Not($collosion = 400) And Not($collisionmove >=390 And $collisionmove <=470)
    If Not( $collosion= 570 Or ($collosion = 525 Or $collosion =455 Or $collosion = 400 And Not($collisionmove >= 574 And $collisionmove <=580 And $collisionmove >=550 And $collisionmove <= 600 And $collosion = 525 Or Not($collisionmove >=390 And $collisionmove <=470) And $collosion = $zugy))) Or ($collosion = 455 And( $collisionmove >=0 And $collisionmove <=40)) Then
    $Iy += 2.5
    Else
    $jump = 0
    EndIf
    EndFunc

    Func _zug()
    $collisionmove = $ix
    $collosion11 = $iy + 20
    If $zugy = 450 Then $zugrauf = "hinauf"
    If $zugy = 300 Then $zugrauf = "hinunter"
    If $zugrauf = "hinauf" Then
    If $collisionmove >=390 And $collisionmove <=470 And $collosion11 = $zugy Then
    $iy = $iy - 1
    EndIf
    $zugy = $zugy -1
    Else
    If $collisionmove >=390 And $collisionmove <=470 And $collosion11 = $zugy Then $iy = $iy -1
    $zugy = $zugy +1
    EndIf
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von manuel6000 (18. März 2011 um 19:04)