diff --git a/games/ktx/files/ktx.in b/games/ktx/files/ktx.in index 3e6e3075cc92..e514adad764c 100755 --- a/games/ktx/files/ktx.in +++ b/games/ktx/files/ktx.in @@ -1,130 +1,131 @@ #!/bin/sh # PROVIDE: ktx # REQUIRE: LOGIN # KEYWORD: shutdown # # Add the following lines to /etc/rc.conf or /etc/rc.conf.local to # enable ktx: # ktx_(instance_)?enable (bool): Set to "NO" by default. # Set it to "YES" to enable ktx. -# ktx_(instance_)?port (int): UDP port (default 27500). +# ktx_(instance_)?port (int): UDP port for game and TCP for QTV stream +# (default 27500). # ktx_(instance_)?gamedir (str): Gamedir for ktx (default ktx). # ktx_(instance_)?args (str): Custom additional arguments to be passed # to ${__qwserver} (default empty). # ktx_(instance_)?user (str): User to run ${__qwserver} as. Default # to "%%QWUSER%%" created by the port. # ktx_(instance_)?qwserver (path): Full path to QuakeWorld server to run ktx # (default %%LOCALBASE%%/bin/mvdsv). # ktx_(instance_)?log (path): Console log file (default # ${__gamedir}/${name}_(instance_)?${__port}.log). # ktx_(instance_)?randommaps (str): List of maps from which one is randomly # selected to start the server (default empty). # ktx_(instance_)?qwdir (path): QuakeWorld root directory # (default %%QWDIR%%). # ktx_instances (str): Set to "" by default. # If defined, list of instances to enable. . /etc/rc.subr case $0 in /etc/rc*) # during boot (shutdown) $0 is /etc/rc (/etc/rc.shutdown), # so get the name of the script from $_file name=$_file ;; *) name=$0 ;; esac name=${name##*/} rcvar="${name}_enable" load_rc_config "${name}" eval "${rcvar}=\${${rcvar}:-'NO'}" eval "__port=\${${name}_port:-'27500'}" eval "__gamedir=\${${name}_gamedir:-'ktx'}" eval "__args=\${${name}_args:-''}" eval "__user=\${${name}_user:-'%%QWUSER%%'}" eval "__qwserver=\${${name}_qwserver:-'%%LOCALBASE%%/bin/mvdsv'}" eval "__log=\${${name}_log:-${__gamedir}/${name}_${__port}.log}" eval "__randommaps=\${${name}_randommaps:-''}" eval "__qwdir=\${${name}_qwdir:-'%%QWDIR%%'}" eval "${name}_chdir=${__qwdir}" eval "__instances=\${${name}_instances:-''}" pidfiledir="/var/run" pidfile="${pidfiledir}/${name}.pid" if [ -n "$2" ]; then instance="$2" load_rc_config ${name}_${instance} case "${__instances}" in "$2 "*|*" $2 "*|*" $2"|"$2") eval "__port=\${${name}_${instance}_port:-${__port}}" eval "__gamedir=\${${name}_${instance}_gamedir:-${__gamedir}}" eval "__args=\${${name}_${instance}_args:-${__args}}" eval "__user=\${${name}_${instance}_user:-${__user}}" eval "__qwserver=\${${name}_${instance}_qwserver:-${__qwserver}}" eval "__log=\${${name}_${instance}_log:-${__gamedir}/${name}_${instance}_${__port}.log}" eval "__randommaps=\${${name}_${instance}_randommaps:-${__randommaps}}" eval "__qwdir=\${${name}_${instance}_qwdir:-${__qwdir}}" eval "${name}_chdir=${__qwdir}" pidfile="${pidfiledir}/${name}_${instance}.pid" ;; *) err 1 "$2 not found in ${name}_instances" ;; esac else if [ -n "${__instances}" -a -n "$1" ]; then for instance in ${__instances}; do eval "_enable=\${${name}_${instance}_enable}" eval "__enable=\${_enable:-\${${name}_enable}}" case "${__enable}" in [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) continue ;; [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) ;; *) if [ -z "${_enable}" ]; then _var=${name}_enable else _var=${name}_${instance}_enable fi warn "Bad value '${__enable}' for ${_var}. " \ "Instance ${instance} skipped." continue ;; esac echo "===> ${name} instance: ${instance}" %%PREFIX%%/etc/rc.d/${name} $1 ${instance} retcode="$?" if [ "0${retcode}" -eq 0 ]; then success="${instance} ${success}" else failed="${instance} (retcode=${retcode}) ${failed}" fi done echo "===> ${name} instances success: ${success}" echo "===> ${name} instances failed: ${failed}" exit 0 fi fi if [ -n "${__randommaps}" -a \( "x$1" = "xstart" -o "x$1" = "xrestart" \) ]; then RAND=`/usr/bin/head -c2 /dev/urandom | /usr/bin/od -An -t d` #RAND=`echo | awk '{srand(); print rand()*1000000}'` #RAND=$((`/bin/date +%N | /usr/bin/sed 's|^[0]*||'`+0)) LEN=`echo ${__randommaps} | /usr/bin/wc -w` N=$((${RAND} % ${LEN} + 1)) MAP=`echo ${__randommaps} | /usr/bin/awk "{print \\$${N}}"` __args="${__args} +map ${MAP}" fi command="/usr/sbin/daemon" -command_args="-P ${pidfile} -u ${__user} -R 5 -f -H -o ${__log} -m 3 ${__qwserver} -port ${__port} -game ${__gamedir} ${__args}" +command_args="-P ${pidfile} -u ${__user} -R 5 -f -H -o ${__log} -m 3 ${__qwserver} -port ${__port} +qtv_streamport ${__port} -game ${__gamedir} ${__args}" run_rc_command "$1" diff --git a/games/ktx/files/patch-resources_example-configs_ktx_ktx.cfg b/games/ktx/files/patch-resources_example-configs_ktx_ktx.cfg new file mode 100644 index 000000000000..c75eb95a8a22 --- /dev/null +++ b/games/ktx/files/patch-resources_example-configs_ktx_ktx.cfg @@ -0,0 +1,11 @@ +--- resources/example-configs/ktx/ktx.cfg.orig 2025-02-22 20:13:51 UTC ++++ resources/example-configs/ktx/ktx.cfg +@@ -72,6 +72,8 @@ set k_freeze 0 // freeze plat + set k_prewar 1 // prewar setting (0 = prewar fire is disallowed, 1 = prewar fire is allowed, 2 = no fire or jump until ready) + set k_sready 0 // players glow when not ready (0 = no, 1 = yes) + set k_freeze 0 // freeze platforms and doors before matchstart (0 = no, 1 = yes) ++set k_spm_show 1 // show spawn markers in prewar ++set k_spm_glow 1 // spawn markers do not glow + + // timing players + set allow_timing 1 // timing/lagged players manipulation (0 = off, 1 = on) diff --git a/games/ktx/files/patch-resources_example-configs_ktx_pwd.cfg b/games/ktx/files/patch-resources_example-configs_ktx_pwd.cfg new file mode 100644 index 000000000000..2bc58f644410 --- /dev/null +++ b/games/ktx/files/patch-resources_example-configs_ktx_pwd.cfg @@ -0,0 +1,8 @@ +--- resources/example-configs/ktx/pwd.cfg.orig 2024-03-10 07:30:18 UTC ++++ resources/example-configs/ktx/pwd.cfg +@@ -1,4 +1,4 @@ +-sv_crypt_rcon 0 // rcon encryption (0 = off, 1 = on) ++sv_crypt_rcon 1 // rcon encryption (0 = off, 1 = on) + rcon_password "" // rcon (disabled by "") + master_rcon_password "" // master rcon (disabled by "") +