• Söö, wer den Beitrag von Mr.SaxoI3eat gelesen hat (Wer wird Millionär?), der weiß, dass ich auch noch ein Rätselskript hier rum liegen hab ;)
    Das Beispielrätsel ist "hingekritzelt", ich denke, ich werde die Tage da mal was Vernünftiges machen... aber es geht ja um das Skript, nicht um die Fragen...
    Von miraus könnt ihr auch eigene Scenarien verfassen und sie hier hochladen!

    Sourcecode
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: chesstiger

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

    Script Function:
    ---

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

    #ce ----------------------------------------------------------------------------
    #include <StaticConstants.au3>
    #include <GUIConstants.au3>
    #include <Misc.au3>
    #include <File.au3>

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

    Dim $FOLDERS
    $FOLDERS = _FileListToArray(@ScriptDir & "\scenarios\","*",2)
    $COUNTER_ONE = 0
    $RETURN_FOLDER = ""
    Do
    $COUNTER_ONE+=1
    $RETURN_FOLDER = $RETURN_FOLDER & '"' & $FOLDERS[$COUNTER_ONE] & '"' & @CR
    Until $COUNTER_ONE = $FOLDERS[0]

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

    While 1
    $NAMEOFSCENE = InputBox("UniRiddle","Scenarioname:")
    If @Error = 1 Then Exit
    $SCENARIO = "scenarios\" & $NAMEOFSCENE & "\scene.ini"
    If FileExists ($SCENARIO) Then ExitLoop
    MsgBox(48,"UniRiddle","Scenario existiert nicht!" & @CR & @CR & "Verfügbare Scenarien:" & @CR & $RETURN_FOLDER)
    WEnd

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

    $COUNTER = 0
    ;MAINGUI

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

    $MAINGUI = GUICreate("UniRiddle",300,300)
    $NAME = GUICtrlCreateLabel("",15,0,270,25,$SS_CENTER)
    GUICtrlSetFont($NAME,16)
    $TITLEIMAGE = GUICtrlCreatePic("",100,50,100,100)
    $DESCRIPTION = GUICtrlCreateLabel("",10,175,280,50,$SS_CENTER)
    $AUTHOR = GUICtrlCreateLabel("",10,225,280,60,$SS_CENTER)
    $GO = GUICtrlCreateButton("Beginnen",0,280,275,20)
    $CREDITS = GUICtrlCreateButton("Info",275,280,25,20)
    GUISetState()

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

    GUICtrlSetData($NAME,IniRead($SCENARIO,"MAIN","NAME",0))
    GUICtrlSetImage($TITLEIMAGE,"scenarios\" & $NAMEOFSCENE & "\pic\" & IniRead($SCENARIO,"MAIN","TITLEIMAGE",0))
    GUICtrlSetData($DESCRIPTION,IniRead($SCENARIO,"MAIN","DESCRIPTION",0))
    GUICtrlSetData($AUTHOR,"Autor: " & IniRead($SCENARIO,"MAIN","AUTHOR",0) & @CRLF & "Version: " & IniRead($SCENARIO,"MAIN","VERSION",0) & @CRLF & "Datum: " & IniRead($SCENARIO,"MAIN","DATE",0))

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

    While 1
    $mainmsg = GUIGetMsg()
    Select
    Case $mainmsg = $GO
    ExitLoop
    Case $mainmsg = $GUI_EVENT_CLOSE
    Exit
    Case $mainmsg = $CREDITS
    MsgBox(32,"UniRiddle","UniRiddle ist ein Projekt von: chesstiger" & @CR & "Scenario-Ordner einfach nach 'scenarios' verschieben und den Namen bei der Startsequenz eingeben!" & @CR & @CR & "UniRiddle-Version: 0.2")
    EndSelect
    WEnd
    GUIDelete($MAINGUI)

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

    GUICreate("UniRiddle",300,300)
    $QUEST = GUICtrlCreateLabel("QUEST",10,10,280,50)
    $A = GUICtrlCreateButton("A",0,180,300,30)
    $B = GUICtrlCreateButton("B",0,210,300,30)
    $C = GUICtrlCreateButton("C",0,240,300,30)
    $D = GUICtrlCreateButton("D",0,270,300,30)
    $PIC = GUICtrlCreatePic("",100,50,100,100)
    GUISetState()
    $COUNT_SECTIONS = IniReadSectionNames($SCENARIO)
    Do
    $COUNTER+=1
    _NewQuest("QUEST_" & $COUNTER)
    Until $COUNTER = $COUNT_SECTIONS[0] - 1
    MsgBox(0,"UniRiddle",IniRead($SCENARIO,"MAIN","WINTEXT",0))

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

    Func _NewQuest($SECTION)
    #cs
    If IniRead($SCENARIO,$SECTION,"ENABLE",0) = 3 Then
    GUICtrlSetState($D,$GUI_DISABLE)
    EndIf
    If IniRead($SCENARIO,$SECTION,"ENABLE",0) = 2 Then
    GUICtrlSetState($A,$GUI_DISABLE)
    GUICtrlSetState($D,$GUI_DISABLE)
    EndIf
    If IniRead($SCENARIO,$SECTION,"ENABLE",0) = 1 Then
    GUICtrlSetState($B,$GUI_DISABLE)
    GUICtrlSetState($C,$GUI_DISABLE)
    GUICtrlSetState($D,$GUI_DISABLE)
    EndIf
    #ce
    GUICtrlSetState($A,$GUI_DISABLE)
    GUICtrlSetState($B,$GUI_DISABLE)
    GUICtrlSetState($C,$GUI_DISABLE)
    GUICtrlSetState($D,$GUI_DISABLE)

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

    If StringInStr(IniRead($SCENARIO,$SECTION,"ENABLE","0"),"A") <> 0 Then GUICtrlSetState($A,$GUI_ENABLE)
    If StringInStr(IniRead($SCENARIO,$SECTION,"ENABLE","0"),"B") <> 0 Then GUICtrlSetState($B,$GUI_ENABLE)
    If StringInStr(IniRead($SCENARIO,$SECTION,"ENABLE","0"),"C") <> 0 Then GUICtrlSetState($C,$GUI_ENABLE)
    If StringInStr(IniRead($SCENARIO,$SECTION,"ENABLE","0"),"D") <> 0 Then GUICtrlSetState($D,$GUI_ENABLE)
    If IniRead($SCENARIO,$SECTION,"ENABLE","0") = "" Or IniRead($SCENARIO,$SECTION,"ENABLE","0") = "0" Then
    GUICtrlSetState($A,$GUI_ENABLE)
    GUICtrlSetState($B,$GUI_ENABLE)
    GUICtrlSetState($C,$GUI_ENABLE)
    GUICtrlSetState($D,$GUI_ENABLE)
    EndIf

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

    GUICtrlSetData($QUEST,IniRead($SCENARIO,$SECTION,"QUEST",0))
    GUICtrlSetData($A,IniRead($SCENARIO,$SECTION,"A",0))
    GUICtrlSetData($B,IniRead($SCENARIO,$SECTION,"B",0))
    GUICtrlSetData($C,IniRead($SCENARIO,$SECTION,"C",0))
    GUICtrlSetData($D,IniRead($SCENARIO,$SECTION,"D",0))
    GUICtrlSetImage($PIC,"scenarios\" & $NAMEOFSCENE & "\pic\" & IniRead($SCENARIO,$SECTION,"PIC",0))
    While 1
    $msg = GUIGetMsg()
    If WinActive("UniRiddle") <> 0 Then
    If _IsPressed("41") Then
    $ANSWER = "A"
    Sleep(200)
    ExitLoop
    EndIf
    If _IsPressed("42") Then
    $ANSWER = "B"
    Sleep(200)
    ExitLoop
    EndIf
    If _IsPressed("43") Then
    $ANSWER = "C"
    Sleep(200)
    ExitLoop
    EndIf
    If _IsPressed("44") Then
    $ANSWER = "D"
    Sleep(200)
    ExitLoop
    EndIf
    EndIf
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $A
    $ANSWER = "A"
    ExitLoop
    Case $msg = $B
    $ANSWER = "B"
    ExitLoop
    Case $msg = $C
    $ANSWER = "C"
    ExitLoop
    Case $msg = $D
    $ANSWER = "D"
    ExitLoop
    EndSelect
    WEnd
    If $ANSWER <> IniRead($SCENARIO,$SECTION,"NEXT",0) Then
    If IniRead($SCENARIO,$SECTION,"ENDTEXT","0") = "AUTO" Then
    MsgBox(0,"UniRiddle",IniRead($SCENARIO,"MAIN","ENDTEXT_AUTO",0))
    ElseIf IniRead($SCENARIO,$SECTION,"ENDTEXT","0") <> "0" THen
    MsgBox(0,"UniRiddle",IniRead($SCENARIO,$SECTION,"ENDTEXT",0))
    EndIf
    If IniRead($SCENARIO,"MAIN","DEBUG","FALSE") <> "TRUE" Then Exit
    EndIf
    If IniRead($SCENARIO,$SECTION,"NEXTTEXT","0") = "AUTO" Then
    MsgBox(0,"UniRiddle",IniRead($SCENARIO,"MAIN","NEXTTEXT_AUTO",0))
    ElseIf IniRead($SCENARIO,$SECTION,"NEXTTEXT","0") <> "0" Then
    MsgBox(0,"UniRiddle",IniRead($SCENARIO,$SECTION,"NEXTTEXT",0))
    EndIf

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

    GUICtrlSetImage($PIC,"")
    GUICtrlSetState($A,$GUI_ENABLE)
    GUICtrlSetState($B,$GUI_ENABLE)
    GUICtrlSetState($C,$GUI_ENABLE)
    GUICtrlSetState($D,$GUI_ENABLE)
    EndFunc

    [/autoit]

    Edit: Mein Browser will grad nicht, der SC ist verhunzt :(

    Und im Anhang das ganze nochmal als Zipfile, mit Beispiel etc... ;)

    lg chess

    Update:
    Ein klein wenig am Sourcecode verändert und UniRiddleEx.zip hochgeladen.
    UniRiddleEx.zip enthält (bis jetzt) nur das Szenario "ctGeschichte", wird aber noch erweitert. ;)

    chess

  • Danke und genau, das ist der Sinn hinter der Sache! ;)
    Universell... Ursprünglich war das als eine Art... Szenarioplayer geplant, zb. "Du stehst vor einem alten Haus. Die Tür ist offen, auf der Treppe ist Blut. Was tust du?". Sieht man auch noch... Scenario etc..

    Ich arbeite gerade an einem Geschichte-Paket und an einem AutoIt-Paket...
    Mal gucken, wahrscheinlich wirds Morgen oder in einer Woche fertig, kommt drauf an...

    Wird dann hier zum Download bereitgestellt, Rätselpakete von euch sind auch willkommen :P

    lg chess

  • Ich hab schon über beides, was du angesprochen hast, also Scenario-Maker & das mit dem Schließen nachgedacht^^
    Aber wie gesagt: Es war ursprünglich für so Szenarien wie zb. Scottland Yard, Sherlock Holmes u.Ä. in der Richtung gedacht, wo es bei falscher Antwort halt nicht weitergehen darf...
    Aber UniRiddle ist ja eh kein Szenario-Programm geworden, sondern ein... Rätselprogramm halt, deswegen werd ich das, bzw. beides umsetzen ;)

    Danke für den Kommentar :p

    lg chess