Changeset 23 for scripts/usr


Ignore:
Timestamp:
May 26, 2014, 1:53:39 PM (10 years ago)
Author:
alloc
Message:

Version 6: Instance editing more userfriendly

Location:
scripts/usr/local
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • scripts/usr/local/bin/7dtd.sh

    r17 r23  
    11#!/bin/bash
    2 # Version 4
    32
    43. /usr/local/lib/7dtd/common.sh
  • scripts/usr/local/lib/7dtd/commands/backup.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43# Backups game data files.
  • scripts/usr/local/lib/7dtd/commands/instances.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43
     
    5251                        esac
    5352                done
     53                echo
    5454        fi
    5555        configEditAll
     
    7575                return
    7676        fi
    77 
     77               
    7878        if [ $(isRunning "$1") -eq 0 ]; then
    7979                INSTANCE=$1
    8080                loadCurrentConfigValues "$1"
    81                 configEditAll
    82                 echo
    83                 configSetAutoParameters "$INSTANCE"
    84                 echo
    85                 echo "Saving"
    86                 saveCurrentConfigValues "$1"
    87                 echo "Done"
     81
     82                while : ; do
     83                        echo "What section of the config do you want to edit?"
     84                        local i=0
     85                        local sects=()
     86                        for S in $(listConfigEditFuncs); do
     87                                (( i++ ))
     88                                sects[$i]=$S
     89                                printf "  %2d: %s\n" $i "$S"
     90                        done
     91                        echo
     92                        echo "   W: Save and exit"
     93                        echo "   Q: Exit WITHOUT saving"
     94
     95                        local SEC
     96                        while : ; do
     97                                read -p "Section number: " SEC
     98                                SEC=$(lowercase $SEC)
     99                                if [ $(isANumber $SEC) -eq 1 ]; then
     100                                        if [ $SEC -ge 1 -a $SEC -le $i ]; then
     101                                                break
     102                                        fi
     103                                else
     104                                        if [ "$SEC" = "q" -o "$SEC" = "w" ]; then
     105                                                break
     106                                        fi
     107                                fi
     108                                echo "Not a valid section number!"
     109                        done
     110                        echo
     111                       
     112                        case "$SEC" in
     113                                q)
     114                                        echo "Not saving"
     115                                        break
     116                                        ;;
     117                                w)
     118                                        configSetAutoParameters "$INSTANCE"
     119                                        echo "Saving"
     120                                        saveCurrentConfigValues "$1"
     121                                        echo "Done"
     122                                        break
     123                                        ;;
     124                                *)
     125                                        configEdit${sects[$SEC]}
     126                                        echo
     127                        esac
     128                done
    88129        else
    89130                echo "Instance $1 is currently running. Please stop it first."
  • scripts/usr/local/lib/7dtd/commands/start.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43# Tries to start the 7dtd instance.
  • scripts/usr/local/lib/7dtd/commands/status.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43# Print status of given instance.
  • scripts/usr/local/lib/7dtd/commands/stop.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43# Tries to stop the 7dtd instance given as first parameter.
  • scripts/usr/local/lib/7dtd/commands/updateengine.sh

    r21 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43# Tries to start the 7dtd instance.
  • scripts/usr/local/lib/7dtd/common.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43# Provides common functions for 7dtd-scripts. Not intended to be run directly.
  • scripts/usr/local/lib/7dtd/help.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43genericHelp() {
  • scripts/usr/local/lib/7dtd/monitor-log.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43. /usr/local/lib/7dtd/common.sh
  • scripts/usr/local/lib/7dtd/playerlog.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43timestamp() {
  • scripts/usr/local/lib/7dtd/serverconfig.sh

    r20 r23  
    11#!/bin/bash
    2 # Version 5
    32
    43# Provides functions to query and validate values for serverconfig.xml
     4
     5#################################
     6## Definition of options
    57
    68serverconfig_ServerPort_QueryName() {
     
    684686
    685687
    686 ############
     688#################################
     689## Edit option functions
     690
     691configEditServer() {
     692        local CV
     693       
     694        echo "Server"
     695        echo "--------------------------------"
     696        for CV in \
     697                        ServerName ServerPassword ServerIsPublic ServerPort ServerMaxPlayerCount \
     698                        DisableNAT \
     699                        ; do
     700                configQueryValue $CV
     701                echo
     702        done
     703        echo
     704}
     705
     706configEditRemoteControl() {
     707        local CV
     708       
     709        echo "Remote control"
     710        echo "--------------------------------"
     711        for CV in \
     712                        ControlPanelEnabled ControlPanelPort ControlPanelPassword \
     713                        TelnetPort TelnetPassword \
     714                        ; do
     715                if [ "$CV" = "TelnetPort" ]; then
     716                        echo
     717                        echo "NOTE: Telnet will always be enabled for management purposes!"
     718                        echo "Make sure you block external access to this port!"
     719                        echo
     720                fi
     721                configQueryValue $CV
     722                echo
     723        done
     724        echo
     725}
     726
     727configEditGameType() {
     728        local CV
     729       
     730        echo "Game type"
     731        echo "--------------------------------"
     732        for CV in \
     733                        GameName GameWorld GameMode \
     734                        ; do
     735                configQueryValue $CV
     736                echo
     737        done
     738        echo
     739}
     740
     741configEditGameTypeSpecific() {
     742        local CV
     743       
     744        echo "Options for specific game types"
     745        echo "--------------------------------"
     746        for CV in \
     747                        DayCount FragLimit MatchLength RebuildMap \
     748                        ; do
     749                configQueryValue $CV
     750                echo
     751        done
     752        echo
     753}
     754
     755configEditGeneric() {
     756        local CV
     757       
     758        echo "Generic options"
     759        echo "--------------------------------"
     760        for CV in \
     761                        ShowAllPlayersOnMap FriendlyFire BuildCreate \
     762                        BlockDurabilityModifier \
     763                        ; do
     764                configQueryValue $CV
     765                echo
     766        done
     767        echo
     768}
     769
     770configEditDropLoot() {
     771        local CV
     772       
     773        echo "Drop and Loot"
     774        echo "--------------------------------"
     775        for CV in \
     776                        DropOnDeath DropOnQuit \
     777                        LootAbundance LootRespawnDays AirDropFrequency \
     778                        ; do
     779                configQueryValue $CV
     780                echo
     781        done
     782        echo
     783}
     784
     785configEditTimes() {
     786        local CV
     787       
     788        echo "Times / Durations"
     789        echo "--------------------------------"
     790        for CV in \
     791                        CraftTimer LootTimer \
     792                        DayNightLength NightPercentage \
     793                        ; do
     794                configQueryValue $CV
     795                echo
     796        done
     797        echo
     798}
     799
     800configEditDifficulty() {
     801        local CV
     802       
     803        echo "Difficulty"
     804        echo "--------------------------------"
     805        for CV in \
     806                        GameDifficulty ZombiesRun \
     807                        PlayerDamageGiven PlayerDamageRecieved EnemySenseMemory EnemySpawnMode EnemyDifficulty \
     808                        ; do
     809                configQueryValue $CV
     810                echo
     811        done
     812        echo
     813}
     814
     815configEditLandClaim() {
     816        local CV
     817       
     818        echo "Land claim options"
     819        echo "--------------------------------"
     820        for CV in \
     821                        LandClaimSize LandClaimDeadZone LandClaimExpiryTime LandClaimDecayMode \
     822                        LandClaimOnlineDurabilityModifier LandClaimOfflineDurabilityModifier \
     823                        ; do
     824                configQueryValue $CV
     825                echo
     826        done
     827        echo
     828}
     829
     830configEditAll() {
     831        configEditServer
     832        configEditRemoteControl
     833        configEditGameType
     834        configEditGameTypeSpecific
     835        configEditGeneric
     836        configEditDropLoot
     837        configEditTimes
     838        configEditDifficulty
     839        configEditLandClaim
     840}
     841
     842
     843
     844
     845
     846#################################
     847## Generic worker functions
     848
     849
     850# List all defined config editing parts
     851# Returns:
     852#   List of config funcs
     853listConfigEditFuncs() {
     854        local CV
     855        for CV in $(declare -F | cut -d\  -f3 | grep "^configEdit.*$"); do
     856                CV=${CV#configEdit}
     857                printf "%s " "$CV"
     858        done
     859}
     860
     861
     862# List all defined config options
     863# Returns:
     864#   List of defined config options
    687865listConfigValues() {
    688866        local CV
     
    695873
    696874
    697 #  1: Option name
    698 #  2: Value
     875# Validate the given value for the given option
     876# Params:
     877#   1: Option name
     878#   2: Value
     879# Returns:
     880#   0/1: invalid/valid
    699881isValidOptionValue() {
    700882        local TYPE=$(serverconfig_$1_Type)
     
    747929}
    748930
    749 #  1: Option name
    750 #  2: Target variable
     931# Query for the value of a single config option
     932# Will be stored in $configCurrent_$1
     933# Params:
     934#   1: Option name
    751935configQueryValue() {
    752936        local TYPE=$(serverconfig_$1_Type)
     
    8241008}
    8251009
     1010# Set parameters for current instance that have forced values:
     1011#  - TelnetEnabled must be set so that management scripts can work
     1012#  - AdminFileName is made to point to the local instance admins.xml
     1013#  - SaveGameFolder is made to point to the instance folder
     1014# Params:
    8261015#   1: Instance name
    8271016configSetAutoParameters() {
     
    8311020}
    8321021
    833 configEditAll() {
    834         local CV
    835         for CV in \
    836                         ServerName ServerPort ServerIsPublic ServerPassword ServerMaxPlayerCount \
    837                         DisableNAT \
    838                         ControlPanelEnabled ControlPanelPort ControlPanelPassword \
    839                         TelnetPort TelnetPassword \
    840                         GameWorld GameName GameMode \
    841                         ShowAllPlayersOnMap FriendlyFire BuildCreate \
    842                         DayCount FragLimit MatchLength RebuildMap \
    843                         DropOnDeath DropOnQuit \
    844                         LootAbundance LootRespawnDays AirDropFrequency \
    845                         CraftTimer LootTimer \
    846                         DayNightLength NightPercentage \
    847                         GameDifficulty ZombiesRun \
    848                         PlayerDamageGiven PlayerDamageRecieved EnemySenseMemory EnemySpawnMode EnemyDifficulty \
    849                         BlockDurabilityModifier \
    850                         LandClaimSize LandClaimDeadZone LandClaimExpiryTime LandClaimDecayMode \
    851                         LandClaimOnlineDurabilityModifier LandClaimOfflineDurabilityModifier \
    852                         ; do
    853                 configQueryValue $CV
    854                 echo
    855         done
    856 }
    857 
     1022
     1023# Print currently defined config values
    8581024printCurrentConfig() {
    8591025        local CV
     
    8641030}
    8651031
     1032# Query for an instance name (will be saved in $INSTANCE)
    8661033readInstanceName() {
    8671034        until [ $(isValidInstanceName "$INSTANCE") -eq 1 ]; do
     
    8771044}
    8781045
     1046# Undefine the current config values
    8791047unsetAllConfigValues() {
    8801048        local CV
     
    8851053}
    8861054
     1055# Load all config values from the config.xml of the given instance
     1056# Params:
    8871057#   1: Instance name
    8881058loadCurrentConfigValues() {
     
    8991069}
    9001070
     1071# Save all config values to the config.xml of the given instance
     1072# Params:
    9011073#   1: Instance name
    9021074saveCurrentConfigValues() {
     
    9231095}
    9241096
     1097# Check if the config template exists
     1098# Returns:
     1099#   0/1: no/yes
    9251100configTemplateExists() {
    9261101        if [ -f $SDTD_BASE/templates/config.xml ]; then
Note: See TracChangeset for help on using the changeset viewer.