Counter-Strike:Source - Record-Script

  • 2. EDIT: HIER noch ein Upload(als *.exe) auf Megaupload.com für alle, die diese Seite per google.at/de/com whatever gefunden haben und sich nicht AutoIt zum kompeilieren des Scripts installieren wollen ;)

    Hi leute,

    wenn wer von euch CSS spielt kennt er das sicher:
    Man will aufnehmen, weis aber auch die schnelle nicht wohin man es speichern soll bzw wenn man öfter aufnimmt, braucht man ein System hinter dem ganzen.
    Ich hab mir ein Skript geschrieben, dass
    - sich von selbst die SteamID raussucht (aus der Steam.log)
    - in die autoexec.cfg einen Eintrag macht mit Taste zum Aufnehmen
    - eine record.cfg erstellt und diese updatet
    - für jeden Tag einen eigenen Ordner im Ordner 'cstrike' macht

    Funktionsprinzip:
    Eine Adlib-Funktion wird alle 60.5 Sekunden aufgrufen und updatet die Record.cfg wie folgt:
    "record "OrdnerMitDatum/demo_HH-MM.dem"

    In die Autoexec.cfg kommt automatisch folgendes:
    "bind "TasteDieIhrGewähltHabt" "exec record.cfg""

    nun müsst ihr Ingame nur noch die Taste drücken und ihr nehmt auf ;)

    Sourcecode:

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <Array.au3>
    #include <String.au3>
    #include <Misc.au3>

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

    If @AutoItVersion <= "3.3.1.0" Then
    MsgBox(48, "Error", "Das Skript funktioniert ab der AutoIT Version 3.3.1.0!")
    Exit
    EndIf

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

    Opt("TrayMenuMode", 1)
    Opt("TrayAutoPause", 0)
    Opt("TrayOnEventMode", 1)
    Opt("MustDeclareVars", 1)

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

    TraySetToolTip("CSS-Record-Script")

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

    Dim $aLines[10]
    Global $hCheckInstance = GUICreate("Unsichtbar",1,1,0,0)
    Global $sBind
    Global $aAutoExec
    Global $sPathSteamExe = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Valve\Steam", "InstallPath")
    Global $sDate = @MDAY & "." & @MON & "." & @YEAR
    Global $sSteamID = IniRead(@ScriptDir & "\Record-Script-Lite.ini", "User-Settings", "SteamID", "")
    Global $bFirstStart = IniRead(@ScriptDir & "\Record-Script-Lite.ini", "Settings", "FirstStart", "True")

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

    _Singleton("Unsichtbar")

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

    If Execute($bFirstStart) = True Then
    _CheckSteamID()
    $sBind = InputBox("Bind-Taste eingeben", "Bitte die Taste eingeben mit der anschließend im Spiel die Aufnahme gestartet werden soll! (Ohne """")")
    If $sBind = "" Or @error Then
    MsgBox(48, "Error", "Taste ist nicht gültig!")
    Exit
    Else
    If Not FileExists("cfg/autoexec.cfg") Then _FileCreate("cfg/autoexec.cfg")
    Local $sTempAttrib
    Local $sTempWorkingDir = @WorkingDir
    FileChangeDir(@WorkingDir & "\cfg")
    $sTempAttrib = FileGetAttrib("autoexec.cfg")
    If StringInStr($sTempAttrib, "R") Then
    If MsgBox(48 + 4, "Error", "Die Datei 'autoexec.cfg' trägt das Attribut 'readonly'!" & @LF _
    & "Trotzdem schreiben?" & @LF _
    & "Das Attribut wird anschließend wiederhergestellt!") = 6 Then
    FileSetAttrib("autoexec.cfg", "-RA")
    _FileWriteToLine("autoexec.cfg", _FileCountLines("autoexec.cfg"), "bind """ & $sBind & """ ""exec record.cfg""")
    FileSetAttrib("autoexec.cfg", "+R")
    Else
    Exit
    EndIf
    EndIf
    _FileWriteToLine("autoexec.cfg", _FileCountLines("autoexec.cfg"), "bind """ & $sBind & """ ""exec record.cfg""")
    FileChangeDir($sTempWorkingDir)
    If @error Then
    MsgBox(48, "Error", "Ein Fehler trat auf beim Setzen des Hotkeys auf!")
    Exit
    EndIf
    EndIf
    IniWrite(@ScriptDir & "\Record-Script-Lite.ini", "Settings", "FirstStart", "False")
    Else

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

    _CheckSteamID()

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

    EndIf

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

    If Not FileExists("cfg/record.cfg") Then _FileCreate("cfg/record.cfg")

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

    TrayCreateItem("Beenden")
    TrayItemSetOnEvent(-1, "_Exit")

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

    DirCreate($sDate)
    AdlibRegister("_UpdateCFG", 60500)

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

    While 1
    Sleep(100)
    WEnd

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

    Func OnAutoItExit()
    IniWrite(@ScriptDir & "\Record-Script-Lite.ini", "User-Settings", "SteamID", $sSteamID)
    EndFunc ;==>OnAutoItExit

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

    Func _CheckSteamID()
    Local $aSteamLog
    Local $aSplitted
    Local $sBetween
    Local $sValue = "CreateSession("

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

    If $sSteamID = "" Then
    If Not FileExists($sPathSteamExe & "\Steam.log") Then
    MsgBox(48, "Error", "Steam.log wurde nicht gefunden!" & @LF & "Bitte Steam mindestens einmal starten und erfolgreich einloggen!")
    Exit
    EndIf
    _FileReadToArray($sPathSteamExe & "\Steam.log", $aSteamLog)
    For $i = 1 To $aSteamLog[0]
    If StringInStr($aSteamLog[$i], $sValue, 1) Then ExitLoop
    Next
    $sBetween = _StringBetween($aSteamLog[$i], "(", ")")
    If @error Then
    MsgBox(48, "Error", "SteamID konnte nicht ausgelesen werden!" & @LF & "Bitte SteamID manuell eingeben!")
    $sSteamID = InputBox("SteamID", "Bitte SteamID eingeben!")
    If @error Or $sSteamID = "" Then
    Exit
    EndIf
    EndIf
    $aSplitted = StringSplit($sBetween[0], ",")
    $sSteamID = $aSplitted[1]
    If Not @error Then
    FileChangeDir($sPathSteamExe & "\SteamApps\" & $aSplitted[1] & "\counter-strike source\cstrike")
    Else
    MsgBox(48, "Error", "Das Arbeitsverzeichnis konnte nicht geändert werden!")
    Exit
    EndIf
    Else
    If FileChangeDir($sPathSteamExe & "\SteamApps\" & $sSteamID & "\counter-strike source\cstrike") = 0 Then
    MsgBox(48, "Error", "Das Arbeitsverzeichnis konnte nicht geändert werden!")
    Exit
    EndIf
    EndIf
    EndFunc ;==>_CheckSteamID

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

    Func _UpdateCFG()
    If WinActive("Counter-Strike Source") Then
    Local $sTime = @HOUR & "-" & @MIN
    _FileWriteToLine("cfg/record.cfg", 1, "record " & $sDate & "/demo_" & $sTime, 1)
    TrayTip("","Config Update!",1)
    Sleep(1000)
    TrayTip("","",1)
    TraySetToolTip("CSS-Record-Script ~ Last config update: " & $sTime)
    EndIf
    EndFunc ;==>_UpdateCFG

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    Feedback & Kritik gerne gehört.

    Viel Spaß damit!

    EDIT: HIER noch eine detaillierte Beschreibung für alle, die mit CSS, Scripts und etc nicht vertraut sind ;) (5.Post)

  • Wenn sich schon jemand das Skript zieht, würde ich auch gerne wissen, was er davon hält, bzw ob es ohne weitere Konfiguration funktioniert..

    problem an der ganzen sache ist wahrscheinlich dass 90% zwar einigermaßen verstehen was das script tut. aber nicht was das für vorteile in css hat. bzw den allgemeinen nutzen deines scripts

    ich versteh nicht ganz was dein script machen soll 8|
    Was soll es denn aufzeichnen ?

    in Css gibt es einen befehl namens record. mit diesem kann man eine demodatei aufnehmen welche das gespielte match 1zu1 wiedergeben kann.
    viele legen sich einen befehl auf eine taste um eine demo aufzunehmen.
    da die älteren demos aber immer überschrieben werden ist das ein kleines problem was oetzn mit diesem script lösen will

  • Schnitzel: ganz gut getroffen, ich schreib noch mal eine detaillierte Info

    Das eigentliche Problem, das das Skript behebt ist folgendes:

    Wie bereits richtig gesagt, gibt es den Befehl 'record'. Den muss man in die Console schreiben oder man bindet ihn sich auf eine Taste.
    Hinter den Befehl 'record' muss man allerdings noch den Dateinamen schreiben, und genau hier liegt das Problem. Denn ein Demo-Datei die bereits existiert wird von CSS gnadenlos überschrieben, wenn man den Befehl ein zweites Mal ausführt. Und wenn man sich diesen Befehl nun auf eine Taste bindet, müsste man die Demo-Datei immer zuerst sichern, bevor man den Befehl erneut ausführt.

    Darum lasse ich das Skript eine Datei erstellen, die jede Minute aktualisiert wird, damit es nie vorkommt, dass man eine Demo-Datei überschreibt.
    Anschließend muss man ingame nur noch die zuvor gewählte Taste drücken und CSS erstellt eine Demo ;)

    So, ich hoffe ich konnte ein wenig Aufklärung schaffen, da offensichtlich nicht viele von euch mit dem Thema vertraut sind.

  • So, ich hoffe ich konnte ein wenig Aufklärung schaffen, da offensichtlich nicht viele von euch mit dem Thema vertraut sind.

    joa sind wahrscheinlich die wenigsten die mal aktiv css gezockt haben.
    deshalb kriegst du hier wahrscheinlich auch wenig feedback.

    ich habs mal getestet und es lief egtl recht gut ;)

  • Huhu ,

    Gerade durch Zufall auf diese Seite gestoßen . Dein Script hört sich sehr verlockend an . Habe bisher nur config scripts gefunden, bei denen alle video dateien immer überschreiben werden.

    Jedoch nun meine Frage : Was soll ich denn mit einer .au3 datei anfangen ? :/

    Google sagt mir ich solle es mit Adobe Reader öffnen . Macht für mich allerdings erstens keinen Sinn, und 2tens macht mein reader das auch nicht :/

    Also ne erklärung zur installation wäre vllt nicht schlecht noch ^^

    Hoffe mir kann geholfen werden .


    EDIT : Hmmm ..... kann ich das nur mit einem bestimmten Programm hier von dieser seite öffnen ? Wäre ja dann iwie sinnlos -,- Da ich, zwar als relativ belehrter it-ler wenigstens ein bissel ahnung habe , aber als ein eingefleischter Css Zocker bringt mir das dann recht wenig :/ naja ich warrte mal auf Antwort

    Einmal editiert, zuletzt von sosoachja (1. Februar 2010 um 18:16)

  • Ist dir schon aufgefallen auf was für einer Seite du dich befindest? Lad dir mal AutoIt runter (und SciTE), dann öffne das Script und kompilier es. Dann haste eine exe.

  • Hier ist es so üblich, dass man nur den Sourcecode eines Skripes hochlädt. Damit sich den jeder anschauen kann, was das Programm den macht und wenn er will kann er sich das Skript ja kompeilieren.
    Eine *.exe von der man nicht weiß, was sie macht, rührt hier keiner gerne an. Und von welcher *.exe, die man nicht selbst kompeiliert hat, weiß man schon was sie macht *gg* (Außerdem ist es nicht möglich *.exe hier hochzuladen: reine Vorsichtsmaßnahme ^^)

    Ich kann dir aber hier gerne eine *.exe anhängen, dann musst du nicht selber AutoIt installieren ^^

    Hier bitteschön ;)

  • Mir ist schon aufgefallen, was für eine seite das ist . Nur hatte ich gestern nicht mehr die Zeit alles gründlich durchzuschauen , und die ersten paar google links die ich angeklickt hatte haben mir deshalb auch nicht weitergeholfen :/

    Aber danke für eure Hilfe .

    Naja das mit den Exen macht Sinn :D Man weis ja nie was drin ist . Nur hatte ich eben noch nie von einem au3 code oder ähnlichem gehört . Alles was ich bisher gemacht hatte,hatte ähnliche Züge wie der Code , doch eben nicht die datei -,- Und daher kam mir das etwas seltsam vor. Meine programmier kenntnisse halten sich wohl doch noch sehr in grenzen ...