From 6606c3b3f87bc560afd6461d000fc33042318427 Mon Sep 17 00:00:00 2001 From: cclecle Date: Sat, 23 Jul 2022 12:32:44 +0200 Subject: [PATCH] first commit --- Helps/FastCap.txt | 26 +++++++++ Readme.md | 2 + Run.sh | 141 +++++++++++++++++++++++++++++++++++++++++++++ System/FastCap.int | 2 + System/FastCap.u | Bin 0 -> 12448 bytes 5 files changed, 171 insertions(+) create mode 100644 Helps/FastCap.txt create mode 100644 Readme.md create mode 100644 Run.sh create mode 100644 System/FastCap.int create mode 100644 System/FastCap.u diff --git a/Helps/FastCap.txt b/Helps/FastCap.txt new file mode 100644 index 0000000..713797a --- /dev/null +++ b/Helps/FastCap.txt @@ -0,0 +1,26 @@ +FastCap is a mutator that Records the time you used to actually +get the flag from its homebase to your flag. + +It also stores an all-time high, which players can try to break. + +Installation: + +Place FastCap.int and FastCap.u into the \system directory. +Then add ServerPackages=FastCap in your .ini file. +Finally, start the game with the FastCap.FC_Mutator Mutator. +Like: ?mutator=FastCap.FC_Mutator + +Available commands: + +Mutate DeleteHighScore (Admin Only) Deletes the highscore for current map. +Mutate DeleteAllHighScores (Admin Only) Deletes ALL stored highscores. +Mutate ShowHighScore Shows the best time for current map. +Mutate ShowAllHighScores Shows the best times for all maps. + +have fun :) + +TNSe +tnse@unreal2.no + + + diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..3f03e9d --- /dev/null +++ b/Readme.md @@ -0,0 +1,2 @@ +# FastCap Release GIT repository + diff --git a/Run.sh b/Run.sh new file mode 100644 index 0000000..d5d5290 --- /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 "FastCap*.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/FastCap.int b/System/FastCap.int new file mode 100644 index 0000000..71f458b --- /dev/null +++ b/System/FastCap.int @@ -0,0 +1,2 @@ +[Public] +Object=(Name=FastCap.FC_Mutator,Class=Class,MetaClass=Engine.Mutator,Description="FastCap,FastCap: Cap the flag FAST") diff --git a/System/FastCap.u b/System/FastCap.u new file mode 100644 index 0000000000000000000000000000000000000000..b876cd15b79151a51f50194fb061fd5671e0628a GIT binary patch literal 12448 zcmdT~Yj9h~b>0hJ5)TptNl{m%UR*+=2vQJ8NtW8mmP3&uP0BPy5tL=?Q5OU*NJt-I@6hE`fwla zcXs#QiwlsnQoA!XX2^Y=bM~CGXV0EJcmLqi{a+kqjA{6L3V%cRJAl96+sD`;l)Z7r zei;8j-OIy2XubP~tmW;-rYV9Y7=o{#vI-_^(fxX0ELAFxq?T9<^RwoWe9kPCA2Um( z)I7$SU-yp|=5qv#di{u1l(kJsvpik2=8J%=fM)*WYN>243h3tKg0(W9n_oz#6&hFo>*Tjixx`jX^e#+=WAMA1cRBRa?Oc?YW`AloIa+JXAnoFt|jBY87btm0E* zH;;`xRYkB7T{C88ET5Ve6Ew_P%jpFnO5-rNDkRIPvJ}4wpu_oP(}5-2$Cfc}6$P$e zGz2iKU$7QcEqN(d5aYo~=%qZqEc;uBi&iR=#zIu+QV%)&36z!!mCxoB#m4D;YSk=G zr&c80hDr0XnHTWwkE9mO8FMM0OQ*^?t1wZ>T4KPEIBN|B3C95p31Ut&P$^(|*s}7_ z?2=h5uM%0k-euxg+SY?FDW+^pri;0y@~nBKEZV*&MA0ytE9a#~12nd*tgAt38s=F) zYo>%bvEZa71reyN1d>Z9Q|2~1;Kh>Zxo>yih=EOJ#y2stU) zl$;|X+4aa4B%YnA0wc3yju3%LW8Z|4H7$a`C$S^NWPuY)S+r+Fqj4JhY*M6EN3f>N7+m58oQAbji#}0h|pc_16RjJuF2e$DTg8NLZ4mD+EtePC0sLI9Xm$ z3)nn2WmdVs#<`Q1&EiTiCtV4AahLGoL&vGc4D!bd7xY;WX! z^`jp9XZOATKJ^%OcSUJ55SfYhZ@&CIRbKzgH=cNoh93^yeR6}!uM*77_Rrp~g{d9- z3;|!=b^7-=0RDA?`SRbguQ)KZShbX$o;s~g|E$KYvwc0AY@vzb@M}61%q$5 zTZ@Yb!Z@6W84d~fk)nyvBg5xb`Dx*Q%o5+nVVXCS8iTeO5tFmE;|Z(kN}|}jqMC<(+( zLF;Y!m)R!|V?`T%S|{6C4}@2Yi0bHKk;7pzM726m+euo##~O_WKimEVLvKXW$MNsw zO>Do>kIH~9Eh)gd>(H#+@ZbTz0Tyli1j`!s9ms*aV7juzI*LJdscr+vw2 z;|o zIH^Nw*`XunmpS+m??X2h_*iU3mtAK!il`gjgQDS>@-Tg3UzSAR#T}e*=xR6=yqqd> zj3C(MBG9Km3*eRg@}^KZkfped+hG*IpAj<D+-shc5{5k_g^; zRt1c_%G6`d#Y1w|2Zn=KZwXeC#z$7p;q6L1Pj?gptiP2l*FJQ`V1)3U-d00MhlLCaHv|vp50ij;5c{hk$n1pr*5fzWl$yJ z^8a=LN>In7nJurggtpS+{DHlbW+4W%_yEYhK2jbQY&zjdgRFz*F5pnK`V5E;m4>43 z5g^TUF}2hkl~btYTXUhLk$YTXta?R`O-}L!WDukm2Gc*Q>EE~Yt_|qQ?i%mfkoGdT zw)?Z2tydTSZ!NW(_Hl)W_!t>zbZG6>bNt}$XyQIh*OR-8d5;ROixED?v0K||#7hTg z2UZ!gY|bIy#68#PxObSST1YQN#M+=bD?la@38x*(EYtaUctqE+Pxh zTGKpN35H^hZkJMpyP#`fu8`r`T(MN<*`jIk(vnpcb8loFc0eLXZ@dx|&A>vG(1IV2 z08#|?pZxSXv5T!e(t}E<2?eY@yW>Ov?zOrNklgi^Sh8J}p-i|?g48epge>fUMPW^5GnW(Hw7QV@CQvg6jd7@2|u1CC*a-rd}Se*UVv5Of=Eov zjDmyXDhQC4vSt7mR52W5cNyz!rJU7UxETH`$_Q&sJjXiyKVd7ZwcqfcW?wkc*~wb# znXdg>J=3&%N3_ow5p9#W|LNKn8-4yEFwN2vsZP4AV4|liF*KMlyxWQVD?RQzHdqaDb4JO(vQ!;dA!^Q7D@^Cx*Atd{k zw_E?}RjM4_eZ-_ZmPp8b$jaA<&OtN$=e2Z1j*0S_P9E~}1YG?4AN`#JEb>2;7p+a~ zIYSN|r)LA;+M(JWk=Vr5o9$ukp_3@v0*w6_IgJS0a_uy0m)Qx{E)o;-I81(E_iM*BWy^hTJk$N!3Uhxt@;%j5EqMsyfKDhv4%WL5}?@+Er= z|I^yHS-WCEFd1vOu7TO@y$!Eu_n6OUxX%1P^nrW-yV|GF4?ZBoyA?wGjrJXn3=Qu} z#II^1&xFZXyU0SJ<`qh0q$+x`$C&mTkh_C~>GHZ37OyipEAVyg_45GhgvfTU#P6#0 z8%P_u>#>gGK{dCD0RPF ziGkE|*+MD=DOOHj=45)rNlu8*z%iL!5ubLP!(2wD6Fime*{uREK{#&F z*C}2m_%eOqru@&M8HdRsu>)AMcsU`0j-ab0uxkg4&Sy;_qX>^EH8XCmcJm|-QbD;} z5V$JID4l>tg{Ia&Ue$M2c}B~C$)=!mLJ_X&N>s{S*_6}gjyWoDTRd0 zxjevEa^(e{D!582^@_QqM8TlQzV|{9H(}J9kcW7}d;O_V7&7)Y*DiPQ>1kV15panh zQvORWV=WTW`Wy?PA*j_cPWNE~B?)AV=~9Qz?TnG6RtZiE2x@{LKEU;|cz6JQMNt?O9lj(I#Pi;YO zbIM?w(Wc`8(S#`95oMG1byfbB5$R;j1o4`Jc�NQuc^6_cvn_0-=e3KpEMJXaykD zmH2$83P@fjD!*CJTC{Jm=KX`0yTd9X!I4R?ULsBO@?|@mcLrsIMSA?_@dY3v4>{rb zBb5FZ?q1b!=%J=QKtyUjKoDX2&2)Xl4p%+1_*nQ`#jE3PRU4)?&>s$+E|GI7k^8}p z%4Jt^L0-n!cj<^y=`>ysp;dsNE5)(vGRirvnD~YThm40D{75VuLVg!X-RYt!%$FRe z$cVvylSDh_Y)a9b5>xexZ6&SViwWk0)%Ooj#o0;n^+!zQB4jHm(&L`gg?yfYy++=R zTyiBO|7GNWs*>4Ja!V2`A)k#n8`a@^4QEnCMP_WJt5C$eNy@16=_fj5yB<8Qk-5o= zFElcZL%xP?wtNE#JZZOeqzHn}hCXr4Y$kc0;M!7P()GSA-4ExUEVoF;(K2nwp$A2( zIj$C&_}o}igzVMReJyScTC8eDX}8KGD=n;oHQ~7B)}R+}D&Ll|-=ZiJl~IVWw1-qM z^e`feikCDbrGk>LgSdKCQ#)YeVFXBHR&g|i`z;h8qN9@9h-#YNxT52zL>QZVv9nHm zQyC%H*p#(!LLv3_MeIEFektYvR>n+7Y}nii;c*l?+f5<%l7RTRDW3IF?7)(6B$k>r zaomKeNw%3b2{udVs@}#6HM4o$uO18 zk=>=ls{u`@w`f3-i7xqVO^87bo3a@el5$zfXb6vuXo;dEM9FhV)FH^D#ATcpkSNnM&ryV&!2!gx*%IPjv8fn)vk%wpUYzb4qM=PF zkx>zm!1g!YR0m_b8Ta>K^sPF^{)C`dQ;+|T5Lh&++w=G3UAc)~J8-%>;5{&DQYX6L80^LOO=h6NLl$-S_ z(LRE?ev0ls|{@e?r+N$?sClR-pd~-8;c4fyebHg*->mPwm6{0TOQz;8cbs z_Fh>$rj&6OCGmJ%(?3Dwu%@W&lWFMLD13p)eb z^0V-XEw|WStWu0xO=q^;p=W^XaWUAG-tq!N3Wv=|SPM;pJuRD0Z=v^9FgqQVH=$2- zh<9IX6E#N$$$mVucHD@K}Soa;!W9)>an?#dDQ-VL${Z%3O zDKXl7srxN4dO-rOcHb1uJz}2G=uN?|Y@LeAS-7knaB$;&2ZPpDk z(DnmtUSI0DA?O5%&PDA^|8KucS}>^DcPuUk8>#h6zKii2Z_pE`&D1RDCkAc{R6)r) zc;(=YyX1UYX|&{U*jJsY@W-4XgcCnX)davR->siD?WS8jZn zCJGbqxw=y?Y7)7L+K+4b&uF(9jf