1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Nakroma

Beiträge von Nakroma

  • GDI+ Animationen und AutoIt Multiplayer

    • Nakroma
    • 10. Februar 2013 um 11:44

    Hmm habs mir schon gedacht, wollts aber eigentlich vermeiden^^ Okey danke.
    Noch ein Problem. Bei den beiden Scripten sollte eigentlich jeweils eines der roten Quadrate bewegbar sein und dies auf die andere GUI übertragen. Ich such jetzt schon 2 Stunden nach dem Fehler, finde ihn aber einfach nicht. Die beiden Quadrate bewegen sich jeweils, allerdings überträgt es die Daten nicht, obwohl es eigentlich funktionieren sollte.
    client.au3:

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    OnAutoItExitRegister("_exit")
    _GDIPlus_Startup()

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

    TCPStartup()
    $mainsocket = TCPListen("127.0.0.1", 5000)

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

    HotKeySet("s", "_move")

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

    $gui = GUICreate("Client", 1000, 600)

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

    Global $iWidth = 400, $iHeight = 400
    Global $aPos_Rect[4] = [0, 100, 200, 200]
    Global $aPos_Rect2[4] = [300, 100, 200, 200]

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($gui) ;Grafikobjekt
    $hGraphic2 = _GDIPlus_GraphicsCreateFromHWND($gui)
    $hBrush = _GDIPlus_BrushCreateSolid(0xFFFF0000) ;Pinsel

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

    GUISetOnEvent(-3, "_exit")
    GUIRegisterMsg(0x000F, "WM_PAINT")
    GUISetState(@SW_SHOW)

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

    While 1
    $acceptedSocket = TCPAccept($mainsocket)
    If $acceptedSocket <> -1 Then
    $receivedData = TCPRecv($acceptedSocket, 1024)
    $aPos_Rect[0] = $receivedData
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_INTERNALPAINT)
    TCPCloseSocket($acceptedSocket)
    EndIf
    WEnd

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

    Func _senden()
    $socket = TCPConnect("127.0.0.1", 5001)
    If $socket = -1 Then
    MsgBox(16, "Error", "Die Verbindung zum Server konnte nicht hergestellt werden!")
    EndIf
    $sendedBytes = TCPSend($socket, $aPos_Rect2[0])
    If $sendedBytes = 0 Then
    MsgBox(16, "Error", "Das Paket konnte nicht gesendet werden.")
    EndIf
    TCPCloseSocket($socket)
    EndFunc

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

    Func _exit()
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hGraphic2)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

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

    Func _move()
    $aPos_Rect2[0] += 2
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_INTERNALPAINT)
    EndFunc

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

    Func WM_PAINT()
    _GDIPlus_GraphicsClear($hGraphic,0xFFF0F0F0)
    _GDIPlus_GraphicsClear($hGraphic2,0xFFF0F0F0)
    _GDIPlus_GraphicsFillRect($hGraphic, $aPos_Rect[0], $aPos_Rect[1], $aPos_Rect[2], $aPos_Rect[3], $hBrush)
    _GDIPlus_GraphicsFillRect($hGraphic2, $aPos_Rect2[0], $aPos_Rect2[1], $aPos_Rect2[2], $aPos_Rect2[3], $hBrush)
    EndFunc

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

    TCPShutdown()

    [/autoit]


    server.au3:

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    OnAutoItExitRegister("_exit")
    _GDIPlus_Startup()

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

    TCPStartup()
    $mainsocket = TCPListen("127.0.0.1", 5001)

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

    HotKeySet("w", "_move")

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

    $gui = GUICreate("Server", 1000, 600)

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

    Global $iWidth = 400, $iHeight = 400
    Global $aPos_Rect[4] = [0, 100, 200, 200]
    Global $aPos_Rect2[4] = [300, 100, 200, 200]

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($gui) ;Grafikobjekt
    $hGraphic2 = _GDIPlus_GraphicsCreateFromHWND($gui)
    $hBrush = _GDIPlus_BrushCreateSolid(0xFFFF0000) ;Pinsel

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

    GUISetOnEvent(-3, "_exit")
    GUIRegisterMsg(0x000F, "WM_PAINT")
    GUISetState(@SW_SHOW)

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

    While 1
    $acceptedSocket = TCPAccept($mainsocket)
    If $acceptedSocket <> -1 Then
    $receivedData = TCPRecv($acceptedSocket, 1024)
    $aPos_Rect2[0] = $receivedData
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_INTERNALPAINT)
    TCPCloseSocket($acceptedSocket)
    EndIf
    WEnd

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

    Func _senden()
    $socket = TCPConnect("127.0.0.1", 5000)
    If $socket = -1 Then
    MsgBox(16, "Error", "Die Verbindung zum Server konnte nicht hergestellt werden!")
    EndIf
    $sendedBytes = TCPSend($socket, $aPos_Rect[0])
    If $sendedBytes = 0 Then
    MsgBox(16, "Error", "Das Paket konnte nicht gesendet werden.")
    EndIf
    TCPCloseSocket($socket)
    EndFunc

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

    Func _exit()
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hGraphic2)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

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

    Func _move()
    $aPos_Rect[0] += 2
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_INTERNALPAINT)
    EndFunc

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

    Func WM_PAINT()
    _GDIPlus_GraphicsClear($hGraphic,0xFFF0F0F0)
    _GDIPlus_GraphicsClear($hGraphic2,0xFFF0F0F0)
    _GDIPlus_GraphicsFillRect($hGraphic, $aPos_Rect[0], $aPos_Rect[1], $aPos_Rect[2], $aPos_Rect[3], $hBrush)
    _GDIPlus_GraphicsFillRect($hGraphic2, $aPos_Rect2[0], $aPos_Rect2[1], $aPos_Rect2[2], $aPos_Rect2[3], $hBrush)
    EndFunc

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

    TCPShutdown()

    [/autoit]
  • GDI+ Animationen und AutoIt Multiplayer

    • Nakroma
    • 10. Februar 2013 um 11:04

    Hmm okey, die erste Frage wäre beantwortet.
    Hab aber grade ein kleines Problem mit den TCP Servern.
    Man schickt ja ein Paket so:

    [autoit]

    $socket = TCPConnect("xxxxxxxx", 5001)
    If $socket = -1 Then
    MsgBox(16, "Error", "Die Verbindung zum Server konnte nicht hergestellt werden!")
    EndIf
    $sendedBytes = TCPSend($socket, "Hi")
    If $sendedBytes = 0 Then
    MsgBox(16, "Error", "Das Paket konnte nicht gesendet werden.")
    EndIf

    [/autoit]


    Und empfangen tut man es so:

    [autoit]


    $mainsocket = TCPListen("xxxxxxxx", 5000)
    $acceptedSocket = TCPAccept($mainsocket)
    If $acceptedSocket <> -1 Then
    $receivedData = TCPRecv($acceptedSocket, 1024)
    MsgBox(64, "Client hat was empfangen!", "Server hat eine Nachricht gesendet: " & $receivedData)
    TCPCloseSocket($acceptedSocket)
    EndIf

    [/autoit]


    Das Problem ist, egal was ich sende, also z.B. eine Bewegungsvariable oder eine Verändernung des Mana etc., alles wird in $receivedData gespeichert.
    Gibt es eine Möglichkeit quasi $sendedBytes = TCPSend($socket, $x) Auch mit $x ? TCPRECV(..) auffangen zu lassen, ohne einen neuen Port aufzumachen?
    Mfg

  • GDI+ Animationen und AutoIt Multiplayer

    • Nakroma
    • 9. Februar 2013 um 21:45

    Hey,
    Habe zwei Fragen zu denen ich dringend eine Antwort suche.
    Ich will aktuell ein Game im Stil von Streetfighter oder Tekken erstellen.
    1. Frage, gibt es eine Möglichkeit .gif Animationen mit GDI+ direkt einzubinden, oder muss ich das im AutoIt-Script "animieren"?
    2. Frage, gibt es eine Möglichkeit Multiplayer 1vs1 einzubauen?
    Da hatte ich mir vorgestellt das die Spielerdaten auf einen FTP Server die ganze Zeit hochgeladen werden und vom anderen Spieler ausgelesen werden. Allerdings bin ich mir sicher das dass nicht wirklich effektiv ist oder überhaupt funktioniert, hoffe jemand kann mir da helfen :)
    Mfg

  • Bildschirmauflösung

    • Nakroma
    • 19. Dezember 2012 um 19:58

    Das will ich doch^^ Wie macht man das?

  • Bildschirmauflösung

    • Nakroma
    • 18. Dezember 2012 um 20:42

    Weiß nicht ob ich da wieder einen Denkfehler habe, aber das löst mein Problem nicht^^
    Es soll ja wie bei modernen Spielen das Seitenverhältnis beibehalten, also die Figur nicht verzerrt werden.

  • Bildschirmauflösung

    • Nakroma
    • 18. Dezember 2012 um 20:24

    Allgemein hilft es, ja. Das ganze hat einen Logikfehler. Egal welche Größe du hast, es kommt immer 500x500 raus.

  • Bildschirmauflösung

    • Nakroma
    • 18. Dezember 2012 um 19:39

    Ich meine es ja auch von der Größe her, also das es bei einem kleineren Bildschirm kleiner ist, aber trotzdem im Verhältnis immer noch richtig.
    Naja, danke, ich probiers mal mit dem Schnipsel :)

  • Bildschirmauflösung

    • Nakroma
    • 18. Dezember 2012 um 18:00

    Hey,
    Ich weiß nicht ob ich nur nen Denkfehler habe oder einfach zu blöd bin:
    Moderne Spiele passen sich ja immer auf die Auflösung des Bildschirms an.
    Egal wie ich es drehe und wende, ich kriege es nicht hin das alle Bilder eine passende Größe und Position zum Verhältnis haben.
    Gibts da irgendeinen Code oder ne Formel für?
    Mfg

  • Zeit - Werte verändern

    • Nakroma
    • 30. Juli 2012 um 18:31

    Hey,
    Ich arbeite gerade an einer Art Tamagotchi Imitation.
    Während du offline gehst etc. soll der Hunger auch weiter runtergehen, also hab ich dieses Zeitsystem entwickelt:
    (Nicht wundern, mood = Müdigkeit *hust*)

    Spoiler anzeigen
    [autoit]

    Func time()
    $starthour = IniRead("./ini/login.ini", "lastlogin", "hour", 0)
    $startday = IniRead("./ini/login.ini", "lastlogin", "day", 1)
    $startmonth = INIRead("./ini/login.ini", "lastlogin", "month", 1)
    $startyear = IniRead("./ini/login.ini", "lastlogin", "year", 2012)

    $ydif = @YEAR - $startyear
    If $ydif > 1 Then ($startmonth = 1) AND (starve($ydif-1*8640)) AND (IniWrite("./ini/login.ini", "lastlogin", "year", @YEAR))
    If $ydif = 1 Then ($startmonth = 1) AND (IniWrite("./ini/login.ini", "lastlogin", "year", @YEAR))

    $mdif = @MON - $startmonth
    If $mdif > 1 Then ($startday = 1) AND (starve($mdif-1*720)) AND (IniWrite("./ini/login.ini", "lastlogin", "month", @MON))
    If $mdif = 1 Then ($startday = 1) AND (IniWrite("./ini/login.ini", "lastlogin", "month", @MON))

    $ddif = @MDAY - $startday
    If $ddif > 1 Then ($starthour = 0) AND (starve($ddif-1*24)) AND (IniWrite("./ini/login.ini", "lastlogin", "day", @MDAY))
    If $ddif = 1 Then ($starthour = 1) AND (IniWrite("./ini/login.ini", "lastlogin", "day", @MDAY))

    $hdif = @HOUR - $starthour
    If $hdif > 0 Then (starve($hdif*1)) AND (IniWrite("./ini/login.ini", "lastlogin", "hour", @HOUR))
    EndFunc

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

    Func starve($f)
    $hunger_value -= 2*$f
    $mood_value -= 1*$f
    IniWrite("./ini/stats.ini", "basic", "hunger", $hunger_value)
    IniWrite("./ini/stats.ini", "basic", "mood", $mood_value)
    GuiCtrlDelete($hunger)
    GuIctrlDelete($mood)
    $hunger = GUICtrlCreateLabel($hunger_value, 51, 51, 45, 31)
    GuiCtrlSetFont($hunger, 15, 400, 0, "Minecraft Regular")
    $mood = GUICtrlCreateLabel($mood_value, 51, 131, 45, 31)
    GuiCtrlSetFont($mood, 15, 400, 0, "Minecraft Regular")
    EndFunc

    [/autoit]

    Das Problem dabei ist, wenn nur z.B. nur ein Tag vergeht, dann wird nur die Differenz von 0 zur aktuellen Stunde berechnet, allerdings nicht die Differenz von der letzten Stunde des Tages bis zum Tagesende 24.

    Gibt es irgendwie eine Lösung, oder einfach eine einfacherere Methode für das ganze? Wäre gut sowas zu finden,
    Mfg

  • GDI+ Image mit For rumschießen

    • Nakroma
    • 3. Mai 2012 um 08:04

    $RDW_INTERNALPAINT
    Das zeigt es als nicht deklarierte Variable an.
    Mit #include <WinApi.au3> lässt es sich auch nicht beheben.

    €: Hat sich erledigt(#include WindowsConstants)

  • GDI+ Image mit For rumschießen

    • Nakroma
    • 2. Mai 2012 um 14:36

    Hey,
    Ich programmiere gerade ein MiniRPG um mich in GDI+ zu trainieren. Mein Problem: Der Zauberer soll einen Partikel rumschießen, aber irgendwie klappts nicht ganz.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GdiPlus.au3>;das include
    #include <Misc.au3>

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

    OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen

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

    $x = 0;x und y deklarieren
    $y = 0

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

    $Gui = GUICreate("Beispiel", 600, 400, 100, 100)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup() ;Gdi starten

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

    $figur = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\char\figur.gif")
    $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\stuff\bg.jpg")
    $particle_red = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\particles\red.gif")
    $height = _GDIPlus_ImageGetHeight($figur)
    $width = _GDIPlus_ImageGetWidth($figur)
    $verhaelnis = $height / $width
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(600, 400, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)

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

    While 1
    _GDIPlus_GraphicsDrawImageRect($buffer, $bk, 0, 0, 600, 400)
    _GDIPlus_GraphicsDrawImageRect($buffer, $figur, $x, $y, 40, 40 * $verhaelnis)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    Sleep(30)
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Select
    Case _IsPressed(25) And Not $x <= 0; ------------- geändert -------------
    $x -= 5
    Case _IsPressed(26) And Not $y <= 0; ------------- geändert -------------
    $y -= 5
    Case _IsPressed(27) And $x <= 555; ------------- geändert -------------
    $x += 5
    Case _IsPressed(28) And $y <= 355 ; ------------- geändert -------------
    $y += 5
    Case _IsPressed(20)
    For $i=$x To $x + 50
    _GDIPlus_GraphicsDrawImageRect($buffer, $particle_red, $i, 50, 15, 15)
    Next
    EndSelect
    WEnd

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

    Func _end();die Exit funktion
    _GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
    _GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
    _GDIPlus_ImageDispose($particle_red)
    _GDIPlus_Shutdown();Ressourcen freigeben
    EndFunc ;==>_end

    [/autoit]

    Allerdings kommt nichts wenn ich Space drücke. Weiß jemand wie ich das am besten umsetze?

  • Bildschirm mit GUI sperren

    • Nakroma
    • 17. April 2012 um 13:56

    Funktioniert leider weder mit GuiSetState noch mit GuiCtrlsetState

  • Bildschirm mit GUI sperren

    • Nakroma
    • 16. April 2012 um 19:58

    Dann ist das Start Ding aber immer noch da. Außerdem geht explorer killen schlecht, in meinem Fall

  • Bildschirm mit GUI sperren

    • Nakroma
    • 16. April 2012 um 19:32

    Hey,
    Ich will eine Art Internet Café Programm bauen.
    Dazu will ich eine Bildschirmgroße GUI machen, die sich nicht verschieben lässt. Die Taskleiste unten muss ach überdeckt werden. Externe Programme sollen nicht angezeigt werden, es sei den sie werden von dem Programm selbst gestartet werden(Spiele bzw Firefox oder so)..
    Wie Krieg ich das am besten hin?
    MfG

  • GUI - Bilder vor andere Bilder

    • Nakroma
    • 24. März 2012 um 19:00

    Ich hab die Func terrain_secretiland(wird ja eig island geschrieben lol)verändert:

    [autoit]

    Func terrain_secretiland1()
    Global $location = "secretisland1"
    ;~ $terrain = GUICtrlCreatePic("./terrain/innen_house1.gif", 0, 0, 1000, 804)
    Global $house1 = GUICtrlCreatePic("./terrain/haus1.gif", 600, 10, 152, 272)
    Global $player = GUICtrlCreatePic("./poses/stand_right.gif", $p_x, $p_y, 24, 62, $WS_EX_TOPMOST)
    EndFunc

    [/autoit]

    Funktionieren tuts aber trotzdem nicht

  • GUI - Bilder vor andere Bilder

    • Nakroma
    • 24. März 2012 um 10:05

    Hallo,
    Hier ist erstmal mein Script:

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode", 1)
    #include <./au3/GDIpProgress.au3>

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

    $p_x = 300
    $p_y = 300

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

    $e_x = 800
    $e_y = 300

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

    $action = False
    $stand = "right"
    $enemystate = "live"

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

    HotKeySet("{ESC}", "close")
    HotKeySet("d", "walk_right")
    HotKeySet("a", "walk_left")
    HotKeySet("w", "walk_up")
    HotKeySet("s", "walk_down")
    HotKeySet("{SPACE}", "action")
    ;~ HotKeySet("r", "fireball")

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

    $gui = GUICreate("Wave FightEngine", 1000, 868)
    ;~ GUISetBkColor(0xeedd82)
    GUISetBkColor(0xFFFFFF)
    $player = GUICtrlCreatePic("./poses/stand_right.gif", $p_x, $p_y, 24, 62, $WS_EX_TOPMOST)
    $balken = GUICtrlCreatePic("./img/balken.gif", 0, 804, 1000, 64)
    $w = GUICtrlCreatePic("./img/w.gif", 0, 804, 62, 64)
    $progress1 = _ProgressCreate(70, 804, 200, 32, 0x3cb371)
    $progress2 = _ProgressCreate(70, 836, 200, 32, 0x6495ed, 0x6495ed)
    _ProgressSet($progress1, IniRead("./ini/stats.ini", "allgemein", "leben", 100))
    _ProgressSet($progress2, IniRead("./ini/stats.ini", "allgemein", "mana", 100))
    GUISetState(@SW_SHOW)
    $mana = IniRead("./ini/stats.ini", "allgemein", "mana", 100)
    $life = IniRead("./ini/stats.ini", "allgemein", "leben", 100)
    read()
    terrain_secretiland1()

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

    While 1
    WEnd

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

    Func close()
    Exit
    EndFunc

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

    Func terrain_secretiland1()
    Global $location = "secretisland1"
    ;~ $terrain = GUICtrlCreatePic("./terrain/innen_house1.gif", 0, 0, 1000, 804)
    Global $house1 = GUICtrlCreatePic("./terrain/haus1.gif", 600, 10, 152, 272)
    GUICtrlSetState($house1, $WS_EX_TOPMOST)
    EndFunc
    Func house_secretisland1()
    Global $location = "secretislandhouse1"
    GUICtrlDelete($house1)
    $innen1 = GuictrlcreatePic("./terrain/innen_house1.gif", 0, 0, 1000, 804)
    $p_x = 480
    $p_y = 500
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/stand_up.gif", $p_x, $p_y, 32, 62)
    $npc1 = GUICtrlCreatePic("./char/tutor.gif", 480, 260, 32, 58)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    GUICtrlSetState($npc1, $WS_EX_TOPMOST)
    EndFunc

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

    Func action()
    If $location = "secretisland1" Then
    If ($p_x < 695) AND ($p_x + 24 > 660) AND ($p_y < 10 + 272) Then house_secretisland1()
    EndIf
    EndFunc

    Func walk_right()
    If $action = False Then
    $action = True
    GUICtrlSetState ($Player, $GUI_ONTOP)
    GUICtrlSetImage ($Player, "./poses/walk_right_right.gif")
    For $i = 1 To 5
    $p_x += $i
    check_p_x1()
    GUICtrlSetPos ($Player, $p_x, $p_y, 24, 62)
    Sleep(10)
    Next
    GUICtrlSetImage ($Player, "./poses/walk_right_left.gif")
    For $i = 1 To 5
    $p_x += $i
    check_p_x1()
    GUICtrlSetPos ($Player, $p_x, $p_y, 24, 62)
    Sleep(10)
    Next
    GUICtrlSetImage ($Player, "./poses/stand_right.gif")
    $stand = "right"
    $action = False
    Else
    Return
    EndIf
    EndFunc
    Func check_p_x1()
    If $p_x > 980 Then $p_x = 980
    If $location = "secretisland1" Then
    If ($p_x > 576) AND ($p_y + 62 < 272) AND ($p_x < 752) Then $p_x = 576
    EndIf
    If $location = "secretislandhouse1" Then
    If $p_x > 737 - 24 Then $p_x = 710
    EndIf
    EndFunc

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

    Func walk_left()
    If $action = False Then
    $action = True
    GUICtrlSetState ($Player, $GUI_ONTOP)
    GUICtrlSetImage ($Player, "./poses/walk_left_right.gif")
    For $i = 1 To 5
    $p_x -= $i
    check_p_x2()
    GUICtrlSetPos ($Player, $p_x, $p_y, 24, 62)
    Sleep(10)
    Next
    GUICtrlSetImage ($Player, "./poses/walk_left_left.gif")
    For $i = 1 To 5
    $p_x -= $i
    check_p_x2()
    GUICtrlSetPos ($Player, $p_x, $p_y, 24, 62)
    Sleep(10)
    Next
    GUICtrlSetImage ($Player, "./poses/stand_left.gif")
    $stand = "left"
    $action = False
    Else
    Return
    EndIf
    EndFunc
    Func check_p_x2()
    If $p_x < 0 Then $p_x = 0
    If $location = "secretisland1" Then
    If ($p_x < 752) AND ($p_y + 62 < 272) AND ($p_x > 752) Then $p_x = 752
    EndIf
    If $location = "secretislandhouse1" Then
    If $p_x < 260 Then $p_x = 260
    EndIf
    EndFunc

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

    Func walk_up()
    If $action = False Then
    $action = True
    GUICtrlSetState ($Player, $GUI_ONTOP)
    GUICtrlSetImage ($Player, "./poses/walk_up_right.gif")
    For $i = 1 To 5
    $p_y -= $i
    check_p_y1()
    GUICtrlSetPos ($Player, $p_x, $p_y, 32, 62)
    Sleep(10)
    Next
    GUICtrlSetImage ($Player, "./poses/walk_up_left.gif")
    For $i = 1 To 5
    $p_y -= $i
    check_p_y1()
    GUICtrlSetPos ($Player, $p_x, $p_y, 32, 62)
    Sleep(10)
    Next
    GUICtrlSetImage ($Player, "./poses/stand_up.gif")
    $stand = "up"
    $action = False
    Else
    Return
    EndIf
    EndFunc
    Func check_p_y1()
    If $p_y < 0 Then $p_y = 0
    If $location = "secretisland1" Then
    If ($p_y < 282 - 62) AND ($p_x + 32 > 600) AND ($p_x < 752) Then $p_y = 282 - 62
    EndIf
    If $location = "secretislandhouse1" Then
    If $p_y < 259 Then $p_y = 260
    EndIf
    EndFunc

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

    Func walk_down()
    If $action = False Then
    $action = True
    GUICtrlSetState ($Player, $GUI_ONTOP)
    GUICtrlSetImage ($Player, "./poses/walk_down_right.gif")
    For $i = 1 To 5
    $p_y += $i
    check_p_y2()
    GUICtrlSetPos ($Player, $p_x, $p_y, 32, 62)
    Sleep(10)
    Next
    GUICtrlSetImage ($Player, "./poses/walk_down_left.gif")
    For $i = 1 To 5
    $p_y += $i
    check_p_y2()
    GUICtrlSetPos ($Player, $p_x, $p_y, 32, 62)
    Sleep(10)
    Next
    GUICtrlSetImage ($Player, "./poses/stand_down.gif")
    $stand = "down"
    $action = False
    Else
    Return
    EndIf
    EndFunc
    Func check_p_y2()
    If $p_y > 740 Then $p_y = 740
    If $location = "secretislandhouse1" Then
    If $p_y > 562 - 62 Then $p_y = 500
    EndIf
    EndFunc

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

    Func sword()
    If $action = False Then
    If $stand = "left" Then
    $action = True
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/left_sword1.gif", $p_x, $p_y, 52, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/left_sword2.gif", $p_x, $p_y, 48, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/left_sword3.gif", $p_x, $p_y, 32, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/left_sword4.gif", $p_x - 25, $p_y, 60, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    get_sword($p_x - 25, $p_y, 60, 62, $e_x, $e_y, 24, 62)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/left_sword5.gif", $p_x - 29, $p_y, 64, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    get_sword($p_x - 29, $p_y, 64, 62, $e_x, $e_y, 24, 62)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/left_sword6.gif", $p_x - 23, $p_y, 58, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    get_sword($p_x - 23, $p_y, 58, 62, $e_x, $e_y, 24, 62)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/stand_left.gif", $p_x, $p_y, 24, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    $action = False
    ElseIf $stand = "right" Then
    $action = True
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/right_sword1.gif", $p_x - 27, $p_y, 52, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/right_sword2.gif", $p_x - 21, $p_y, 48, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/right_sword3.gif", $p_x, $p_y, 32, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/right_sword4.gif", $p_x, $p_y, 60, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    get_sword($p_x, $p_y, 60, 62, $e_x, $e_y, 24, 62)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/right_sword5.gif", $p_x, $p_y, 64, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    get_sword($p_x, $p_y, 64, 62, $e_x, $e_y, 24, 62)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/right_sword6.gif", $p_x, $p_y, 58, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    get_sword($p_x, $p_y, 58, 62, $e_x, $e_y, 24, 62)
    Sleep(80)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/stand_right.gif", $p_x, $p_y, 24, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    $action = False
    EndIf
    Else
    Return
    EndIf
    EndFunc

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

    Func fireball()
    If $action = False Then
    If mana_take(10) = False Then Return
    If $stand = "right" Then
    $action = "true"
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/right_fire.gif", $p_x, $p_y, 40, 62)
    Sleep(100)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/stand_right.gif", $p_x, $p_y, 24, 62)
    $s_x = $p_x + 24
    $spell = GUICtrlCreatePic("./poses/attack/fireball_right.gif", $s_x, $p_y, 51, 31)
    For $i = 0 To 20
    Sleep(20)
    $s_x += 10
    GUICtrlSetPos($spell, $s_x, $p_y)
    Next
    GUICtrlDelete($spell)
    ElseIf $stand = "left" Then
    $action = "true"
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/attack/left_fire.gif", $p_x, $p_y, 40, 62)
    Sleep(100)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/stand_left.gif", $p_x, $p_y, 24, 62)
    $s_x = $p_x - 24
    $spell = GUICtrlCreatePic("./poses/attack/fireball_left.gif", $s_x, $p_y, 51, 31)
    For $i = 0 To 20
    Sleep(20)
    $s_x -= 10
    GUICtrlSetPos($spell, $s_x, $p_y)
    Next
    GUICtrlDelete($spell)
    EndIf
    $action = False
    Else
    Return
    EndIf
    EndFunc

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

    ;~ Func zombie()
    ;~ If $enemystate = "live" Then
    ;~ $e_x -= 10
    ;~ If $e_x < 0 Then $e_x = 0
    ;~ GUICtrlDelete($enemy)
    ;~ $enemy = GUICtrlCreatePic("./poses/enemy/zombie/walk_left_right.gif", $e_x, $e_y, 24, 62)
    ;~ $e_x -= 10
    ;~ If $e_x < 0 Then $e_x = 0
    ;~ Sleep(150)
    ;~ GUICtrlDelete($enemy)
    ;~ $enemy = GUICtrlCreatePic("./poses/enemy/zombie/walk_left_left.gif", $e_x, $e_y, 24, 62)
    ;~ Sleep(150)
    ;~ GUICtrlDelete($enemy)
    ;~ $enemy = GUICtrlCreatePic("./poses/enemy/zombie/stand_left.gif", $e_x, $e_y, 24, 62)
    ;~ Sleep(1000)
    ;~ Else
    ;~ Return
    ;~ EndIf
    ;~ EndFunc

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

    Func get_sword($x1, $y1, $b1, $h1, $x2, $y2, $b2, $h2)
    If ($x1 + $b1 > $x2 And $y1 + $h1 > $y2 And $x1 < $x2 + $b2 And $y1 < $y2 + $h2) Then
    If $enemystate = "live" Then
    GUICtrlDelete($enemy)
    $enemy = GUICtrlCreatePic("./poses/enemy/zombie/death1.gif", $e_x, $e_y + 42, 64, 24)
    $enemystate = "death"
    EndIf
    Else
    Return
    EndIf
    EndFunc

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

    Func mana_take($take)
    If $mana - $take < 0 Then
    Return False
    Else
    Return True
    $mana -= $take
    write()
    EndIf
    EndFunc

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

    Func read()
    $mana = IniRead("./ini/stats.ini", "allgemein", "mana", 100)
    $life = IniRead("./ini/stats.ini", "allgemein", "leben", 100)
    EndFunc

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

    Func write()
    IniWrite("./ini/stats.ini", "allgemein", "mana", $mana)
    IniWrite("./ini/stats.ini", "allgemein", "leben", $life)
    _ProgressSet($progress1, IniRead("./ini/stats.ini", "allgemein", "leben", 100))
    _ProgressSet($progress2, IniRead("./ini/stats.ini", "allgemein", "mana", 100))
    EndFunc

    [/autoit]

    Mein Problem: Wenn $player vor $house1 rennt, steht der Player quasi hinter dem Haus, also das Haus ist Vor der Figur.
    Mit GuiSetState($Player, $WS_EX_TOPMOST)geht es auch nicht.
    Hilfe wär nett,
    Mfg

  • Movement ohne Flackern

    • Nakroma
    • 17. März 2012 um 11:17

    Greenhorn so funktioniert das ganz gut, allerdings verschwindet das Männchen wenn ich ein bild als hintergrund setze :/
    Bzw. wenn das Männchen vor ein Haus läuft, ist das Haus im vordergrund, selbst mit Guictrlsetstate(player, WS_EX_TOPMOST)

  • Movement ohne Flackern

    • Nakroma
    • 14. März 2012 um 14:37

    Hey,
    ich arbeite gerade an einem Rollenspiel.
    Hier ist die Bewegung wenn der Typ sich bewegt:

    [autoit]


    Func walk_right()
    If $action = False Then
    $action = True
    $p_x += 10
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/walk_right_right.gif", $p_x, $p_y, 24, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    $p_x += 10
    Sleep(100)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/walk_right_left.gif", $p_x, $p_y, 24, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    Sleep(100)
    GUICtrlDelete($player)
    $player = GUICtrlCreatePic("./poses/stand_right.gif", $p_x, $p_y, 24, 62)
    GUICtrlSetState($player, $WS_EX_TOPMOST)
    $stand = "right"
    $action = False
    Else
    Return
    EndIf
    EndFunc

    [/autoit]

    Das Problem: Es flackert. Vorallem wenn ich einen Hintergrund habe.
    Gibt es eine Lösung dazu? Mit GDI+ komme ich Null klar und mit GuiCtrlSetPos kann ich in diesem Fall nichts anfangen.
    Mfg

  • MsgBox mit eigenem Bild

    • Nakroma
    • 1. März 2012 um 17:40

    Eben das soll es machen. Während die MsgBox/GUI offen ist soll das restliche Script stoppen bis ich OK gedrückt habe.

  • MsgBox mit eigenem Bild

    • Nakroma
    • 1. März 2012 um 17:35

    Stoppt eine Zweite GUI die Erste? Das wäre wichtig.
    Also ob das Script stoppt solange die 2. GUI offen ist.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™