From db5d495ce7bf0e751fd5e932abc545c91b2e4abe Mon Sep 17 00:00:00 2001 From: cclecle Date: Sat, 23 Jul 2022 12:26:06 +0200 Subject: [PATCH] first commit --- Help/TeamBeacon2k4.txt | 65 ++++++++++++++++++ Readme.md | 2 + Run.sh | 141 +++++++++++++++++++++++++++++++++++++++ System/TeamBeacon2k4.int | 3 + System/TeamBeacon2k4.u | Bin 0 -> 163249 bytes 5 files changed, 211 insertions(+) create mode 100644 Help/TeamBeacon2k4.txt create mode 100644 Readme.md create mode 100644 Run.sh create mode 100644 System/TeamBeacon2k4.int create mode 100644 System/TeamBeacon2k4.u diff --git a/Help/TeamBeacon2k4.txt b/Help/TeamBeacon2k4.txt new file mode 100644 index 0000000..e512e0f --- /dev/null +++ b/Help/TeamBeacon2k4.txt @@ -0,0 +1,65 @@ +Team Beacon 2k4 +=============== +by Wormbo (Website: http://www.koehler-homepage.de/Wormbo/) + +Contacting me: +Either via the email address on my website or one of the following ways: + +Forum PM: +http://forums.epicgames.com/ +http://forums.beyondunreal.com/ +http://forums.ingame.de/unreal/ (german forum) + +IRC: +#beyondunreal on irc.enterthegame.com +#unrealadmin on irc.quakenet.org +#inUnreal on irc.quakenet.org (german channel) + + +Description +----------- +Team Beacon 2k4 adds UT2004-style team beacons over players' heads. If players +are close enough, their name and health is drawn next to their team beacon as +well. A player's health is not rendered in resolutions below 640x480 to save +screen space. Unless you are a spectator, team beacons are only rendered for +players on your team. + + +Installing +---------- +Extract the contens of the ZIP file to your UT base directory, maintaining the +directory struction of the archive. This should place all files in the correct +directories: + +Help\ + TeamBeacon2k4.txt (this file) +System\ + TeamBeacon2k4.int + TeamBeacon2k4.u + +To be able to host LAN or online games, add the following lines to the +[Engine.GameEngine] section of your UnrealTournament.ini or whatever INI file +your server will use: + +ServerPackages=TeamBeacon2k4 + + +How to use +---------- +Simply add the Team Beacon 2k4 mutator to enable team beacons. + +Remember to follow installation instructions for editing your INI files if you +want to host a server with the mutator. + + +Known Problems +-------------- +Team beacons are opaque. They'd look to bright if rendered translucently and UT +doesn't support real alpha blending. + +Feel free to contact me if if found another bug. Please tell me which mods +and/or mutators you used and please try to describe in detail how the bug can +be reproduced. + + +Happy Fragging! \ No newline at end of file diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..2beb16c --- /dev/null +++ b/Readme.md @@ -0,0 +1,2 @@ +# TeamBeacon2k4 Release GIT repository + diff --git a/Run.sh b/Run.sh new file mode 100644 index 0000000..efcdf6c --- /dev/null +++ b/Run.sh @@ -0,0 +1,141 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +OUTPUT_DIR="$2" +CFG_FILE="$3" +DEFAULT_CFG_FILE=UnrealTournament.ini +function add_iniKeyEx() { + crudini --set $OUTPUT_DIR/System/$1 $2 __$3 $4 + # Warning: ugly hack with sed to allow multiple key instances + to remove space around '=' + sed -i "s/[[:space:]]*__$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*/$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')=/g" $OUTPUT_DIR/System/$1 +} +function set_iniKeyEx() { + crudini --set $OUTPUT_DIR/System/$1 $2 $3 $4 +} +# !!Warning!! section is not considered +function del_iniKeyEx() { + sed -i "/[[:space:]]*$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*$(echo $4 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')/d" $OUTPUT_DIR/System/$1 +} +function add_iniKey() { + add_iniKeyEx $CFG_FILE $1 $2 $3 +} +function set_iniKey() { + set_iniKeyEx $CFG_FILE $1 $2 $3 +} +# !!Warning!! section is not considered +function del_iniKey() { + del_iniKeyEx $CFG_FILE $1 $2 $3 +} +function add_ServerPackage() { + add_iniKey 'Engine.GameEngine' ServerPackages $1 + add_iniKey 'XC_Engine.XC_GameEngine' ServerPackages $1 +} +function del_ServerPackage() { + del_iniKey 'Engine.GameEngine' ServerPackages $1 + del_iniKey 'XC_Engine.XC_GameEngine' ServerPackages $1 +} +function add_ServerActors() { + add_iniKey 'Engine.GameEngine' ServerActors $1 + add_iniKey 'XC_Engine.XC_GameEngine' ServerActors $1 +} +function del_ServerActors() { + del_iniKey 'Engine.GameEngine' ServerActors $1 + del_iniKey 'XC_Engine.XC_GameEngine' ServerActors $1 +} +function getmodprefix() { + UFile=$(find $OUTPUT_DIR/System -type f -iname "TeamBeacon2k4*.u" -exec basename {} \;) + BaseName="${UFile%.*}" + echo "$BaseName" +} +function install() { + rsync -a $SCRIPT_DIR/Help/ $OUTPUT_DIR/Help/ --exclude '.git' + rsync -a $SCRIPT_DIR/System/ $OUTPUT_DIR/System/ --exclude '.git' + + echo install ok +} +function enable() { + BaseName="$(getmodprefix)" + add_ServerPackage $BaseName + + echo enable ok +} +function disable() { + BaseName="$(getmodprefix)" + del_ServerPackage $BaseName + + echo disable ok +} +function show_help() { + echo + echo "Usage: $0 { getmodprefix | install | enable | disable } [] [ ]" + echo +} +function check_cfg_file_config() { + if [ $# -eq 4 ] + then + echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE" + CFG_FILE=$DEFAULT_CFG_FILE + elif [ $# -eq 5 ] + then + echo "CFG_FILE is set to '$CFG_FILE'" + else + echo "Wrong number of arguments" + show_help + exit 9999 # die with error code 9999 + fi + if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ] + then + echo "$OUTPUT_DIR/System/$CFG_FILE does not exist" + show_help + exit 9999 # die with error code 9999 + fi +} +function check_cfg_file_gen() { + if [ -z ${CFG_FILE} ] + then + echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE" + CFG_FILE=$DEFAULT_CFG_FILE + else + echo "CFG_FILE is set to '$CFG_FILE'" + fi + if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ] + then + echo "$OUTPUT_DIR/System/$CFG_FILE does not exist" + show_help + exit 9999 # die with error code 9999 + fi +} +function check_game_dir() { + ### Check if a directory does not exist ### + if [ -z $OUTPUT_DIR ] + then + echo "incorrect " + show_help + exit 9999 # die with error code 9999 + fi +} +case "$1" in + 'getmodprefix') + check_game_dir + getmodprefix + ;; + 'install') + check_game_dir "$@" + install "$@" + ;; + 'enable') + check_game_dir "$@" + check_cfg_file_gen "$@" + disable "$@" + enable "$@" + ;; + 'disable') + check_game_dir "$@" + check_cfg_file_gen "$@" + disable "$@" + ;; + *) + show_help + exit 1 + ;; +esac +exit 0 diff --git a/System/TeamBeacon2k4.int b/System/TeamBeacon2k4.int new file mode 100644 index 0000000..4702196 --- /dev/null +++ b/System/TeamBeacon2k4.int @@ -0,0 +1,3 @@ +[Public] +Object=(Name=TeamBeacon2k4.TeamBeacon2k4,Class=Class,MetaClass=Engine.Mutator,Description="Team Beacon 2k4,Identifies team members like in UT200x.") +Preferences=(Caption="TeamBeacon2k4",Parent="Game Settings",Class=TeamBeacon2k4.TeamBeacon2k4,Immediate=True) diff --git a/System/TeamBeacon2k4.u b/System/TeamBeacon2k4.u new file mode 100644 index 0000000000000000000000000000000000000000..5125ce06746e9534fc246e91a65c8845baaaa1c1 GIT binary patch literal 163249 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 literal 0 HcmV?d00001