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. zombie36

Beiträge von zombie36

  • TCP Script für Kartenspiel, Server/Client aufteilung

    • zombie36
    • 24. Dezember 2010 um 23:21

    3 posts sind zwar zwei zuviel des guten, aber ich muss das nochmal pushen..

    bin nicht einen schritt weitergekommen.. schaffs immernochnicht zugänge zuzulassen
    die version mit der do schleife - kein erfolg
    adlib version - kein erfolg

    Zitat

    Du könntest ja durch ein Adlib Register immer Zugänge zulassen und so auch immer anzeigen lassen wie viele gerade mitspielen.

    wie würde das im grunde aussehen?

    hab mir übrigens die TCP udf angeguckt die ich oben verlinkt habe und sie funktioniert bei mir nicht (nur als info)

    ich denke ich mach irgendeinen gravierenden denkfehler weshalb ich mich nicht von der stelle bewege ^^

    wär über hilfe sehr glücklich

    frohe weihnachten und schöne feiertage

  • TCP Script für Kartenspiel, Server/Client aufteilung

    • zombie36
    • 21. Dezember 2010 um 20:49
    Zitat von BadBunny

    AutoIt-QuellcodeCode kopieren

    1
    2
    3


    Do
    $ConnectedSocket = TCPAccept($MainSocket)
    Until $ConnectedSocket <> -1


    Das würde bedeuten er wartet bis 1ne person beitritt, aber Poker spielt man bekanntlich ja mit mehreren.
    Du könntest ja durch ein Adlib Register immer Zugänge zulassen und so auch immer anzeigen lassen wie viele gerade mitspielen.

    Alles anzeigen


    ich hab diese funktion für jeden seat und einen jeweils anderen port geschrieben..
    sodass er für jeden seat auf genau einen spieler wartet

  • TCP Script für Kartenspiel, Server/Client aufteilung

    • zombie36
    • 21. Dezember 2010 um 19:31

    das kartengeben läuft folgendermaßen ab:

    [autoit]

    global $aDeck

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

    For $i = 0 To 3
    For $j = 0 To 12
    $aDeck[$i * 13 + $j] = $aSuit[$i] & $j + 1
    Next
    Next
    $aCopyDekc = $aDeck

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

    func _dealCard ()
    local $tRand = random(0,$ideckcount,1)
    local $iCard = $aCopyDeck[$tRand]
    $aCopyDeck[$tRand] = $acopyDeck[$ideckCount]
    $iDeckCount -= 1
    return $iCard
    EndFunc

    [/autoit]

    mein script funktioniert soweit, dass ich flop/turn/river und Holecards für eine runde in der console ausgebe (für jeden spieler wo nicht "None" in $aSeat ist.

    häng mein script man an

    ich versteh nämlich nciht so ganz was ich machen soll^^ sry

    Dateien

    ServerV01.au3 18,88 kB – 372 Downloads
  • einfügen von Bildern in Bildern in Bildern (..)

    • zombie36
    • 21. Dezember 2010 um 07:25

    Hallo ich bins wieder :)

    der Titel verräts:

    ich möchte ein neues Bild aus mehreren einzelbildern erzeugen, sodass diese (deckend) auf einer "Unterlage" (=Basisbild) angezeigt werden

    hab mir die GDIPlus funktionen angeguckt aber ich habs nich hinbekommen :whistling:

    zu anschauungszwecken hab ich noch ein paar Bilder mit hochgeladen, sowie das gewünschte endresultat

    Bilder

    • Resultat.JPG
      • 1,79 kB
      • 42 × 58
    • maske.JPG
      • 1,13 kB
      • 42 × 58
    • 5s.JPG
      • 839 Byte
      • 11 × 25
    • border.JPG
      • 892 Byte
      • 24 × 45
    • suits.JPG
      • 1 kB
      • 22 × 43
  • TCP Script für Kartenspiel, Server/Client aufteilung

    • zombie36
    • 20. Dezember 2010 um 23:47

    danke schonmal für die unterstützung :)
    rollen wir die antworten mal von hinten nach vorne auf:

    Zitat von Sortoc

    Würde dir empfehlen du gestalltest erstmal den "Server" ohne Tcp sprich du schreibst ihn so das er Mischen,Kartengeben,das Blatt auswerten,den Einsatz regeln usw. ohne die Daten der Clients machen kann. Sprich das Spiel im "offline" Modus.

    da es sich hierbei um Poker handelt, ist ein offline modus nicht notwendig (es kann ja nur multiplayer gespielt werden)

    hab die funktionen die ich brauche schon (für n spieler werden n*2 karten gegeben, im server in $aKarten gespeichert und dem clienten wird dann eine spielernummer zugewiesen (sagen wir m) sodass er dann vom Server $aKatzen[m] ausliest

    Zitat von BadBunny

    Wüsstest du denn wie du das machst oder hast du noch keinen Plan?

    also vom Grundgerüst in etwa so:

    server
    [autoit='server']


    ;#includes & globals
    dim $SvIp = @IPAddress1
    dim $SvPort = 3542 ;spielt der port eine rolle, außer dass der client den gleichen verwenden muss?

    tcpstartup()
    dim $MainSocket = TCPListen($svIp, $SvPort)
    If $MainSocket = -1 Then
    consolewrite("Error: Socket nicht erreichbar")
    Exit

    Dim $ConnectedSocket = -1 ;täusche verbindung vor
    Do
    $ConnectedSocket = TCPAccept($MainSocket)
    Until $ConnectedSocket <> -1

    #region MainProgramm
    #cs
    while schliefe (while connected)
    hier läuft das Mischen ab. dabei muss der Server folgende informationen verwerten:
    - anzahl der Spieler, die aktiv an der Hand beteiligt sind
    - die Plätze, die die jeweiligen Spieler gewählt haben
    - der Platz, an dem der Dealer Button liegt (der wandert von Runde zu Runde 1 weiter im Uhrzeigersinn)
    - die Anfrage an die betroffenen Spieler, ob sie die Grundeinsätze leisten wollen
    #ce
    if "alles in Orndnung" then
    $aKarten = _mischen/austeilen() ; mit TCPSend an die jeweiligen sockets
    endif
    _Setzrunde () ;mit TCPListen
    $aFlop[3] =_dealFlop () ;mit TcpSend
    _Setzrunde () ;mit TCPListen
    $turn = _dealTurn ;mitTCPSend

    ;usw usf
    ;while end
    #endregion

    TCPShutDown()

    [/autoit]
    client
    [autoit='client']


    ;#includes & globals
    global $svIPAddress = 123.456.7.101
    global $svPort = 3542

    TCPStartUp()

    Dim $ConnectedSocket = -1

    $ConnectedSocket = TCPConnect($svIPADDRESS,$svPORT)

    If @error Then
    consolewrite("TCPConnect failed with WSA error: " & @error)
    Else
    #cs
    Main programm des Clients
    - wartet auf Karten (TCPListen)
    - wartet darauf dass er an der reihe ist (läuft wohl auch übern server mit $iPlayersTurn oder so)
    - macht dann seinen Move (TCPSend(ConnectedSocket,$aMove))
    - wartet wieder darauf dass er dran ist
    #ce
    EndIf

    [/autoit]

    ich dachte mir, dass der Server jedem Seat ein Attribut zuweist (offen, besetzt mit Spieler "xyz")
    außerdem werden die Karten nicht an die Spieler, sondern die Plätze 1 bis 5 verteilt

    dazu bräuchte ich eine funktion, die überprüft, ob dieser Seat besetzt ist (= ob ein socket mit der Tischnummer existiert)

    Jeder Platz representiert also eine mögliche Verbindung


    SO << HIER EIN UPDATE >>

    Ich hab jetzt für jeden Platz eine TCPFunktion geschrieben und mit Adlibregister() eingebunden
    so sieht das beispielsweise mit Seat0 aus:

    [autoit]


    global $aSeat[1] = ["None"] ;none = nicht besetzt, IPadress = besetzt
    global $PORTSeat0 = 660 ;port für Seat 0
    global $Socket0 = TCPListen(@IPAddress1, $PORTSeat0) ;socket für seat 0

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

    func _tcpSeat0()
    Switch $aSeat[0]
    case string("None") ;wenn der Seat nicht besetzt ist
    Local $ConnectedSocket
    Do
    $ConnectedSocket = TCPAccept($Socket) ;warte auf anfrage
    Until $ConnectedSocket <> -1
    local $ClientIP = SocketToIP($ConnectedSocket) ;Hier wird die IP vom clienten zurückgegeben
    $aSeat[0] = $ClientIP
    case Else;wenn der Seat allerdings besetzt ist
    $recv = TCPRecv( $ConnectedSocket, 2048 ) ;wenn eine Nachricht eintrifft
    If @error Then
    $aSeat[0] = "None"
    Else
    _TCPTranslate($recv) ;interpretiere die daten und ändere variablen im script
    EndIf
    EndSwitch
    EndFunc

    [/autoit]

    wenn jetzt aber alle paar ms der TCP verkehr überprüft wird (über einen jeweils anderen Port obv) weiß ich nciht obd as zu Problemen führen kann

    haltet mich auf wenn ihr könnt haha :D

    E2:

    sah zwar schön aus aber wenn ich jetzt mit einem der 5 ports connecte, erhält der Server keine Nchricht

    um das zu überprüfen hab ich in das obige script folgendes hinzugefügt:

    [autoit]


    func _TCPTranslate ($sMsg)
    ConsoleWrite($sMsg)
    EndFunc

    [/autoit]

    und der client sieht so aus:

    client
    [autoit]

    #include <GUIConstants.au3>

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

    TCPStartUp()

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

    Dim $svIPADDRESS = @IPAddress1
    Dim $svPORT = 660
    Dim $ConnectedSocket = -1
    ;=======================================================
    $ConnectedSocket = TCPConnect($svIPADDRESS,$svPORT)

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

    Dim $sData
    If @error Then
    MsgBox(4112,"Error","TCPConnect failed with WSA error: " & @error)
    Else
    ;Loop forever asking for data to send to the SERVER
    While 1
    ; InputBox for data to transmit
    $sData = InputBox("Data for Server",@LF & @LF & "Enter data to transmit to the SERVER:")

    If @error Or $sData = "" Then ExitLoop

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

    TCPSend($ConnectedSocket,$sData)

    ; If send failed with @error then socket has disconnected
    ;----------------------------------------------------------------
    If @error Then ExitLoop
    WEnd
    EndIf

    [/autoit]

    könnte das an der do - schleife im adlib "_tcpSeat0" liegen? hängt sich das vllt irgendwie auf oder so?
    wenn ich meinem script vorgaukle, dass Spieler connected sind (durch manuelles ändern des eintrags in $aSeat) funktioniert es wunderbar, ich brauch also ne alternative für das ständige abfragen nach neuen paketen

  • TCP Script für Kartenspiel, Server/Client aufteilung

    • zombie36
    • 20. Dezember 2010 um 04:57

    Halli halloo,

    Also mein Plan ist folgender: ein Kartenspiel, das komplett in Scite geschrieben wurde, soll über netzwerk die vorgänge simulieren, die live ablaufen würden.

    Ich kannte mich mit TCP bisher überhauptnicht aus und hab mir ein paar Grundkenntnisse über Tutorials und die Autoit Hilfe angeeignet, sodass ich folgende Idee bekommen habe:

    Der Host des Spiels wird den Server Starten und somit ein neues Spiel öffnen.
    Der Server wird den Dealer (=Kartengeber in Poker) simulieren, d.h. er übernimmt das "mischen", austeilen, berechnung der einsätze und des topfs, sowie die Auswertung der Hand zum schluss

    Außerdem muss überprüft werden, ob neue spieler an den tisch gekommen sind.

    Jeder weitere Spieler (=Gast) empfängt dann vom Server informationen über seine eigene Hand und die ausgeteilten Gemeinschaftskarten, worauf es eine Setzrunde gibt (=jeder Gast sendet Pakete zurück, die der Server auswertet


    Das Spiel besteht somit aus der server.exe, dem client.exe und ggf. einer lobby

    ich möchte mich aber nicht einfach aufs script stürzen und am ende einen sourcesalat produzieren


    da ich wie gesagt noch ziemlich neu in der materie bin würde ich mich über feedback freuen.
    Haltet ihr eine solche "Arbeitsaufteilung" für Server & Client für sinnvoll, wenn nein, warum nicht?

    Stimmt es dass sich der Host auch als client mit dem server verbinden muss?

    ich hab das gefühl meine lösung ist recht umständlich zu realisieren.

    Für jeden etwas stichhaltigen Hinweis gibts nen Freudensprung, versprochen !
    Lg


    -> wenn ich demnächst anfange, das Script zu schreiben, werd ich nochmal ein paar Ausschnitte posten
    bis dahin :thumbup:

  • mehrdimensionalen array vergleichen

    • zombie36
    • 18. Dezember 2010 um 03:14

    nicht ganz...
    ich habe das ass als "1" definiert, es ist von der wertigkeit her aber z.T die höchste karte.

    _arraysort packt das ass nach ganz hinten..
    ich versuch das mal zu fixen ;) sollte doch drin sein

    abgesehn davon war dein post aber echt hilfreich, danke dafür
    ich hatte mich davor schon an arraysort probiert aber deine aufteilung war der schlüssel :D

    lieben gruß

  • mehrdimensionalen array vergleichen

    • zombie36
    • 18. Dezember 2010 um 01:01

    hm habs nochmal versucht aber vergeblich..

    main script
    [autoit]


    #include <Array.au3>

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

    Global $sTitle = ''
    ;Global $sCardPath = @ScriptDir & '\cards\'
    ;Global $sIconPath = @ScriptDir & '\icons\'
    Global $aWinnings[10] = ['Hi Card', 'One Pair', 'Two Pair', 'Three Of A Kind', 'Straight', 'Flush', 'Full House', 'Four Of A Kind', 'Straight Flush', 'Royal Flush']
    Global $aSuit[4] = ['d', 'h', 's', 'c'], $aDeck[52], $aCopyDeck, $iDeckCount = 51, $iDealCount = 0
    Global $iplayerNR, $aFlop[3], $turn,$river,$SDHand[5]

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

    For $i = 0 To 3
    For $j = 0 To 12
    $aDeck[$i * 13 + $j] = $aSuit[$i] & $j + 1
    Next
    Next

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

    global $aTest[7] ;erklärung für diejenigen die texas holdem nicht kennen: aus 7 karten (5 gemeinschaftskarten + 2 Holecards) wird das bestmögliche 5-Kartenblatt zusammengelegt
    $aTest[0] = _dealCard()
    $aTest[1] = _dealCard()
    $aTest[2] = _dealCard()
    $aTest[3] = _dealCard()
    $aTest[4] = _dealCard()
    $aTest[5] = _dealCard()
    $aTest[6] = _dealCard()

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

    func _dealCard () ;simuliert das Austeilen einer einzigartigen Karte (Format c13 = Kreuzkönig, h1 = herzAss)
    local $tRand = random(0,$ideckcount,1)
    local $iCard = $aCopyDeck[$tRand]
    $aCopyDeck[$tRand] = $acopyDeck[$ideckCount]
    $iDeckCount -= 1
    return $iCard
    EndFunc

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

    func _Sd_Get_Hand ($iplayer)
    local $tCards [7]
    $tCards[0] = $aFlop[0]
    $tCards[1] = $aFlop[1]
    $tCards[2] = $aFlop[2]
    $tCards[3] = $turn
    $tCards[4] = $river
    $tCards[5] = $aHolecards[$iplayer][0]
    $tCards[6] = $aHolecards[$iplayer][1]
    $tCards = _sortCards($tCards)
    $tCards = _ArrayCombinations($tCards,5)
    local $aReturn
    $aReturn = _RoyalFlush($tCards)
    if $aReturn = 9 Then return $aReturn
    $aReturn = _straightFlush($tCards)
    if IsArray($aReturn) Then return $aReturn
    $aReturn = _fourofakind($tCards)
    if IsArray($aReturn) Then return $aReturn
    $aReturn = _fullhouse($tCards)
    if IsArray($aReturn) Then return $aReturn
    $aReturn = _flush($tCards)
    if IsArray($aReturn) Then return $aReturn
    $aReturn = _Straight($tCards)
    if IsArray($aReturn) Then return $aReturn
    $aReturn = _threeofakind($tCards)
    if IsArray($aReturn) Then return $aReturn
    $aReturn = _twopair($tCards)
    if IsArray($aReturn) Then return $aReturn
    $aReturn = _pair($tCards)
    if IsArray($aReturn) Then return $aReturn
    $aReturn = _HiCards($tCards)
    if IsArray($aReturn) then return $aReturn
    EndFunc

    [/autoit]
    &quot;Benötigte Funktionen&quot;
    [autoit]


    Func _SortCards($aCards)
    Local $tmp
    For $i = 0 To UBound($aCards) - 2
    For $j = $i + 1 To UBound($aCards) - 1
    If int(StringMid($aCards[$j], 2)) < int(StringMid($aCards[$i], 2)) Then
    $tmp = $aCards[$i]
    $aCards[$i] = $aCards[$j]
    $aCards[$j] = $tmp
    EndIf
    Next
    Next
    Return $aCards
    EndFunc ;==>_SortCards

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

    Func _RoyalFlush($aCards);return 9
    for $i = 1 to $aCards[0]
    $sCards = $aCards[$i];jeder string wird überprüft
    if $sCards = String("c1c10c11c12c13") Or $sCards = String("s1s10s11s12s13") Or $sCards = String("h1h10h11h12h13") Or $sCards = String("d1d10d11d12d13") then
    return 9
    EndIf
    Next
    EndFunc ;==>_RoyalFlush

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

    Func _StraightFlush($aCards);return 8, wert höchste Karte
    For $i = 1 to $aCards[0]
    Local $sCards = $aCards[$i]

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

    local $aTmp= StringSplit($sCards,"cshd",2)
    local $iCount = 1
    For $j = UBound($aTmp) - 1 to 2 step -1
    if Number($aTmp[$j]) = (Number($aTmp[$j-1]) + 1) Then;wenn die jeweils verherigeKarte 1 kleiner ist dann $iCount += 1
    $iCount += 1
    EndIf
    Next
    if $iCount = 5 Then
    local $aColor = StringSplit($sCards,"0123456789",2)
    Local $iCount = 1
    local $sTmp = $aColor[0]
    For $k = 1 to UBound($aColor) - 1
    if $aColor[$k] = $sTmp Then
    $iCount += 1
    EndIf
    Next
    if $iCount = 5 then
    Local $iHi = $aTmp[UBound($aTmp)-1]
    Local $aReturn[2]
    $aReturn[0] = 8
    $aReturn[1] = $iHi
    return $aReturn
    EndIf
    EndIf
    Next
    EndFunc ;==>_StraightFlush

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

    Func _Fourofakind($aCards);return 7,wert poker, wert hohe karte
    for $i = $aCards[0] to 1 step -1
    Local $sCards = $aCards[$i]
    Local $aTmp = StringSplit($sCards,"cshd",2)
    for $j = 1 to 2
    Local $iTmp = $aTmp[$j]
    Local $iCount = 1
    for $k = $j + 1 to UBound($aTmp) - 1
    if $aTmp[$k] = $iTmp Then
    $iCount += 1
    EndIf
    Next
    if $iCount = 4 then
    Local $sCheck = "",$aCheck,$iCheck
    For $l = 1 to $aCards[0]
    $sCheck &= $aCards[$l]
    Next
    $aCheck = StringSplit($sCheck,"csdh",2)
    $iCheck = _ArrayMax($aCheck,1)
    If _ArraySearch($aCheck,1) > - 1 Then
    $iCheck = 1
    EndIf
    If $iCheck = $iTmp Then
    $a = _ArrayFindAll($aCheck,$iTmp)
    for $m = 0 to UBound($a) - 1
    _ArrayDelete($aCheck,$a[$m])
    Next
    $iCheck = _ArrayMax($aCheck,1)
    EndIf
    Local $aReturn[3]
    $aReturn[0] = 7
    $aReturn[1] = $iTmp
    $aReturn[2] = $iCheck
    return $aReturn
    EndIf
    Next
    Next
    EndFunc ;==>_Fourofakind

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

    Func _FullHouse($aCards);return 6, wert trips, wert pair
    Local $iCount21, $iCount22,$iCount1 = 1, $iCount2 = 0,$itmp21, $iTmp22, $iTmp1, $iTmp2

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

    for $i = $aCards[0] To 1 Step -1
    local $iTmp, $iTmp2
    Local $iSearch = 0,$iCount1 = 1, $iCount2 = 0
    Local $iStart = 2
    Local $sCheck = $aCards[$i]
    Local $aTmp = StringSplit($sCheck,"csdh",2)
    $iTmp1 = $aTmp[1]
    for $j = 0 to 2
    $iSearch = _ArraySearch($aTmp,$iTmp1,$iStart)
    if $iSearch > 0 Then
    $iCount1 += 1
    $iStart = $iSearch + 1
    EndIf
    Next
    for $k = 1 to UBound($aTmp) -1
    if $aTmp[$k] <> $iTmp1 Then
    $iTmp2 = $aTmp[$k]
    $iStart = _ArraySearch($aTmp,$iTmp2)
    ExitLoop
    EndIf
    Next
    for $l = 0 to 2
    $iSearch = _ArraySearch($aTmp,$iTmp2,$iStart)
    if $iSearch > 0 Then
    $iCount2 += 1
    $iStart = $iSearch + 1
    EndIf
    Next
    if ($iCount1 = 3 AND $iCount2 = 2) Then $i = 0
    if ($iCount1 = 2 AND $iCount2 = 3) Then $i = 0
    Next

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

    For $m = 1 To $aCards[0]
    local $iTmp, $iTmp22, $iCount21 = 1, $iCount22 = 0
    Local $iStart = 2,$isearch = 0
    Local $sCheck = $aCards[$m]
    Local $aTmp = StringSplit($sCheck,"csdh",2)
    $iTmp21 = $aTmp[1]
    for $n = 0 to 2
    $iSearch = _ArraySearch($aTmp,$iTmp21,$iStart)
    if $iSearch > 0 Then
    $iCount21 += 1
    $iStart = $iSearch + 1
    EndIf
    Next
    for $o = 1 to UBound($aTmp) -1
    if $aTmp[$o] <> $iTmp21 Then
    $iTmp22 = $aTmp[$o]
    $iStart = _ArraySearch($aTmp,$iTmp22)
    ExitLoop
    EndIf
    Next
    for $p = 0 to 2
    $iSearch = _ArraySearch($aTmp,$iTmp22,$iStart)
    if $iSearch > 0 Then
    $iCount22 += 1
    $iStart = $iSearch + 1
    EndIf
    Next
    if ($iCount21 = 3 AND $iCount22 = 2) Then $m = $aCards[0] +1
    if ($iCount21 = 2 AND $iCount22 = 3) Then $m = $aCards[0] +1
    Next

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

    if ($iCount1 = 3 AND $iCount2 = 2) Then;ass in wertigkeit anpassen

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

    if $iCount21 = 3 And $iTmp21 = 1 Then
    If $iTmp1 <> 1 then
    $iTmp2 = $iTmp1
    $iTmp1 = 1
    EndIf
    ElseIf $iCount21 = 2 and $iTmp21 = 1 then
    $iTmp2 = 1
    EndIf

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

    Local $aReturn[3]
    $aReturn[0] = 6
    $aReturn[1]= $iTmp1
    $aReturn[2] = $iTmp2
    return $aReturn
    ElseIf ($iCount1 = 2 AND $iCount2 = 3) then

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

    if $iCount21 = 3 And $iTmp21 = 1 Then
    If $iTmp2 <> 1 then
    $iTmp1 = $iTmp2
    $iTmp2 = 1
    EndIf
    ElseIf $iCount21 = 2 and $iTmp21 = 1 then
    $iTmp1 = 1
    EndIf

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

    Local $aReturn[3]
    $aReturn[0] = 6
    $aReturn[1]= $iTmp2
    $aReturn[2] = $iTmp1
    return $aReturn
    EndIf
    EndFunc ;==>_FullHouse

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

    Func _Flush($aCards);return 5, werte der karten
    for $i = $aCards[0] to 1 step -1
    Local $sCards = $aCards[$i]
    local $aColor = StringSplit($sCards,"0123456789",2)
    Local $aTmp = StringSplit($sCards,"csdh",2)
    Local $iCount = 1
    local $sTmp = $aColor[0]
    For $j = 1 to UBound($aColor) - 1
    if $aColor[$j] = $sTmp Then
    $iCount += 1
    EndIf
    Next
    if $iCount = 5 then
    Local $aReturn[1]
    $aReturn[0] = 5

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

    if _ArraySearch($aTmp,1) > -1 Then
    _ArrayAdd($aReturn,1)
    _ArrayDelete($aTmp,_ArraySearch($aTmp,1))
    EndIf

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

    for $k = UBound($aTmp) - 1 to 1 step -1
    _ArrayAdd($aReturn,$aTmp[$k])
    Next
    return $aReturn
    EndIf
    Next
    endFunc ;==>_Flush

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

    Func _Straight($aCards);return 4, wert höchste karte (ace hi = 14 !!)
    Local $sCheck, $aCheck, $iCount = 1,$bAce = 0
    $sCheck = $aCards[1]
    $aCheck = StringSplit($sCheck,"csdh",2)
    $iSearch = _ArraySearch($aCheck,1)
    if $iSearch > -1 Then
    $bAce = 1
    EndIf
    for $i = $aCards[0] to 1 step -1
    $iCount = 1
    $sCheck = $aCards[$i]
    $aCheck = StringSplit($sCheck,"csdh",2)
    For $j = UBound($aCheck) - 1 to 2 step -1
    if Number($aCheck[$j]) = (Number($aCheck[$j-1]) + 1) Then;wenn die jeweils verherigeKarte 1 kleiner ist dann $iCount += 1
    $iCount += 1
    EndIf
    Next
    Local $aReturn[2]
    if ($iCount = 4 or $iCount = 5) and $aCheck[UBound($aCheck) -1] = 13 and $aCheck[UBound($aCheck) - 4] = 10 and $bAce = 1 Then
    $aReturn[0] = 4
    $aReturn[1] = 14
    Return $aReturn
    ElseIf $iCount = 5 Then
    $aReturn[0] = 4
    $aReturn[1] = $aCheck[UBound($aCheck)-1]
    Return $aReturn
    EndIf
    Next
    EndFunc ;==>_Straight

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

    Func _Threeofakind($aCards);return 3,Wert Trips, Wert hohe karte 1, wert hohe karte 2
    Local $sCheck,$aCheck,$iCount = 1,$iCheck
    for $i = $aCards[0] to 1 step -1
    $sCheck = $aCards[$i]
    $aCheck = StringSplit($sCheck,"csdh",2)
    $iCount = 1
    for $j = 1 to 5
    $iCheck = $aCheck[$j]
    for $k = $j+1 to UBound($aCheck) -1
    if $aCheck[$k] = $iCheck Then
    $iCount +=1
    EndIf
    If $iCount = 4 Then
    for $l = 0 To 2
    _ArrayDelete($aCheck,_arraysearch($aCheck,$iCheck))
    Next
    Local $aReturn[4]
    $aReturn[0] = 3
    $aReturn[1] = $iCheck
    $aReturn[2] = _ArrayPop($aCheck)
    $aReturn[3] = _ArrayPop($aCheck)

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

    $aCheck = StringSplit($aCards[1],"csdh",2)
    if _ArraySearch($aCheck,1) > -1 And $iCheck <> 1 Then
    $aReturn[3] = $aReturn[2]
    $aReturn[2] = 1
    EndIf
    Return $aReturn
    EndIf
    Next
    Next
    Next
    EndFunc ;==>_Three

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

    Func _TwoPair($aCards);return 2, wert pair1, wert pair2, wert hi card
    For $i = $aCards[0] to 1 step -1
    Local $aCheck, $iCheck, $iHi, $iPair1, $iPair2
    $aCheck = StringSplit($aCards[$i],"csdh",2)
    $iTmp1 = _ArrayPop($aCheck)
    $iTmp2 = _ArrayPop($aCheck)
    $iTmp3 = _ArrayPop($aCheck)
    $iTmp4 = _ArrayPop($aCheck)
    $iTmp5 = _ArrayPop($aCheck)
    Local $aReturn[4]
    If $iTmp1 = $iTmp2 And $iTmp3 = $iTmp4 Then
    $aReturn[0] = 2
    $aReturn[1] = $iTmp1
    $aReturn[2] = $iTmp3
    $aReturn[3] = $iTmp5
    ElseIf $iTmp1 = $iTmp2 And $iTmp4 = $iTmp5 Then
    $aReturn[0] = 2
    $aReturn[1] = $iTmp1
    $aReturn[2] = $iTmp4
    $aReturn[3] = $iTmp3
    ElseIf $iTmp2 = $iTmp3 And $iTmp4 = $iTmp5 Then
    $aReturn[0] = 2
    $aReturn[1] = $iTmp2
    $aReturn[2] = $iTmp4
    $aReturn[3] = $iTmp1
    EndIf
    if $aReturn[0] = 2 Then
    $aCheck = StringSplit($aCards[1],"csdh",2)
    $aSearch = _ArrayFindAll($aCheck,1)
    If UBound($aSearch) - 1 > 0 Then
    $aReturn[2] = $aReturn[1]
    $aReturn[1] = 1
    ElseIf $aSearch <> -1 Then
    $aReturn[3] = 1
    EndIf
    return $aReturn
    EndIf
    Next
    EndFunc ;==>_TwoPair

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

    Func _Pair($aCards);return 1,wert pair, wert hi card1, hi card2, hi card3
    local $aCheck = StringSplit($aCards[1],"csdh",2)
    if $aCheck[1] = $aCheck[2] And $aCheck[1] = 1 Then
    Local $aReturn[5]
    $aReturn[0] = 1
    $aReturn[1] = 1
    $aCheck = StringSplit($aCards[UBound($aCards)-1],"csdh",2)
    $aReturn[2] = _ArrayPop($aCheck)
    $aReturn[3] = _ArrayPop($aCheck)
    $aReturn[4] = _ArrayPop($aCheck)
    return $aReturn
    Else
    for $i = UBound($aCards) -1 to 1 step -1
    Local $sCards = $aCards[$i]
    Local $aTmp = StringSplit($sCards,"cshd",2)
    for $j = 1 to 4
    Local $iTmp = $aTmp[$j]
    Local $iCount = 1
    for $k = $j + 1 to UBound($aTmp) - 1
    if $aTmp[$k] = $iTmp Then
    $iCount += 1
    EndIf
    Next
    if $iCount = 2 then
    for $l = 0 to 1
    _ArrayDelete($aTmp,_arraysearch($aTmp,$iTmp))
    Next
    Local $aReturn[5]
    $aReturn[0] = 1
    $aReturn[1] = $iTmp
    $aReturn[2] = _ArrayPop($aTmp)
    $aReturn[3] = _ArrayPop($aTmp)
    $aReturn[4] = _arraypop($aTmp)
    if _ArraySearch($aCheck,1) > -1 Then
    $aReturn[4] = $aReturn[3]
    $aReturn[3] = $aReturn[2]
    $aReturn[2] = 1
    EndIf
    Return $aReturn
    EndIf
    Next
    Next
    EndIf

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

    EndFunc ;==>_Pair

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

    Func _HiCards($aCards);return 0, hi cards absteigende reinfolge
    Local $aReturn[1]
    $aReturn[0] = 0
    local $j = 4
    local $aCheck = StringSplit($aCards[1],"csdh",2)
    if _ArraySearch($aCheck,1) > -1 Then
    _ArrayAdd($aReturn,1)
    $j -=1
    EndIf
    local $aCheck = StringSplit($aCards[ubound($aCards)-1],"csdh",2)
    for $i = 0 to $j
    _ArrayAdd($aReturn,_ArrayPop($aCheck))
    Next
    return $aReturn
    EndFunc

    [/autoit]

    in das obere script möchte ich also eine art

    [autoit]


    func _compare()
    Local $aCheck[$iPlayerNr][6], $aTmp
    for $i = 0 to $iPlayerNr -1
    $aTmp = _sd_get_hand($i)
    $aCheck[$i][0] = $aTmp[0]
    for $j = 1 to UBound($aTmp) -1
    $aCheck[$i][$j] = $aTmp[$j];aCheck[n][m] -> n = spielerID,[m] = handreturn
    Next
    Next
    _ArrayDisplay($aCheck)

    $best_hand = ""
    return $BEST_HAND ;die da wäre.......? :S
    endfunc

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


    einbauen

    das problem dabei ist dass es sich immer um zufallsvariablen handelt die eine feste position innerhalb des arrays haben..
    deshalb versteh ich auch nicht wie du das mit dem _arraySort meinst..

    die funktionen sind ein ganzer happen an zeilen, ich dachte eventuell könnte man das mithilfe von stringregexp() beschleunigen?
    leider kenn ich mich kaum damit aus und die hilfedatei verrät mir:

    Zitat

    Caution: bad regular expressions can produce a quasi-infinite loop hogging the CPU, and can even cause a crash.- AutiIt Help

    das schreckt mich als laien doch ein wenig ab ;)


    ps. da ich mich bereit erkläre einen großteil zeitaufwendiger schreibarbeit zur verfügung zu stellen würde ich mich freuen, wenn weiterentwicklungen (im fall der fälle) hier gepostet werden ;)

  • mehrdimensionalen array vergleichen

    • zombie36
    • 17. Dezember 2010 um 20:17

    der array ist schon sortiert, undzwar nach stärke, je höher der integer an der jeweiligen stelle, desto besser die hand

    ich brauch nur eine möglichkeit zu definieren dass

    [autoit]


    global $aX[2]
    $aX[0] = 2
    $aX[1] = 3
    ...
    ...
    ...

    [/autoit]


    [autoit]


    global $aY[2]
    $aY[0] = 2
    $aY[1] = 2
    ...
    ...
    ...

    [/autoit]

    schlägt, denn
    $aX[0] =$aY[0]
    aber $aX[1] > $aY[1]

    und das für beliebig viele arrays mit 3 - 6 elementen
    ich hab versucht in den 2 versionen die ich geposted hab 2 möglichst unterschiedliche formen zu benutzen, um mit dem llösungsansatz etwas flexibler zu sein ;)

    EDIT: ich erläutere nochmal das prinzip.
    im ersten post hab ich die version vorgestellt, die $Werte[PlayerId][m*,n**,o***] speichert
    m*: der wert der hand. 0 für nichts, 1 für ein paar, 2 für 2 paare, [...] 9 für royal flush
    n**:bei zwei paaren daserste paar, bei einem paar der wert des pärchens
    o***: bei einem paar die höchste beikarte, bei zweipaaren das zweiet pärchen
    und so weiter

    im zweiten post hab ich alle m*'s und n**'s etc.zu einem string zusammengefasst, in der reinfolge 1.intger = spieler1, 2. integer = spieler2 (...)

  • mehrdimensionalen array vergleichen

    • zombie36
    • 17. Dezember 2010 um 19:59

    und wieder ein stückchen weiter gekommen =)
    der erste angezeigte array ist der gleiche wie in der vorherigen funktion
    der zweite array ist umgewandelt, sodass er nurnoch eindimensional ist und in [0] alle [x][0] elemente auflistet, in [1] alle [x][1] etc.pp.

    kommt man jetzt evtl mit stringregexp weiter? wie würde eine entsprechende funktion aussehen?

    hoffe ihr seid noch aktiv dabei =)

    danke für die bisherige und zukünftige hilfe & LG

    klick mich
    [autoit]


    #include <Array.au3>

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

    ;zu testzwecken:
    global $iPlayerNr = 3

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

    func _sd_get_hand($playerNr) ;zu testzwecken
    Switch($playerNr)
    case 0
    global $aTmp[3]
    $aTmp[0] = 3
    $aTmp[1] = 7
    $aTmp[2] = 1
    return $aTmp
    case 1
    global $aTmp[4]
    $aTmp[0] = 5
    $aTmp[1] = 7
    $aTmp[2] = 1
    $aTmp[3] = 5
    return $aTmp
    case 2
    global $aTmp[5]
    $aTmp[0] = 5
    $aTmp[1] = 3
    $aTmp[2] = 1
    $aTmp[3] = 13
    $aTmp[4] = 5
    return $aTmp
    EndSwitch
    EndFunc

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

    func _compare ()
    Local $aCheck[$iPlayerNr][6], $aTmp, $sCheck
    for $i = 0 to $iPlayerNr -1
    $aTmp = _sd_get_hand($i) ;returnwert ist ein eindimensionaler array mit den kartenwerten (siehe oben)
    $aCheck[$i][0] = $aTmp[0]
    for $j = 1 to UBound($aTmp) -1
    $aCheck[$i][$j] = $aTmp[$j] ;aCheck[n][m] -> n = spielerID,[m] = hand
    Next
    Next

    _ArrayDisplay($aCHeck)

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

    for $k = 0 to UBound($aCheck,2) -1
    $sCheck &= ","
    for $l = 0 to UBound($aCheck,1) -1
    $sCheck &= $aCheck[$l][$k]
    Next
    Next

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

    $sCheck = StringTrimLeft($sCheck,1)
    $aCheck = StringSplit($sCheck,",",2)

    _ArrayDisplay($aCheck)

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

    EndFunc

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

    _compare()

    [/autoit]
  • mehrdimensionalen array vergleichen

    • zombie36
    • 17. Dezember 2010 um 18:49

    hab mal nen stückchen kot dazugepackt..

    der letzte _arraydisplay befehl soll die siegerhand ausspucken
    funktioniert mit dem ersten element auch wunderbar,
    nur wie kann ich das 2. und 3. und n.te element überprüfen?


    EDIT: wie ichi das seh gibt es für fixe werte zu viele mögliche kombinationen :S

    [autoit]


    #include <Array.au3>

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

    ;zu testzwecken:
    global $iPlayerNr = 3

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

    func _sd_get_hand($playerNr) ;zu testzwecken
    Switch($playerNr)
    case 0
    global $aTmp[3]
    $aTmp[0] = 3
    $aTmp[1] = 7
    $aTmp[2] = 1
    return $aTmp
    case 1
    global $aTmp[4]
    $aTmp[0] = 2
    $aTmp[1] = 7
    $aTmp[2] = 1
    $aTmp[3] = 5
    return $aTmp
    case 2
    global $aTmp[5]
    $aTmp[0] = 5
    $aTmp[1] = 3
    $aTmp[2] = 1
    $aTmp[3] = 13
    $aTmp[4] = 5
    return $aTmp
    EndSwitch
    EndFunc

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

    func _compare ()
    Local $aCheck[$iPlayerNr][6]
    for $i = 0 to $iPlayerNr -1
    $aTmp = _sd_get_hand($i) ;returnwert ist ein eindimensionaler array mit den kartenwerten (siehe oben)
    $aCheck[$i][0] = $aTmp[0]
    for $j = 1 to UBound($aTmp) -1
    $aCheck[$i][$j] = $aTmp[$j] ;aCheck[n][m] -> n = spielerID,[m] = hand
    Next
    Next

    _ArrayDisplay($aCheck,"Gesammelte Hände")

    local $iCheck = $aCheck[0][0] ; =3 im test
    local $iWinner
    local $aHand[6]
    for $k = 0 to $iPlayerNr - 1 ;für jeden spieler wird
    if $aCheck[$k][0] > $iCheck Then ;der erste wert ausgelesen und wenn > $iCheck
    $iCheck = $aCheck[$k][0] ;dann wird $iCheck aktualisiert,
    $iWinner = $k ;die Hand wird zum (temporären) sieger erklärt
    for $l = 0 to UBound($aCheck) -1 ;und
    $aHand[$l] = $aCheck[$k][$l] ;die Hand in $aHand kopiert
    Next
    EndIf
    Next
    _ArrayDisplay($aHand, "Siegerhand")
    EndFunc

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

    _compare()

    [/autoit]
  • mehrdimensionalen array vergleichen

    • zombie36
    • 17. Dezember 2010 um 17:13

    ich versteh deine frage nicht ^^
    also die 2. dimension besteht aus sovielen elementen wie die hand zum definieren braucht, also für jeden wert einen anderen index (kein string, der alle werte enthält, meinst du das mit der "spalte"?)

    da weder spielerzahl noch die elemente der 2. dimension konstant sind kann ich mit

    [autoit]

    If $aWert[0][0] > $aWert[1][0] Then

    [/autoit]

    keine allgemeingültige funktion erstellen.

    habs jedenfalls bisher nicht hinbekommen

  • mehrdimensionalen array vergleichen

    • zombie36
    • 17. Dezember 2010 um 16:52

    hallo liebe gemeinschaft :D

    ich bin nichtmehr ganz fit im kopf und komm zu keiner lösung, daher würde ich mich über unterstützung freuen :)

    ich versuche, pokerhände zu simulieren, dazu speichere ich entsprechende Werte im array $aWert, welcher zweidimensional ist (dimension 1 = spieler zuordnung [0-n], dimension 2 = Informationen über gemachte Hand)

    die zweite dimension besteht aus verschiedenvielen elementen, je nach Hand,zwecks eindeutiger zuordnung

    beispiel:
    ein Straightflush(=7) mit 10 als höchster Karte für spieler "n" wird in 2 elementen definiert: $aWert = [n][7,10]

    zwei paare(=2) (zehner und neuner) mit hoher Karte Ass (=1) für spieler "m" ist somit:
    $aWert[m][2,10,9,1]

    jetzt möchte ich für alle spieler überprüfen, wer denn die beste hand hällt (wer also als ersten wert der 2. dimension den höchsten wert erreicht hat, bei gleichstand sollte der 2. wert überprüft werden, bei gleichstand der dritte, .....

    ich hab das gefühl ich hab mir mit meiner array-declarierung selbst ein grab geschaufelt, da ich bemi besten iwllen nicht drauf komme wie ich diese vergleichen soll :S

    so far
    lieben gruß

  • PostgreSQL verbindung schlägt fehl

    • zombie36
    • 15. Dezember 2010 um 17:12

    ein kurzer hoffnungsschimmer, weiterzukommen...:D

    aber nope, @error bleibt 0 :S

    es müsste halt am connection string liegen.

    den classname "AD0DB.connection" habe ich aus dem englischen forum übernommen, könnte hier eventuell ein fehler liegen? (ich weiß nicht was da genau passiert ;) aber @error is 0 :P )

  • Launcher muss vor eigentlichem Programm Start geöffnet werden.

    • zombie36
    • 15. Dezember 2010 um 12:41

    am besten du postest mal den quelltext, vorher kann ich nicht weiter helfen
    (hab im obrigen post noch ne alternative hinzugefügt)

  • Launcher muss vor eigentlichem Programm Start geöffnet werden.

    • zombie36
    • 15. Dezember 2010 um 12:30
    Streng geheim
    [autoit]


    if ProcessExists("launcher.exe") = 0 then
    msgbox(0,"Upps","Programmstart nur über Launcher möglich")
    exit
    endif

    [/autoit]

    processExists überprüft ob der launcher gestartet ist.
    allerdings kann die programm.exe so auch ohne launcher gestartet werden, solange der launcher irgendwo im hintergrund offen ist

    Edit:
    sollte das programm nur über den launcher gestartet werden hätte ich folgende provisorische idee:

    in den launcher packst du in die _runProgramm () (die funktion mit der du programm.exe startest) folgendes (brauchst noch #Include <File.au3>):

    _FileCreate("launch.temp")
    <== hier kommt der befehl run("programm.exe") ==>
    filedelete("launch.temp")

    das erzeugt die datei launch.temp, bis das programm ausgeführt wird

    und im programm überprüfen wir ob die launch.temp existiert (== ob programm.exe über den launcher aufgerufen wurde) mithilfe von

    if fileexists($filepath & "launch.temp") = 0 then
    msgbox(0,"Upps","Programmstart nur über Launcher möglich")
    exit
    endif

  • Videotraining-Software

    • zombie36
    • 15. Dezember 2010 um 11:58

    das hatte ich auch schon versucht (undzwar mit Avi2Dvd) allerdings hatte ich bisher immer probleme damit, den audiostream der videos zu laden. ich konnte also nur das video ohne ton abspielen lassen
    außerdem bin ich nicht so richtig hinter die menuerstellung gestiegen

    könntest du mir andere programme empfehlen, mit denen ich mir das resultat auch als vorschau anzeigen lassen kann?

  • PostgreSQL verbindung schlägt fehl

    • zombie36
    • 15. Dezember 2010 um 11:09

    hab den con string durch

    "User ID=postgres;Password=dbpass;Host=localhost;Port=5432;Database=dbname;"
    bzw
    "Driver={PostgreSQL};Server=localhost;Port=5432;Database=dbname;Uid=postgres;Pwd=dbpass;"

    ersetzt aber der fehler bleibt der gleiche :(
    ich hab schon verschiedene arten ausprobiert aber bekomme stets die gleiche fehlermeldung

    update: im englischen forum hab ich folgenden hinweis gefunden:

    Zitat

    you have to setup a Data Source Name or DSN in ODBC administration

    And instead of connecting to a driver...

    $oConnstr = "DRIVER={PostgreSQL ANSI};DATABASE=myDb;SERVER=myServer;Port=5432;Uid=myUid;Pwd=myPwd"

    ...you connect to the DSN....

    $oConnstr = "DSN=PostgreSQLxxx;DATABASE=myDb;SERVER=myServer;Port=5432;Uid=myUid;Pwd=myPwd"

    leider weiß ich nicht was ich machen soll (erster satz ?)
    wie erstelle ich den "DSN in ODBC administration" :pinch:

    E: hab herausgefunden wie ich den DSN erstellen kann (Systemsteuerung - Verwaltung) aber auch hier ist enie verbindung zur datenbank nciht möglich
    die daten sind aber 100% richtig, da ich über ein anderes programm die daten erfasse

    :S

    gruß

  • Videotraining-Software

    • zombie36
    • 15. Dezember 2010 um 11:04

    Hallo liebe Bastler Community

    Ich stehe etwas unter Zeitdruck, ein Weihnachtsgeschenk fertig zu stellen, da dachte ich vielleicht gehts mit vereinten kräften schneller voran :D

    Prolog:

    Ich habe diverse Videos im .avi und .swf format und möchte diese über ein AutoIT GUI einfach zugänglich machen (am liebsten als activeX element im GUI selbst)

    folgende Probleme:
    1) nach dem einbinden der .html kann ich das video nciht skalieren, es wird also nur ein bildausschnitt angezeigt (ich hab den JWplayer source code verwendet)

    _vidcreate ()
    [autoit]


    $vidID = 0
    $playURL = "video.html"
    func _vidCreate ($playURL, $left = 303, $top = 298, $width = 640, $height = 420)
    $oAX = GUICtrlCreateObj($oIE, $left, $top, $width, $height)
    FileChangeDir(@scriptdir & "\data")
    $playURL = IniRead("info.ini","url",$vidID,"error")
    ;auslesen der $playURL mit key = ausgewähltes Video
    _IENavigate ($oIE, @scriptdir & "\html\jwplayer\"&$playURL)
    GUICtrlSetState($oAX,$GUI_SHOW)
    EndFunc

    [/autoit]

    2.) bei meheren stunden laufzeit nehmen die .avi videos viel zu viel speicher in anspruch (weshalb ich gerne auf alternativen wie .swf umsteigen möchte)

    So nun zu meinem Ziel:

    Das AutoIT GUI soll als eine art DVD Menu verwendet werden, in dem Man mithilfe von Buttons das gewünschte video auswählt um es dann abzuspielen.

    Priorität hierbei haben Übersichtlichkeit, Geschwindigkeit und Speicherplatz (da das ganze am ende auf CD(s)/DVD(s) landen wird

    Ich würd mich über ideen freuen, welches videoformat ich verwenden sollte, wie ich die videos starten sollte (also über externen player / activeX / ..),Wie ich das Programm lauffähiger mache, Wie ich daten besser auswerte und was auch immer euch in den kopf kommt :)

    bin offen für kritik und hoffe inständig auf feedback / hilfe

    bisher nutzen die buttons nur provisorisch der auswahl des videos und der playbutton ($play) um die funktion _vidcreate zu testen

    Ich hoffe soweit hab ich mich verständlich ausgedrückt :D
    Vielen Dank im Voraus für jede noch so unnütze Kleinigkeit :)

    lieben Gruß aus Berlin


    Hab meine au3 mitgeliefert.

    info.ini
    @scriptdir & "\data"
    ==> sektionen "titel" und "url", key = $vidID

    Dateien

    GUI_0b.au3 3,61 kB – 381 Downloads
  • PostgreSQL verbindung schlägt fehl

    • zombie36
    • 15. Dezember 2010 um 10:12

    Hallo alle beisammen!

    Entschuldigt dass ich in dieses forum poste aber der link zum datenbanken subforum funktioniert nicht.

    ich versuche mithilfe der funktion

    _postgres_query()
    [autoit]

    Func _postgres_query()

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

    $oConn = ObjCreate("ADODB.Connection")
    $oRS = ObjCreate("ADODB.Recordset")

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

    $db_Settings = "DRIVER={PostgreSQL Unicode};DATABASE=dbname;" & _
    "SERVER=localhost;PORT=5432;Uid=postgres;" & _
    "Pwd=dbpass;"

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

    $oConn.Open($db_Settings)

    ;interaktion mit DB

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

    $oConn.Close

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

    EndFunc ;==>_postgres_query

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

    $var = _postgres_query()
    MsgBox(0, "", $var)

    [/autoit]

    auf eine datenbank zuzugreifen (dbname)

    bekomme aber immer den fehler

    AutoIt Scripte\test.au3 (11) : ==> The requested action with this object has failed.:
    $oConn.Open($db_Settings)
    $oConn.Open($db_Settings)^ ERROR

    hab den fehler schon häufig gelesen aber noch keine antwort finden können
    ich verwende Scite(AI3), ist diese version eventuell nicht dafür geeignet?

    gibt es funktionierende UDF's für PostgreSQL befehle? (ich hab aus dem forum eine getestet, bei der ich dasselbe problem hatte)

    vielen dank für die antworten im vorraus und lieben gruß

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™