Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # betlog 2019-11-11--18-44-32
- #
- quakestatFile="/home/user/.steamdata/BFBC2serverList.qstat"
- evrouterFile="/home/user/.steamdata/BFBC2.evrouterrc"
- frequency=20
- # ========================
- xmodmapUnBound=1
- # ....
- # default base port for BFBC2 - gametracker.com lists these next to the server IP
- portBase=19567
- # required to convert game port into query port. ie: 19567+29321=48888
- portOffset=29321
- touch /tmp/temp.qstat #didnt work the first time till i did this
- tick=$frequency
- # ------------------------
- sleep 1s
- for p in $(xdotool search --name ${0##*/}); do
- name="$(xdotool getwindowname $p)"
- if [[ ${name/Konsole/} != $name ]];then
- if [[ $(xdotool getactivewindow) -ne $p ]]; then
- xdotool windowkill $p
- fi
- fi
- done
- # ------------------------
- # EVROUTER
- if [[ -z $(ps -C evrouter -o pid=|sed 's/\ //') ]]; then
- evrouter -q &> /dev/null
- rm -f /tmp/.evrouter* &> /dev/null
- # evrouterDevices=$(evrouter -D /dev/input/event* 2> /dev/null |grep 'Logitech Unifying Device'|sed -E 's/^.*( \/.*)/\1/;s/ //;s/:.*//'|tr '\n' ' ')
- # evrouterDevices=$(evrouter -D /dev/input/event* 2> /dev/null |grep 'Logitech Unifying Device'|sed -E 's/^.*( \/.*)/\1/;s/ //;s/:.*//'|head -n 1)
- # evrouterDevices=$(evrouter -D /dev/input/event* |grep 'Logitech Unifying Device'|sed -E 's/^.*( \/.*)/\1/;s/ //;s/:.*//'|tail -n 1)
- evrouterDevice=$(evrouter -D /dev/input/event* |grep 'Logitech Unifying Device\|Logitech Performance MX'|head -n 1|awk '{print $3}'|sed 's/://')
- setsid evrouter -c "${evrouterFile}" "${evrouterDevice}" 1> /dev/null &
- # evrouterDevices=$(evrouter -D /dev/input/event*|grep 'Logitech Unifying Device'|sed -E 's/^.*( \/.*)/\1/;s/ //;s/:.*//'|tr '\n' ' ')
- # evrouter -c "$evrouterFile" "$evrouterDevices"
- if [[ -z $(ps -C evrouter -o pid=|sed 's/\ //') ]]; then
- echo "[$(date +%Y-%m-%d--%H-%M-%S)] - EVROUTER FAILED"
- fi
- fi
- # ------------------------
- # START BFBC2
- bfbc2=$(ps -C steam -o args=)
- if [[ ${bfbc2/BFBC2Game.exe/} != $bfbc2 ]]; then
- wmctrl -R 'Battlefield: Bad Company 2'
- else
- setsid steam steam://rungameid/24960 &
- fi
- # ------------------------
- # MANAGE XMODMAP - xmodmap -pke
- while sleep 1s; do
- if [[ "$(xdotool getwindowname $(xdotool getactivewindow 2> /dev/null) 2> /dev/null )" == "Battlefield: Bad Company 2" ]]; then
- if [[ 1 -eq $xmodmapUnBound ]];then
- xmodmapUnBound=$((1-xmodmapUnBound))
- # Key Shift+Key Mode_switch+Key Mode_switch+Shift+Key ISO_Level3_Shift+Key ISO_Level3_Shift+Shift+Key
- xmodmap -e "keycode 36 = KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter"
- xmodmap -e "keycode 104 = Return Return Return Return Return Return"
- fi
- else
- if [[ 0 -eq $xmodmapUnBound ]];then
- # echo "[$(date +%Y-%m-%d--%H-%M-%S)] - XMODMAP unbound"
- xmodmapUnBound=$((1-xmodmapUnBound))
- xmodmap -e "keycode 104 = KP_Enter"
- xmodmap -e "keycode 36 = Return"
- fi
- # list active servers
- if [[ $tick -eq $frequency ]];then
- awk -v offset="$portOffset" -v base="$portBase" -F':' \
- '{sum=$2+offset; if(sum==offset)sum=base+offset; print $1":"sum > "/tmp/temp.qstat"}' $quakestatFile
- clear
- echo "[$(date +%Y-%m-%d--%H-%M-%S)]"
- quakestat -nocfg -u -allowserverdups -default bfbc2 -ne -nh -f /tmp/temp.qstat|\
- awk '{printf "%s\t%10s\t",$2,$8;for(i=9; i<=NF; ++i) printf "%s ", $i; print ""}'
- tick=0
- fi
- tick=$((tick+1))
- echo -ne "\\t$(( $frequency-$tick )) \\r"
- fi
- done
- # ------------------------
Advertisement
Add Comment
Please, Sign In to add comment