tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
23
ZUGRIFFE
1164
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    Hallo Freunde,

    Ich versuche gerade mit eine if then Anweisung einen Sprung hinzulegen.

    nach dem motto passt das dann übersringe alle und springe zu punkt 2

    sprich mein startscript soll aus den gameserver parametern $* erlesen was für ein game das ist und an die dafür vorgesehene stelle im script springen und da weitermachen. jemand eine Idee?

    nehmen wir z.b
    ./css_run -game cstrike +map gsmap -maxplayers gsplayer -ip gsip -port gsport +exec fastdl.cfg gsport +sv_password gspasswd -tickrate gstick +fps_max 500 set tv_maxclients 10

    da könnte man cstrike als Merkmal aus den startparametern nehmen.
     

  2. #2
    Ronox Ronox ist offline Mitglied Bronze
    Registriert seit
    Nov 2006
    Beiträge
    26
    Hi, ich hoffe du meinst:

    #!/bin/sh


    if [ $1 = css ]
    then
    /var/css/css_run -game cstrike +map gsmap -maxplayers gsplayer -ip gsip -port gsport +exec fastdl.cfg gsport +sv_password gspasswd -tickrate gstick +fps_max 500 set tv_maxclients 10
    elif [ $1 = bf1942 ]
    then
    /var/bf1942/bf_run
    else
    echo "Bitte geben Sie einen Parameter an."
    fi
    Das Script nennst du dann so wie du willst
    Erweiterst es nach belieben.
    mit
    chmod u+x $scriptname
    kannst du dann das Script ausführbar machen.

    und z.B. den CSS Server starten:
    ./$scriptname css
    Ich hoffe das Bringt dich weiter.

    MFG Ronox
     

  3. #3
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    Das script soll irgendwann für alle games dienen welche ich habe

    vom Prinzip her soll es das Game erkennen welches gestartet wird

    so stelle ich mir das vor

    (IF Anweisungen)
    #Call Of Duty
    wenn cod_lnxded in den parametern gefunden so springe zu Abschnitt 1 und mach da weiter
    #Call Of Duty 2
    wenn cod2_lnxded in den parametern gefunden so springe zu Abschnitt 2 und mach da weiter
    #Call Of Duty 4
    wenn cod4_lnxded in den parametern gefunden so springe zu Abschnitt 3 und mach da weiter
    #Call Of Duty 5
    wenn codwaw_lnxded in den parametern gefunden so springe zu Abschnitt 4 und mach da weiter
    #Call Of Duty UO
    wenn coduo_lnxded in den parametern gefunden so springe zu Abschnitt 5 und mach da weiter
    #Counter Strike Source
    wenn "srcds_run -game cstrike" in den parametern gefunden so springe zu Abschnitt 6 und mach da weiter

    usw.

    gestartet soll das script dan später so werden z.b.

    ./gs_run ./srcds_run +parameter
     

  4. #4
    Ronox Ronox ist offline Mitglied Bronze
    Registriert seit
    Nov 2006
    Beiträge
    26
    Wieso willst du dir das so Komliziert machen?

    wieso nicht deine Server so starten:

    ./startserver cod2

    und in dem Script wie oben, von mir gepostet, trägst du dann deine kompletten Parameter ein, oder wenn du z.B. Port Zahl usw. haben willst, dann setzt du dort noch weitere Parameter ran?

    So hast du ein Script für alles, das doch viel besser, weil so wie du das willst oder was du willst das versteh ich nicht so ganz.

    MFG Ronox
     

  5. #5
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    Zitat Zitat von schlawiner Beitrag anzeigen
    [...]
    so stelle ich mir das vor

    (IF Anweisungen)
    #Call Of Duty
    wenn cod_lnxded in den parametern gefunden so springe zu Abschnitt 1 und mach da weiter
    #Call Of Duty 2
    wenn cod2_lnxded in den parametern gefunden so springe zu Abschnitt 2 und mach da weiter
    #Call Of Duty 4
    wenn cod4_lnxded in den parametern gefunden so springe zu Abschnitt 3 und mach da weiter
    #Call Of Duty 5
    wenn codwaw_lnxded in den parametern gefunden so springe zu Abschnitt 4 und mach da weiter
    #Call Of Duty UO
    wenn coduo_lnxded in den parametern gefunden so springe zu Abschnitt 5 und mach da weiter
    #Counter Strike Source
    wenn "srcds_run -game cstrike" in den parametern gefunden so springe zu Abschnitt 6 und mach da weiter

    usw.
    [...]
    Nach deiner Beschreibung sieht das so aus:

    Code bash:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    #!/bin/bash
     
    ACTION=${1}
     
    if [[ -z "${ACTION}" ]]; then
      echo "No action given." >&2
      exit 1
    fi
     
    function startCod() {
     
    }
     
    function startCod2() {
     
    }
     
    case "${ACTION}" in
      cod_lnxded)
        startCod
        ;;
      cod2_lnxded)
        startCod2
        ;;
      default)
        echo "Unknown action." >&2
        exit 2
        ;;
    esac
     
    exit 0

    Natürlich musst du das Ganze noch um die Funktionen zum Starten der Server erweitern.

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  6. #6
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    Das ist ganz einfach, das script soll verschiedene Sachen die Gamespezifisch sind dann noch bei den jeweiligen Games dann hintenansetzen.

    wie z.b bei cod4 soll das script die fastdlparameter automatisch erkennen und hinten an setzen.
    während es bei css nicht funktioniert und dafür dann eine config schreiben muss und diese laden muss.

    Desweiteren möchte ich dann da eine Gameserverupdate funktion mit einbauen falls Steam wieder mal Probleme macht.
     

  7. #7
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    
    #!/bin/bash
     
     
    #Gameserverip festlege.
    gsip=`echo "$*" | grep  -Eo "[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}"`
     
    #Gameserverpfad festlegen
    fdpfad=$(pwd | awk -F/ '{ sub(/\/home/,""); print }');
     
    #Fastdownload Url festlegen
    url="$fastdl/$gsip$fdpfad"
     
    #entgueltige Fastdownloadparameter COD Series
    start="$* +set sv_allowdownload "\"1\"" +set sv_wwwDownload "\"1\"" +set sv_wwwBaseURL "\"$url\"" +set sv_wwwDlDisconnected "\"0\"""
     
     
    ACTION=${1}
     
    if [[ -z "${ACTION}" ]]; then
      echo "No action given." >&2
      exit 1
    fi
     
    function startCod() {
    $start
     
    }
     
    function startCoduo() {
    $start
     
    }
     
    function startCod2() {
    $start
     
    }
     
    function startCod4() {
    $start
     
    }
     
    function startCodwaw() {
    $start
     
    }
     
    function startCss() {
            fdgame="/orangebox/cstrike"    
            echo //Automatisches Fastdownloadscript - wird bei jedem Serverstart erstellt  >> $cfgvar/fastdl.cfg
            echo //----------------------------------------------------------------------  >> $cfgvar/fastdl.cfg
            echo sv_downloadurl "\"$fastdl/$gsip$fdpfad$fdgame\""                      >> $cfgvar/fastdl.cfg
            $* +exec fastdl.cfg
     
    }
     
    function startCs16() {
     
    }
     
    function startDods() {
     
    }
     
    function startDod() {
     
    }
     
    function startCsz() {
     
    }
     
    function startTfii() {
     
    }
     
    function startL4d() {
     
    }
     
    function startL4d2() {
      
    }
     
     
     
    case "${ACTION}" in
      cod_lnxded)
        startCod
        ;;
      coduo_lnxded)
        startCoduo
        ;;
      cod2_lnxded)
        startCod2
        ;;
      cod4_lnxded)
        startCod4
        ;;
      codwaw_lnxded)
        startCodwaw
        ;;
      srcds_run -game cstrike)
        startCss
        ;;
      hlds_run -game cstrike)
        startCs16
        ;;
      srcds_run -game dod)
        startDods
        ;;
      hlds_run -game dod)
        startDod
        ;;
      hlds_run -game czero)
        startCsz
        ;;
      srcds_run -game tf)
        startTfii
        ;;
      srcds_run -game left4dead)
        startL4d
        ;;
      srcds_run -game left4dead2)
        startL4d2
        ;;
      default)
        echo "Kein Game Support." >&2
        exit 2
        ;;
    esac
     
    exit 0

    so ok?
     

  8. #8
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    habs gerade getestet probleme gibts bei den HL spielen da die nur mit mehreren Variablen auseinander zu halten sind
     

  9. #9
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    Hehe ich darf glücklich sagen ich habe es hinbekommen,

    nun habe ich nur noch ein problem welches es zu lösen gilt.

    ich muss 3 Parameter aus einer anderen Datei ziehen, Sprich ich lege irgendwo eine textdatei ab in dieser befindet sich

    updateserver
    fastdlserver
    Imageserver

    Beste grüsse und vielen Dank
     

  10. #10
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    den Inhalt einer Datei bekommst du so in eine Variable:
    Code bash:
    1
    
    inhalt=$( cat DATEI.txt );

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  11. #11
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    geht das ich wenn man die 3 Variablen in eine Datei schreibt, so das er sie als 3 versch. Varis ausließt
     

  12. #12
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    deine "Problembeschreibung" ist echt top
    Naja, kommt drauf an, wie die getrennt sind. Am einfachsten ist es durch einen Tabulator oder durch ein Leerzeichen, aber auch ein Zeilenumbruch ist kein Problem.

    Code bash:
    1
    2
    3
    4
    5
    
    alles=$( cat DATEI.txt )
     
    for akt in $alles; do
      echo "Teil: $akt"
    done

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  13. #13
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    wäre es vieleicht auch einfacher das ich so eine Art Config erstelle und er z.B

    mit

    cacheordner=home/cache

    ausließt so das er das hinter dem = nimmt. Dann wäre man eventl nicht an Zeilen etc. gebunden gibts da ne Möglichkeit
     

  14. #14
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    solange du die Config dann bash-konform hältst, kannst du die mit
    Code bash:
    1
    
    . /pfad/zur/config
    einlesen.

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  15. #15
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    Hallo,

    super funktioniert,

    ich habe es aber nun so gelöst. Manchmal findet man Lösungen auch wenn man zufällig in ein altes Script reinschaut.

    Bis jetzt ist ein geiles Gameserverstartscript entstanden. Es funktioniert tadelos. Ist für Alle HL Games und Games der COD Serie gedacht. Hier ein kurze Vorschau.

    Das Script erledigt eine automatische Fastdl Zuweisung über die Startsequenz, eine Neuinstallfunktion der Gameserver, updates von Steam und Punkbuster (Hardupdate), startet bei cod den Manuadmin Mod 5 Sekunden nach Serverstart.

    Nun geht mir noch eine Idee im Kopf rum:

    Und zwar die automatische Anpassung der HLTV Config oder der Manu Admin Config:

    Dazu muss das Script sich Daten aus der Server.cfg des Gameservers ziehen.

    wie z.b.

    Server.cfg
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    // Der Hostname bezeichnet deinen Servernamen
    // Das rcon Password macht dich zum Admin auf deinen Server
     
    hostname "CSS - Server"
    rcon_password "topsecret"
     
    // Mani Admin Plugin
    //
    // exec mani_server.cfg
    // exec mani_quake_sounds.cfg
     
     
    sv_password "test"
     
     
     
    /////////////////////////////////////////////////////////////////////////
    // Electronic Sports League
    // CS:S Config 5on5 Ladder
    // Version 4.0
    // 27.01.2009
     
    mp_allowspectators "1"
    mp_autokick "0"
    mp_autoteambalance "0"
    mp_buytime "0.25"
    mp_c4timer "35"
    mp_chattime "5"
    mp_decals "300"
    mp_dynamicpricing "0"
    mp_fadetoblack "0"
    mp_flashlight "1"
    mp_footsteps "1"
    mp_forcecamera "1"
    mp_freezetime "6"

    Hier müsst sich das Script den Parameter

    sv_password "test"

    hier müsste sich das Script das test nehmen und in einer anderen Config an einem bestimmten Punkt wieder einsetzen.

    Sagen wir die Config lautet so:


    ip=xxx.xxx.xxx.xxx
    port=xxxxxx
    password=test
    servername=Hier bin Ich


    Sprich die Parameter oben und muss er lassen und nur das rote abändern.


    Beste Grüsse
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 22.10.05, 13:11
  2. Antworten: 2
    Letzter Beitrag: 25.11.04, 01:58
  3. str_replace erst nach bestimmten Abschnitt
    Von PhoenixDH im Forum PHP
    Antworten: 2
    Letzter Beitrag: 20.10.04, 10:01
  4. Antworten: 1
    Letzter Beitrag: 09.09.04, 18:57
  5. Antworten: 6
    Letzter Beitrag: 26.02.04, 10:53