2 Skripts verbinden

  • Hey,

    Ich möchte gerne 2 Skripts miteinander verbinden, die am besten auch Kommunizieren können. Das erste Skript ist ein login, das auch überprüft ob daten vorhanden sind und soo... Das zweite Skript ist das spiel, an ihm soll der ID weitergegeben werden, damit man eine "Speicher" funktion hat.

    Beispiel: Ich habe auf dem Desktop den Login. Starte ihn, & logge mich ein. Wenn der Login erfolgreich war, sollen ein paar parameter übergeben werden ($ID & $NR das sind jeweils der Speicherort & der Name womit eingeloggt wird) danach soll (wenns geht) das gesamte Login Skript geschlossen werden. Er soll einfach mit dem Spiel fortfahren.

    Ich weiß nicht obs von nöten ist, aber ich poste dazu mal beide (fürs erste nur 2) Skripts die verbunden werden sollen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <string.au3>
    #include <Date.au3>

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

    Opt("GUIOnEventMode", 1)

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Login", 300, 134)
    $LogID = GUICtrlCreateInput("", 24, 24, 121, 21)
    $LogNR = GUICtrlCreateInput("", 24, 56, 121, 21)
    $Label1 = GUICtrlCreateLabel("Name", 168, 24, 32, 17)
    $bLogin = GUICtrlCreateButton("Login", 24, 88, 75, 25, 0)
    GUICtrlSetOnEvent(-1,"_Login")
    $bPw = GUICtrlCreateButton("Pw?", 112, 88, 43, 25, 0)
    GUICtrlSetOnEvent(-1,"_Passwort_Vergessen")
    $bNeuAcc = GUICtrlCreateButton("Neu Registrieren", 160, 88, 115, 25, 0)
    GUICtrlSetOnEvent(-1,"_NeuAccGUI")
    $Label2 = GUICtrlCreateLabel("Registrierungsnummer", 168, 56, 108, 17)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Neu", 199, 349)
    $iName = GUICtrlCreateInput("", 24, 48, 153, 21)
    $iAntwort = GUICtrlCreateInput("", 24, 128, 153, 21)
    $iNummer = GUICtrlCreateInput("", 24, 184, 121, 21)
    $iNachname = GUICtrlCreateInput("", 24, 248, 121, 21)
    $Label1 = GUICtrlCreateLabel("Name für Highscore/Login", 24, 24, 129, 17)
    $Label2 = GUICtrlCreateLabel("Geheimwort, wenn du dein"& @CRLF &"PW vergessen solltest", 24, 80, 238, 41)
    $Button1 = GUICtrlCreateButton("Bestätigen", 24, 280, 155, 65, 0)
    GUICtrlSetOnEvent(-1,"_NeuAccBestaetigen")
    $Label3 = GUICtrlCreateLabel("Rechnernummer", 24, 160, 82, 17)
    $Label4 = GUICtrlCreateLabel("Nachname, zur Identifikation", 24, 216, 139, 17)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close2")
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

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

    #Region ### START Koda GUI section ### Form=
    $Form3 = GUICreate("Passwort Vergessen", 246, 142)
    $PWVergessenName = GUICtrlCreateInput("", 24, 16, 121, 21)
    $Label15 = GUICtrlCreateLabel("Name", 160, 16, 32, 17)
    $PWVergessenWort = GUICtrlCreateInput("", 24, 48, 121, 21)
    $Label25 = GUICtrlCreateLabel("Geheimwort", 160, 48, 60, 17)
    $GETPW = GUICtrlCreateButton("Passwortanfrage", 24, 80, 195, 41, 0)
    GUICtrlSetOnEvent(-1,"_Get_PW")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close3")
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(50)
    WEnd

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

    Func _Login()
    Local $ID,$PW, $NR, $i, $g , $maxConfigs = 1, $maxCheck = False
    $ID = GUICtrlRead($LogID)
    $NR = GUICtrlRead($LogNR)
    GUICtrlSetData($LogID,"")
    GUICtrlSetData($LogNR,"")
    $PW = InputBox("Passwort","Gib hier dein Passwort ein","","*")

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

    While $maxCheck = False
    if FileExists("C:\Users\Nico\Desktop\Schule\" & $NR & "\config" & $maxConfigs & ".ini") Then
    $maxConfigs += 1
    Else
    $maxCheck = True
    $maxConfigs -= 1
    If $maxConfigs = 0 Then $maxConfigs = 1
    EndIf
    WEnd
    MsgBox(0,"",$maxConfigs)
    For $g = 1 To $maxConfigs
    $Name = IniRead("C:\Users\Nico\Desktop\Schule\" & $NR & "\config" & $g & ".ini","Name","Name",0)
    $Passwort = IniRead("C:\Users\Nico\Desktop\Schule\" & $NR & "\config" & $g & ".ini","Passwort","Passwort",0)
    If $Name = $ID and $Passwort = $PW Then
    MsgBox(64,"Login","Login Erfolgt...",2000)
    ; #include 'Defender.au3'
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func _Get_PW()
    Local $PWN, $PWW, $i, $j, $h, $maxConfigs = 1,$maxCheck = False,$PassWort,$RechnerNr,$LoginPW
    $PWN = GUICtrlRead($PWVergessenName)
    $PWW = GUICtrlRead($PWVergessenWort)
    GUICtrlSetData($PWVergessenName,"")
    GUICtrlSetData($PWVergessenWort,"")

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

    For $i = 1 To 10
    For $j = 1 To 10
    if FileExists("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $maxConfigs & ".ini") Then
    $maxConfigs += 1
    Else
    $maxCheck = True
    $maxConfigs -= 1
    If $maxConfigs = 0 Then $maxConfigs = 1
    EndIf
    Next
    For $g = 1 To $maxConfigs
    $Name = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Name","Name",0)
    $PassWort = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Wort","Wort",0)
    If $Name = $PWN and $PassWort = $PWW Then
    $RechnerNr = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Rechner","Nummer",0)
    $LoginPW = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Passwort","Passwort",0)
    MsgBox(64,"Daten","Name: "& $Name & @CRLF & "Passwort: "& $LoginPW & @CRLF & "Rechner Nr.: " & $RechnerNr)
    _Close3()
    ExitLoop
    EndIf
    Next
    Next
    EndFunc

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

    Func _Passwort_Vergessen()
    GUISetState(@SW_SHOW,$Form3)
    GUISetState(@SW_HIDE,$Form1)
    EndFunc

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

    Func _NeuAccBestaetigen()
    Global $sName = GUICtrlRead($iName)
    Global $sAntwort = GUICtrlRead($iAntwort)
    Global $intNummer = Int(GUICtrlRead($iNummer))
    Global $sNachname = GUICtrlRead($iNachname)
    Local $check = False
    Local $k = 0
    Local $n = 1
    Local $pw
    Global $newAcc = True

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

    _AccVergleich()

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

    If $newAcc = True Then
    $pw = InputBox("Passwort","Bitte gib dein Passwort ein, es wird keine 2 abfrage kommen!","","*")
    While $check = False
    $k += 1
    if not FileExists("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini") Then
    $check = True
    EndIf
    WEnd
    IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Name","Name",$sName)
    IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Name","Nachname",$sNachname)
    IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Rechner","Nummer",$intNummer)
    IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Wort","Wort",$sAntwort)
    IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Passwort","Passwort",$pw)
    $k = 0
    If Not @error Then
    MsgBox(64,"Erfolg","Account erfolgreich angelegt!")
    GUICtrlSetData($iName,"")
    GUICtrlSetData($iAntwort,"")
    GUICtrlSetData($iNummer,"")
    GUICtrlSetData($iNachname,"")
    _Close2()
    Else
    MsgBox(64,"Error","Es gab folgende Error meldung: " & @error)
    EndIf
    EndIf
    $newAcc = False
    EndFunc

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

    Func _AccVergleich()
    Local $i, $g ,$Name, $Nachname, $j
    Local $maxConfigs = 1
    Local $maxCheck = False

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

    For $i = 1 To 10
    For $j = 1 To 10
    if FileExists("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $maxConfigs & ".ini") Then
    $maxConfigs += 1
    Else
    $maxCheck = True
    $maxConfigs -= 1
    If $maxConfigs = 0 Then $maxConfigs = 1
    EndIf
    Next
    For $g = 1 To $maxConfigs
    $Name = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Name","Name",0)
    $Nachname = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Name","Nachname",0)
    If $Name = $sName and $Nachname = $sNachname Then
    MsgBox(64,"Error","Du hast bereits einen Account")
    $newAcc = False
    ExitLoop
    EndIf
    Next
    Next
    EndFunc

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

    Func _Close3()
    GUISetState(@SW_SHOW, $Form1)
    GUISetState(@SW_HIDE, $Form3)
    EndFunc

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

    Func _NeuAccGUI()
    GUISetState(@SW_SHOW, $Form2)
    GUISetState(@SW_HIDE, $Form1)
    EndFunc

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

    Func _Close2()
    GUISetState(@SW_SHOW, $Form1)
    GUISetState(@SW_HIDE, $Form2)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    Ich weiß, der loginner ist nicht sauber geskript, man könnte ihn bestimmt verbessern. Aber viele sachen müssen sogar soo umstendlich sein, da es eine Speicher funktion für unsere Schule werden soll.

    hier das Spiele Skript(ein dank an Marsi& developer):

    [autoit]

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

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

    Opt('GUICloseOnESC', 0) ; Beenden mit Esc ?
    Opt('GUIOnEventMode', 1) ; Event Mode
    Opt('MustDeclareVars', 1) ; Variablen müssen deklariert werden. (sauberes Programmieren nötig)
    Opt('MouseCoordMode', 2) ; Mauskoordinaten relativ zum Fenster

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

    Global Const $iBreite = 800, $iHoehe = 400, $iReihen = 10, $iDiagonale = Sqrt($iBreite^2+$iHoehe^2)

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

    ; Bei 10 Reihen ist oben und unten jeweils eine halbe Reihe Luft. Daher sind nur 9 verfügbar. (Reihe 1 bis 9)

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

    Global $hGUI, $hGFX, $hBMP, $hBUF, $hBrush[8], $hPen[1], $aPos[2]

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

    Global $Gegner[1][4]
    ; 0 = X - Koordinate
    ; 1 = Y - Koordinate
    ; 2 = Farbe (eine Zahl für die Brush)
    ; 4 = Zustand (True=Lebend oder False=Tod). Ist der Gegner Tod wird er nicht mehr gezeichnet und nach maximal einem Frame gelöscht !

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

    Global $Pfeile[1][6]
    ;~ für erste dimension wert 1, da noch kein pfeil existiert und 1 der minimalwert ist
    ;~ [x][0] = X Koordinate
    ;~ [x][1] = Y Koordinate
    ;~ [x][2] = Vx ( Vektor in X Richtung )
    ;~ [x][3] = Vy ( Vektor in Y Richtung )
    ;~ [x][4] = Pfeilgeschwindigkeit in Px/Frame
    ;~ [x][5] = Anzahl zurückgelegte Pixel auf dem Spielfeld z.B. wird er nach 1000 Pixeln nicht mehr auf dem Feld sein. Das Spaart die Kollisionskontrolle mit dem Pfeil und dem Spielfeld !

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

    _GDIPlus_Startup()

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

    $hGUI = GUICreate("Defender", $iBreite, $iHoehe)
    $hGFX = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBMP = _GDIPlus_BitmapCreateFromGraphics($iBreite, $iHoehe, $hGFX)
    $hBUF = _GDIPlus_ImageGetGraphicsContext($hBMP)

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

    $hBrush[0] = _GDIPlus_BrushCreateSolid(0xFF00592A) ; Weiss
    $hBrush[1] = _GDIPlus_BrushCreateSolid(0xFF91AAB9) ; Armbrust
    $hBrush[2] = _GDIPlus_BrushCreateSolid(0xFF630304) ; Gegner 1
    $hBrush[3] = _GDIPlus_BrushCreateSolid(0xFF2E5B92) ; Gegner 2
    $hBrush[4] = _GDIPlus_BrushCreateSolid(0xFFFDD00A) ; Gegner 3
    $hBrush[5] = _GDIPlus_BrushCreateSolid(0xFF65583A) ; Gegner 4
    $hBrush[6] = _GDIPlus_BrushCreateSolid(0xFF000000) ; Gegner 5
    $hBrush[7] = _GDIPlus_BrushCreateSolid(0xFF540072) ; Schuss der Armbrust

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

    $hPen[0] = _GDIPlus_PenCreate(0xFF91AAB9, 4)

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

    _GDIPlus_GraphicsSetSmoothingMode($hBUF, 4)

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

    GUISetOnEvent(-3, '___Exit', $hGUI) ; Exit
    OnAutoItExitRegister('_Freigeben') ; Beim Beenden auch alle Ressourcen freigeben.
    GUIRegisterMsg(0xF, 'WM_PAINT') ; Neu Zeichnen, wenn Windows das gerne so hätte...
    GUISetState(@SW_SHOW)

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

    _AddPfeil() ; Den Timer starten, damit der erste Schuss früher geht.

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

    While Sleep(20) ; Bessere Variante, als das Sleep unten hin zu schreiben. Ein Sleep kann nur 10, 20, 30 usw sein. Alle anderen Werte funktionieren nicht richtig... (Eigentheit von AutoIt)

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

    _GDIPlus_GraphicsClear($hBUF, 0xFF00592A)

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

    $aPos = MouseGetPos() ; Mausposition bei jedem Schleifendurchlauf nur ein Mal holen reicht aus.

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

    _AddPfeil() ; Man drückt die Linke Maustaste ? --> Feuer ! If _IsPressed('01') Then

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

    _ZeichnePfeile()
    _ZeichneGegner()
    _ZeichneArmbrust()

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

    If UBound($Gegner) < 15 And Not Random(0, 30, 1) Then _AddGegner(Random(1, 9, 1))

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

    ; ToolTip('Anzahl Gegner: ' & UBound($Gegner) - 1 & @CRLF & 'Anzahl Pfeile: ' & UBound($Pfeile) - 1)

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

    WM_PAINT()

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

    WEnd

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

    Func _ZeichneArmbrust()

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

    _GDIPlus_GraphicsFillEllipse($hBUF, -25, $iHoehe / 2 - 25, 50, 50, $hBrush[1])

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

    EndFunc ;==>_ZeichneArmbrust

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

    Func _ZeichneGegner()

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

    Local $iUbound = UBound($Gegner) ; So viele gegner gibt es !
    Local $aKlon[$iUbound] ; Klon Array.

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

    For $i = 1 To $iUbound - 1 Step 1 ; Im 0ten Array steht nix. Daher wird bei 1 begonnen.

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

    If $Gegner[$i][3] = False Then
    $aKlon[$i] = 1 ; Toten Gegner löschen
    ContinueLoop ; Wenn der Gegner Tod ist wird sein Schleifendurchlauf übersprungen.
    EndIf

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

    $Gegner[$i][0] -= 2 ; Bewegen in X Richtung

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

    If $Gegner[$i][0] <= - 50 Then $aKlon[$i] = 1 ; Wenn der Gegner hinten ist, wird er gelöscht.
    ; Später kommt hier hin, dass der Gegner von einem Pfeil getroffen wird oder sowas.
    ; Verschoben. Die Abfrage kommt zu den Pfeilen. Das ist aber reine Geschmackssache...

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

    _GDIPlus_GraphicsFillEllipse($hBUF, $Gegner[$i][0]-25, $Gegner[$i][1]-25, 50, 50, $hBrush[$Gegner[$i][2]])

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

    Next

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

    _DelGegner($aKlon)

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

    EndFunc

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

    Func _ZeichnePfeile()

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

    Local $iUbound = UBound($Pfeile) ; so viele Pfeile gib es
    Local $iUbound_Gegner ; und so viele Gegner. Muss hier noch nicht bestimmt werden.
    Local $aKlon[$iUbound] ; Klon

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

    For $i = 1 To $iUbound - 1 Step 1

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

    $Pfeile[$i][0] += $Pfeile[$i][2] * $Pfeile[$i][4]
    $Pfeile[$i][1] += $Pfeile[$i][3] * $Pfeile[$i][4]

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

    $Pfeile[$i][5] += $Pfeile[$i][4] ; Zurückgelegte Strecke in Pixeln.

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

    If $Pfeile[$i][5] > $iDiagonale Then ; Der Pfeil ist weiter geflogen als die Diagonale des Fensters --> Er ist Weg...
    $aKlon[$i] = 1
    ContinueLoop
    EndIf

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

    $iUbound_Gegner = UBound($Gegner)

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

    For $o = 1 To $iUbound_Gegner - 1 Step 1
    If _Kollision_Kreis_Kreis($Gegner[$o][0], $Gegner[$o][1], $Pfeile[$i][0], $Pfeile[$i][1], 50,10) Then
    $aKlon[$i] = 1 ; Pfeil Löschen
    $Gegner[$o][3] = False ; Gegner lebt nicht mehr...
    ExitLoop ; Der Pfeil ist weg --> Er kann auch keinen weiteren Gegner treffen --> Der "Gegner Treff Loop" kann beendet werden.
    ; Entfernt man diese Zeile können zwei dicht zusammenstehende Gegner von einem einzigen Pfeil getroffen werden.
    EndIf
    Next

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

    If $aKlon[$i] = 0 Then ; Nur zeichnen, wenn der Pfeil noch keinen Gegner getroffen hat.
    _GDIPlus_GraphicsFillEllipse($hBUF, $Pfeile[$i][0]-5, $Pfeile[$i][1] - 5, 10, 10, $hBrush[7])
    EndIf

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

    Next

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

    _DelPfeil($aKlon)

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

    EndFunc ;==>_ZeichnePfeil

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

    Func _AddGegner($Reihe)

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

    Local $iUbound = UBound($Gegner) ; Wie viele Gegner gibt es ?
    ReDim $Gegner[$iUbound + 1][UBound($Gegner, 2)] ; Jetzt gibt es einen Mehr !

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

    $Gegner[$iUbound][0] = $iBreite + 50 ; x
    $Gegner[$iUbound][1] = Int(($iHoehe / $iReihen) * $Reihe) ; y
    $Gegner[$iUbound][2] = Random(2, 6, 1) ; Farbe
    $Gegner[$iUbound][3] = True ; Zu Beginn lebt der Gegner logischerweise.

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

    EndFunc ;==>_AddGegner

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

    Func _AddPfeil()

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

    Local Static $iTimer = TimerInit() ; Static Variablen behalten ihren Wert. d.h. Der Timer braucht nicht Global zu sein.

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

    If TimerDiff($iTimer) > 750 Then ; 750ms für den Anfang sind OK. Später kann man den Wert noch skillen um schneller zu schießen.
    $iTimer = TimerInit()

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

    Local $iUbound = UBound($Pfeile) ; Hinter den Timer. Dann wird das nur Ausgeführt, wenn es sein muss. -> Programm läuft ein gaaaaanz kleines etwas schneller, aber Kleinvieh macht auch Mist :)
    ReDim $Pfeile[$iUbound + 1][UBound($Pfeile, 2)]

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

    Local $aVektor[2] = [$aPos[0],$aPos[1]-$iHoehe/2]
    _EinheitsVektor($aVektor) ;

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

    $Pfeile[$iUbound][0] = 0
    $Pfeile[$iUbound][1] = $iHoehe/2
    $Pfeile[$iUbound][2] = $aVektor[0]
    $Pfeile[$iUbound][3] = $aVektor[1]
    $Pfeile[$iUbound][4] = 7 ; Geschwindigkeit des Pfeils in px/Frame

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

    EndIf

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

    EndFunc ;==>_AddPfeil

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

    Func _EinheitsVektor(ByRef $a) ; Ein beliebig "langer" Vektor (z.B. ( 1000 | 1000 )) wird zu einem Einheitsvektor der Länge 1 $a muss 2Dimensional sein ! $a[2]
    Local $b = ($a[0]^2+$a[1]^2)^0.5
    $a[0] = $a[0]/$b
    $a[1] = $a[1]/$b
    EndFunc

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

    Func _DelGegner($aKlon) ; Es können ja auch mal 2 Gegner gleichzeitig sterben. Daher wird ein Klonarray eingeführt, welches aber nur nullen enthält.
    For $i = UBound($aKlon) - 1 To 1 Step -1 ; Ist ein Gegner Tot wird dieser Wert auf 1 gesetzt.
    If $aKlon[$i] = 1 Then _ArrayDelete($Gegner, $i)
    Next
    EndFunc ;==>_DeleteGegner

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

    Func _DelPfeil(ByRef $aKlon)
    For $i = UBound($aKlon) - 1 To 1 Step -1 ; Genau gleich wie _DelGegner
    If $aKlon[$i] = 1 Then _ArrayDelete($Pfeile, $i)
    Next
    EndFunc ;==>_DelPfeil

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

    Func _Kollision_Kreis_Kreis($x1, $y1, $kx, $ky, $d, $d2) ; Kollisionsberechnung von 2 Kreisen. (aus dem Forum kopiert. Die Funktion hab ich iwann mal entworfen und kürzlich auch im Forum gepostet)
    Return (($x1 - $kx) ^ 2 + ($y1 - $ky) ^ 2) ^ 0.5 < ($d / 2 + $d2 / 2)
    EndFunc ;==>_Kollision_Kreis_Kreis

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

    Func WM_PAINT()
    _GDIPlus_GraphicsDrawImage($hGFX, $hBMP, 0, 0)
    EndFunc ;==>WM_PAINT

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

    Func _Freigeben()

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

    _GDIPlus_GraphicsDispose($hBUF)
    _GDIPlus_BitmapDispose($hBMP)
    _GDIPlus_GraphicsDispose($hGFX)

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

    For $i = 0 To UBound($hBrush) - 1 Step 1
    _GDIPlus_BrushDispose($hBrush[$i])
    Next

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

    For $i = 0 To UBound($hPen) - 1 Step 1
    _GDIPlus_PenDispose($hPen[$i])
    Next

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

    _GDIPlus_Shutdown()

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

    EndFunc ;==>_Freigeben

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

    Func ___Exit()
    Exit
    EndFunc ;==>___Exit

    [/autoit]

    Ich hoffe mal ihr versteht wie ich es meine & ihr wisste wie man es lösen kan ^^

    MfG Nico

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

    Einmal editiert, zuletzt von Niccoo (13. April 2012 um 22:08) aus folgendem Grund: für die rechtschreib duds -.-"

  • Mh was ist "Kommunitieren" und wohin soll dein Spiel "vorgefahren" werden?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Habe es einfach mal verbessert, habe es schnell geschrieben, da ich weiter kommen möchte :D

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • wenn ich dich richtig verstanden habe, dann vielleicht so:
    Mach die GUI von deinem Spiel einfach solange auf @SW_HIDE, bis das Login erfolgreich war. Aus den beiden while Schleifen kannst du ja einfach eine while Schleife machen und mit einer globalen Variablen $fGame (true/false) prüfen, ob das Spiel schon läuft - wenn ja, dann wird der while-Inhalt deines Spiels ausgeführt.

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • Oder ich verbinde sie einfach in ein Skript, aber das wird megaaa schwer :D da ich MustDeklarVariablen habe & ich eig. noch ein noob bin :pp aber das wird schon ;)) esseiden es gibt eine richtige lösung... irgendwie mit #incloud oder soo

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Oder ich verbinde sie einfach in ein Skript

    das meinte ich...

    irgendwie mit #incloud oder soo

    das geht auch. du kannst deine Login Funktionen in dein Spiel includen, oder umgekehrt.

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • Aber wenn ich am anfang vom Spiel #incluod 'blabla.au3' mache & das spiel als exe mache, und auf dem rechner wo es ausgeführt wird kein Autoit drauf ist, könnten sie es dan dennoch starten?

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Ohne die jetzt zu nahe zu treten, aber ich denke doch das ein Spiel dein aktuelles Wissen von Autoit mehr als übersteigt. Du solltest lieber mit etwas einfacherem anfangen z.b. Taschenrechner was recht gut geeignet ist sich die Grundlagen anzueignen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Naja, soooooo schlecht bin ich dan doch nicht ;D ich habe den Login einfach nur super krass umstendlich geskrippt ;oo ist auch bereits veraltet, habe den einfacher gemacht. Hinzugefügt habe ich den noch nicht. Aber das titelbild zu meinem Spiel B-) aber das hätte ich hofe Marsi und developer nie fertig bekommen. Aber sie haben die ruhe behalten und mir geholfen ^^ achja und die version vom spiel, die ich immer hochlade ist ohne grafiken, da ich die nicht über GDIPlus mache sonder als jpg/gif dazulade & ich will nicht immer alles hochladen ^^

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Ich würde das Login Script mit in das Spiel packen :)

    Aber mein eigenlicher grund ist ich habe mal was am spiel verändert einen kleine Dead counter mit rein gemacht :)

    Hier

    [autoit]


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

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

    Opt('GUICloseOnESC', 0) ; Beenden mit Esc ?
    Opt('GUIOnEventMode', 1) ; Event Mode
    Opt('MustDeclareVars', 1) ; Variablen müssen deklariert werden. (sauberes Programmieren nötig)
    Opt('MouseCoordMode', 2) ; Mauskoordinaten relativ zum Fenster

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

    Global Const $iBreite = 800, $iHoehe = 400, $iReihen = 10, $iDiagonale = Sqrt($iBreite^2+$iHoehe^2)

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

    ; Bei 10 Reihen ist oben und unten jeweils eine halbe Reihe Luft. Daher sind nur 9 verfügbar. (Reihe 1 bis 9)

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

    Global $hGUI, $hGFX, $hBMP, $hBUF, $hBrush[8], $hPen[1], $aPos[2]
    Global $Tod = 0 ; Der Count für die besiegten Kreis
    Global $WindowsSize ; Die Client X-Y Postion

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

    Global $Gegner[1][4]
    ; 0 = X - Koordinate
    ; 1 = Y - Koordinate
    ; 2 = Farbe (eine Zahl für die Brush)
    ; 4 = Zustand (True=Lebend oder False=Tod). Ist der Gegner Tod wird er nicht mehr gezeichnet und nach maximal einem Frame gelöscht !

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

    Global $Pfeile[1][6]
    ;~ für erste dimension wert 1, da noch kein pfeil existiert und 1 der minimalwert ist
    ;~ [x][0] = X Koordinate
    ;~ [x][1] = Y Koordinate
    ;~ [x][2] = Vx ( Vektor in X Richtung )
    ;~ [x][3] = Vy ( Vektor in Y Richtung )
    ;~ [x][4] = Pfeilgeschwindigkeit in Px/Frame
    ;~ [x][5] = Anzahl zurückgelegte Pixel auf dem Spielfeld z.B. wird er nach 1000 Pixeln nicht mehr auf dem Feld sein. Das Spaart die Kollisionskontrolle mit dem Pfeil und dem Spielfeld !

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

    _GDIPlus_Startup()

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

    $hGUI = GUICreate("Defender", $iBreite, $iHoehe)
    $hGFX = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBMP = _GDIPlus_BitmapCreateFromGraphics($iBreite, $iHoehe, $hGFX)
    $hBUF = _GDIPlus_ImageGetGraphicsContext($hBMP)

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

    $hBrush[0] = _GDIPlus_BrushCreateSolid(0xFF00592A) ; Weiss
    $hBrush[1] = _GDIPlus_BrushCreateSolid(0xFF91AAB9) ; Armbrust
    $hBrush[2] = _GDIPlus_BrushCreateSolid(0xFF630304) ; Gegner 1
    $hBrush[3] = _GDIPlus_BrushCreateSolid(0xFF2E5B92) ; Gegner 2
    $hBrush[4] = _GDIPlus_BrushCreateSolid(0xFFFDD00A) ; Gegner 3
    $hBrush[5] = _GDIPlus_BrushCreateSolid(0xFF65583A) ; Gegner 4
    $hBrush[6] = _GDIPlus_BrushCreateSolid(0xFF000000) ; Gegner 5
    $hBrush[7] = _GDIPlus_BrushCreateSolid(0xFF540072) ; Schuss der Armbrust

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

    $hPen[0] = _GDIPlus_PenCreate(0xFF91AAB9, 4)

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

    _GDIPlus_GraphicsSetSmoothingMode($hBUF, 4)

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

    GUISetOnEvent(-3, '___Exit', $hGUI) ; Exit
    OnAutoItExitRegister('_Freigeben') ; Beim Beenden auch alle Ressourcen freigeben.
    GUIRegisterMsg(0xF, 'WM_PAINT') ; Neu Zeichnen, wenn Windows das gerne so hätte...
    GUISetState(@SW_SHOW)

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

    _AddPfeil() ; Den Timer starten, damit der erste Schuss früher geht.

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

    While Sleep(20) ; Bessere Variante, als das Sleep unten hin zu schreiben. Ein Sleep kann nur 10, 20, 30 usw sein. Alle anderen Werte funktionieren nicht richtig... (Eigentheit von AutoIt)

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

    _GDIPlus_GraphicsClear($hBUF, 0xFF00592A)

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

    $aPos = MouseGetPos() ; Mausposition bei jedem Schleifendurchlauf nur ein Mal holen reicht aus.

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

    _AddPfeil() ; Man drückt die Linke Maustaste ? --> Feuer ! If _IsPressed('01') Then

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

    _ZeichnePfeile()
    _ZeichneGegner()
    _ZeichneArmbrust()

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

    If UBound($Gegner) < 15 And Not Random(0, 30, 1) Then _AddGegner(Random(1, 9, 1))

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

    $WindowsSize = WinGetPos("Defender") ; größen information über den Client

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

    If IsArray($WindowsSize) Then ; prüfen ob ein Array ist
    Local $XClient = $WindowsSize[0] , $YClient = $WindowsSize[1] ; Die X-Y POS vorm client
    ToolTip("Besiegte Kreise : " & $Tod, $XClient + 7, $YClient + 30, "Besiegte Kreise") ; Wiedergabe eines Tooltipp im Client
    EndIf

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

    ; ToolTip('Anzahl Gegner: ' & UBound($Gegner) - 1 & @CRLF & 'Anzahl Pfeile: ' & UBound($Pfeile) - 1)

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

    WM_PAINT()

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

    WEnd

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

    Func _ZeichneArmbrust()

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

    _GDIPlus_GraphicsFillEllipse($hBUF, -25, $iHoehe / 2 - 25, 50, 50, $hBrush[1])

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

    EndFunc ;==>_ZeichneArmbrust

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

    Func _ZeichneGegner()

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

    Local $iUbound = UBound($Gegner) ; So viele gegner gibt es !
    Local $aKlon[$iUbound] ; Klon Array.

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

    For $i = 1 To $iUbound - 1 Step 1 ; Im 0ten Array steht nix. Daher wird bei 1 begonnen.

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

    If $Gegner[$i][3] = False Then
    $aKlon[$i] = 1 ; Toten Gegner löschen
    ContinueLoop ; Wenn der Gegner Tod ist wird sein Schleifendurchlauf übersprungen.
    EndIf

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

    $Gegner[$i][0] -= 2 ; Bewegen in X Richtung

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

    If $Gegner[$i][0] <= - 50 Then $aKlon[$i] = 1 ; Wenn der Gegner hinten ist, wird er gelöscht.
    ; Später kommt hier hin, dass der Gegner von einem Pfeil getroffen wird oder sowas.
    ; Verschoben. Die Abfrage kommt zu den Pfeilen. Das ist aber reine Geschmackssache...

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

    _GDIPlus_GraphicsFillEllipse($hBUF, $Gegner[$i][0]-25, $Gegner[$i][1]-25, 50, 50, $hBrush[$Gegner[$i][2]])

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

    Next

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

    _DelGegner($aKlon)

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

    EndFunc

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

    Func _ZeichnePfeile()

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

    Local $iUbound = UBound($Pfeile) ; so viele Pfeile gib es
    Local $iUbound_Gegner ; und so viele Gegner. Muss hier noch nicht bestimmt werden.
    Local $aKlon[$iUbound] ; Klon

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

    For $i = 1 To $iUbound - 1 Step 1

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

    $Pfeile[$i][0] += $Pfeile[$i][2] * $Pfeile[$i][4]
    $Pfeile[$i][1] += $Pfeile[$i][3] * $Pfeile[$i][4]

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

    $Pfeile[$i][5] += $Pfeile[$i][4] ; Zurückgelegte Strecke in Pixeln.

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

    If $Pfeile[$i][5] > $iDiagonale Then ; Der Pfeil ist weiter geflogen als die Diagonale des Fensters --> Er ist Weg...
    $aKlon[$i] = 1
    ContinueLoop
    EndIf

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

    $iUbound_Gegner = UBound($Gegner)

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

    For $o = 1 To $iUbound_Gegner - 1 Step 1
    If _Kollision_Kreis_Kreis($Gegner[$o][0], $Gegner[$o][1], $Pfeile[$i][0], $Pfeile[$i][1], 50,10) Then
    $aKlon[$i] = 1 ; Pfeil Löschen
    $Gegner[$o][3] = False ; Gegner lebt nicht mehr...
    $Tod += 1
    ExitLoop ; Der Pfeil ist weg --> Er kann auch keinen weiteren Gegner treffen --> Der "Gegner Treff Loop" kann beendet werden.
    ; Entfernt man diese Zeile können zwei dicht zusammenstehende Gegner von einem einzigen Pfeil getroffen werden.
    EndIf
    Next

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

    If $aKlon[$i] = 0 Then ; Nur zeichnen, wenn der Pfeil noch keinen Gegner getroffen hat.
    _GDIPlus_GraphicsFillEllipse($hBUF, $Pfeile[$i][0]-5, $Pfeile[$i][1] - 5, 10, 10, $hBrush[7])
    EndIf

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

    Next

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

    _DelPfeil($aKlon)

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

    EndFunc ;==>_ZeichnePfeil

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

    Func _AddGegner($Reihe)

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

    Local $iUbound = UBound($Gegner) ; Wie viele Gegner gibt es ?
    ReDim $Gegner[$iUbound + 1][UBound($Gegner, 2)] ; Jetzt gibt es einen Mehr !

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

    $Gegner[$iUbound][0] = $iBreite + 50 ; x
    $Gegner[$iUbound][1] = Int(($iHoehe / $iReihen) * $Reihe) ; y
    $Gegner[$iUbound][2] = Random(2, 6, 1) ; Farbe
    $Gegner[$iUbound][3] = True ; Zu Beginn lebt der Gegner logischerweise.

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

    EndFunc ;==>_AddGegner

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

    Func _AddPfeil()

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

    Local Static $iTimer = TimerInit() ; Static Variablen behalten ihren Wert. d.h. Der Timer braucht nicht Global zu sein.

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

    If TimerDiff($iTimer) > 750 Then ; 750ms für den Anfang sind OK. Später kann man den Wert noch skillen um schneller zu schießen.
    $iTimer = TimerInit()

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

    Local $iUbound = UBound($Pfeile) ; Hinter den Timer. Dann wird das nur Ausgeführt, wenn es sein muss. -> Programm läuft ein gaaaaanz kleines etwas schneller, aber Kleinvieh macht auch Mist :)
    ReDim $Pfeile[$iUbound + 1][UBound($Pfeile, 2)]

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

    Local $aVektor[2] = [$aPos[0],$aPos[1]-$iHoehe/2]
    _EinheitsVektor($aVektor) ;

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

    $Pfeile[$iUbound][0] = 0
    $Pfeile[$iUbound][1] = $iHoehe/2
    $Pfeile[$iUbound][2] = $aVektor[0]
    $Pfeile[$iUbound][3] = $aVektor[1]
    $Pfeile[$iUbound][4] = 100 ; Geschwindigkeit des Pfeils in px/Frame

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

    EndIf

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

    EndFunc ;==>_AddPfeil

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

    Func _EinheitsVektor(ByRef $a) ; Ein beliebig "langer" Vektor (z.B. ( 1000 | 1000 )) wird zu einem Einheitsvektor der Länge 1 $a muss 2Dimensional sein ! $a[2]
    Local $b = ($a[0]^2+$a[1]^2)^0.5
    $a[0] = $a[0]/$b
    $a[1] = $a[1]/$b
    EndFunc

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

    Func _DelGegner($aKlon) ; Es können ja auch mal 2 Gegner gleichzeitig sterben. Daher wird ein Klonarray eingeführt, welches aber nur nullen enthält.
    For $i = UBound($aKlon) - 1 To 1 Step -1 ; Ist ein Gegner Tot wird dieser Wert auf 1 gesetzt.
    If $aKlon[$i] = 1 Then _ArrayDelete($Gegner, $i)
    Next
    EndFunc ;==>_DeleteGegner

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

    Func _DelPfeil(ByRef $aKlon)
    For $i = UBound($aKlon) - 1 To 1 Step -1 ; Genau gleich wie _DelGegner
    If $aKlon[$i] = 1 Then _ArrayDelete($Pfeile, $i)
    Next
    EndFunc ;==>_DelPfeil

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

    Func _Kollision_Kreis_Kreis($x1, $y1, $kx, $ky, $d, $d2) ; Kollisionsberechnung von 2 Kreisen. (aus dem Forum kopiert. Die Funktion hab ich iwann mal entworfen und kürzlich auch im Forum gepostet)
    Return (($x1 - $kx) ^ 2 + ($y1 - $ky) ^ 2) ^ 0.5 < ($d / 2 + $d2 / 2)
    EndFunc ;==>_Kollision_Kreis_Kreis

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

    Func WM_PAINT()
    _GDIPlus_GraphicsDrawImage($hGFX, $hBMP, 0, 0)
    EndFunc ;==>WM_PAINT

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

    Func _Freigeben()

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

    _GDIPlus_GraphicsDispose($hBUF)
    _GDIPlus_BitmapDispose($hBMP)
    _GDIPlus_GraphicsDispose($hGFX)

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

    For $i = 0 To UBound($hBrush) - 1 Step 1
    _GDIPlus_BrushDispose($hBrush[$i])
    Next

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

    For $i = 0 To UBound($hPen) - 1 Step 1
    _GDIPlus_PenDispose($hPen[$i])
    Next

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

    _GDIPlus_Shutdown()

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

    EndFunc ;==>_Freigeben

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

    Func ___Exit()
    Exit
    EndFunc ;==>___Exit

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • Hehe das ist mitlerweile nicht mal mehr die aktuellste version vom spiel :D ich bin eig. tag täglich am Skrippen & verbessern. Habe das jz mit upgrades und waves gemacht. Das muss aber noch verfeinert werden

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Zitat

    Hehe das ist mitlerweile nicht mal mehr die aktuellste version vom spiel :D ich bin eig. tag täglich am Skrippen & verbessern. Habe das jz mit upgrades und waves gemacht. Das muss aber noch verfeinert werden

    Zitat

    Achso ... !!

    Naja ich habe ein kleine Level Algo dazu gebaut das es immer schwerieger wird :P

  • Ja das muss ich auch noch irgendwie machen. Aber das mit dem töte so & so viele gegner um eine Welle aufzusteigen habe ich auch. Wenn du es geschaft hast kommt man zurück zum Titelbild & kan sich die upgrades kaufen. Wie gesagt, muss alles noch verfeinert werden ist ist gerade mal im aufbau... Aber ich will mein Login system da irgendwie noch einbauen, und in den einzelnden Ini`s werden dan die daten alle gespeichert. Wie Wave, upgrades etc etc.

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Zitat

    Ja das muss ich auch noch irgendwie machen. Aber das mit dem töte so & so viele gegner um eine Welle aufzusteigen habe ich auch. Wenn du es geschaft hast kommt man zurück zum Titelbild & kan sich die upgrades kaufen. Wie gesagt, muss alles noch verfeinert werden ist ist gerade mal im aufbau... Aber ich will mein Login system da irgendwie noch einbauen, und in den einzelnden Ini`s werden dan die daten alle gespeichert. Wie Wave, upgrades etc etc.

    Warum ein Login - System über eine .ini ?

    Hohl dir ein Kostenlosen FTP´server und bau dir ein Templat und arbeite mit Winhttp für alle Informationen :)

  • Also mit WinHttp kenne ich mich aus *sehr gut woher nur?* aber was das andere ist. KEINE AHNUNG! :D aber ich denke mal das ist son server im netz oder soo... Aber das spiel ist eig. nur ein Schulprojekt. Ich soll in info ein referat halten & ich will mein lehrer schocken ;pp sollte eig. Die geschichte des Computers vorstellen :O *LAANGWEILIG!* hatte da kein bock druf und mache jz das :D aber das login system über der Ini ist naja nicht gewollt, aber ich will/kann es nicht übers internet laufen lassen. Da ALLE seiten gespert sind solange sie nicht vorher EXTRA MANUELL freigegeben werden.

    & das soll auch ein spiel werden, was man mal spielen kan wenn man mal kein bock auf Unterricht hat ;pp

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Den mache es so wie Minecraft das , man es Offline Spielen kann und Online :)

    Also Offline ohne Ranking , Online mit Rankin .9

  • Ich kenne mich damit aber wie gesagt nicht aus :/ ich kan mir da irgendwie auch nicht vorstellen wie man sowas machen kann. Allerhöchstens mit WinHttp auf die seite navigieren & dann den quellcode auslesen...

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Hmmm !!

    Du schreibst das du WinHttp sehr gut kannst aber weißt den nicht wie du das machen sollst ? :wacko:


    Ich habe das bis jetzt so umgesetzt , Login-System per PHP sprich WinHttp die Information ausgelesen :) den navigiert zu eine Seite wo alle Information gesammelt werden wie,

    Level,Töte gegener,Platz in der Rangliste :) und diese Information habe ich an das Programm weiter geben :) , wenn du Quellcode haben willst kannst du mir eine PN schreiben :P :rock: :rock: