From: <baz...@us...> - 2009-01-01 02:36:42
|
Revision: 8717 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8717&view=rev Author: bazaarmagetron Date: 2009-01-01 02:36:37 +0000 (Thu, 01 Jan 2009) Log Message: ----------- author: Daniel Lee Harple ?\226?\128?\162 Renamed AA::Config.src_path to AA::Config.top_path ?\226?\128?\162 Renamed AA::Config::SRC_DIR to TOP_DIR Modified Paths: -------------- armagetronad/trunk/armagetronad/MacOS/rakelib/aabeta.rake armagetronad/trunk/armagetronad/MacOS/rakelib/config.rake armagetronad/trunk/armagetronad/MacOS/rakelib/xcode.rake Added Paths: ----------- armagetronad/trunk/armagetronad/ Removed Paths: ------------- armagetronad/trunk/armagetronad/ Property changes on: armagetronad/trunk/armagetronad ___________________________________________________________________ Added: bzr:revision-info + timestamp: 2008-12-31 15:20:38.187000036 -0500 committer: Daniel Lee Harple <lee...@gm...> properties: branch-nick: armagetronad Added: svn:external + https://svn.sourceforge.net/svnroot/armagetronad/armagetronad/trunk/armagetronad Added: bzr:ancestry:v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs + svn-v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs:7d95bf1e-0414-0410-9756-b78462a59f44:armagetronad%2Ftrunk%2Farmagetronad:8394 Added: bzr:file-ids + Added: bzr:revision-id:v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs + 613 z-...@us...-20080211141509-cwbrb6hmtz9313jr 626 z-...@us...-20080214170110-rhfpd874zuogr3cm 627 z-...@us...-20080214170244-1gstsfe9yzyvrx9b 657 z-...@us...-20080301093905-0jwh1zg9srukp8fn 678 wrt...@us...-20080320130546-cr72y7d9q5a8nk7a 679 z-...@us...-20080324202056-eybvkm0gjomywbcq 680 z-...@us...-20080326104303-kpkkrwiw1fioi0rd 681 epsy-20080327213346-setzm7umdzzuk2dm 683 wrt...@us...-20080402122117-54nak33inuca02o9 684 wrt...@us...-20080402122804-2xhc8bgyrjsa09cd 685 wrt...@us...-20080418093840-cxtpql4xw2vsbmyn 686 ep...@fr...-20080418200503-q16s8az3yewn4x7a 687 ep...@fr...-20080419004917-bq4vguy9vpbkmlo3 688 wrt...@us...-20080419185850-ksm1feadrrhqigjb 689 wrt...@us...-20080423170738-zb8v72r0asm7cp52 691 ep...@fr...-20080427145818-212ave5ohdhth4ph 692 epsy46-20080428164518-07b9wsj90rf82c3y 693 epsy46-20080429194430-hq3fd6i1mnz1vrnz 694 ep...@fr...-20080518131839-uik8hj18c55boh3m 696 z-...@us...-20080618212520-e6ov1rb9b9edwt30 697 wrt...@us...-20080708142300-tu6f7ag7ak0yhdrf 698 wrt...@us...-20080727173310-pv1vq0wj01yfwgfl 699 da...@da...-20080824021014-8aacq5gfp7ktxlxz 700 da...@da...-20080824055426-l5dwhb216uteu7ca 701 da...@da...-20080824172432-lvagd99j28hq8uc1 702 da...@da...-20080824225545-ply97boo9jkqtysn 704 ep...@fr...-20081027173216-nh6d92edtwe35j2g 705 ep...@fr...-20081027203505-42bpegw0fyywzyou 706 ep...@fr...-20081027204727-jcx89jukht9ay72r 707 ep...@fr...-20081028180734-62o6e90rf020xzv8 708 ep...@fr...-20081028224044-f3myemuy87v52ilp 709 ep...@fr...-20081110193848-iksu9rmzzi7jb0qq 710 ep...@fr...-20081114212232-i1q12n375bdpl0sp 712 z-...@us...-20081211141049-wbjceadupsfss5ib 713 da...@da...-20081216223143-1hso83uxyagaubg8 716 lee...@gm...-20081220084635-zv6bpm9rar9yufy7 717 lee...@gm...-20081220085046-6rwe6cqmdlffs4rl 718 lee...@gm...-20081220085502-gpad43pu99t1e6po 719 lee...@gm...-20081220092821-q7uj4w92j6a3a7eb 720 lee...@gm...-20081220094339-k3zb139qp87r4b2w 721 lee...@gm...-20081220100858-uap7k5s22tbipzkt 722 lee...@gm...-20081220111203-rhp5p15agx73xi1k 723 lee...@gm...-20081220112757-mjp2yffddjy5s74e 724 lee...@gm...-20081220114653-k2dqt4wiizipbwas 725 lee...@gm...-20081221181637-6d0tfx7sx7syxfb6 726 lee...@gm...-20081221182603-9bkelm9x7aclb0bw 734 lee...@gm...-20081230173103-fmzio9fanap2rybf 735 lee...@gm...-20081230174204-cppkz4sumguhysa9 736 lee...@gm...-20081230174738-mecjttlpyp1i859c 737 lee...@gm...-20081230174816-qmtp2a3q8m52jsn3 738 lee...@gm...-20081230194247-q6oyx6cqfz03b2lr 739 lee...@gm...-20081231202038-odzabc3wmlqzvskt Added: svn:ignore + compile config.sub install-sh Eclipse* configure version.h CVS doc_bak log leak.history config.cache config.log .gdbinit config.h Makefile leak.log diff scorelog.txt ladder.txt highscores.txt config.status won_matches.txt mainicon.ico .dont_update screenshot_1.bmp won_rounds.txt Makefile.global memprofile* frommaster.srv screenshot* ml astat master bindist master_list.srv big_brother master.srv *.dll *.ilk README.txt README-SDL.txt update.bat tagcvs .infiles autom4te.cache config.h.stamp Testme html.m4 var ded .beautytag* config.h.in aclocal.m4 ChangeLog INSTALL Makefile.in missing COPYING version depcomp .version.new .cvsfiles stamp-h1 touch aa_config.h aa_config.h.in Added: svk:merge + 02982148-85d2-4202-9ec6-589ac3039d34:/local/armagetronad:107d95bf1e-0414-0410-9756-b78462a59f44:/armagetronad/trunk/armagetronad:8394 Modified: armagetronad/trunk/armagetronad/MacOS/rakelib/aabeta.rake =================================================================== --- armagetronad/trunk/armagetronad/MacOS/rakelib/aabeta.rake 2008-12-30 19:53:57 UTC (rev 8705) +++ armagetronad/trunk/armagetronad/MacOS/rakelib/aabeta.rake 2009-01-01 02:36:37 UTC (rev 8717) @@ -8,7 +8,7 @@ module AA::AABeta def self.version_branch - File.read(AA::Config.src_path("major_version")).chomp + File.read(AA::Config.top_path("major_version")).chomp end RELEASES_LIST_DIR = AA::Config.generated_path("www-aabeta") Modified: armagetronad/trunk/armagetronad/MacOS/rakelib/config.rake =================================================================== --- armagetronad/trunk/armagetronad/MacOS/rakelib/config.rake 2008-12-30 19:53:57 UTC (rev 8705) +++ armagetronad/trunk/armagetronad/MacOS/rakelib/config.rake 2009-01-01 02:36:37 UTC (rev 8717) @@ -3,9 +3,9 @@ File.join(*([base] + components)) end - # A path to a file in src/ - def self.src_path(*components) - combine_path_components(SRC_DIR, *components) + # A path to a file from the top-level armagetronad directory + def self.top_path(*components) + combine_path_components(TOP_DIR, *components) end # A path to a file in MacOS/build/ @@ -40,9 +40,9 @@ def self.version if BUILD_TYPE == :development - %x("#{SRC_DIR}/batch/make/version" "#{SRC_DIR}").chomp + %x("#{TOP_DIR}/batch/make/version" "#{TOP_DIR}").chomp else - File.read("#{SRC_DIR}/src/macosx/version.h.in").scan(/#define VERSION "(.*)"/)[0][0] + File.read("#{TOP_DIR}/src/macosx/version.h.in").scan(/#define VERSION "(.*)"/)[0][0] end end @@ -52,7 +52,7 @@ end # The top-level project directory - SRC_DIR = (ENV["PROJECT_DIR"] || File.dirname(__FILE__) + "/..") + "/.." + TOP_DIR = (ENV["PROJECT_DIR"] || File.dirname(__FILE__) + "/..") + "/.." BUILD_DIR = ENV["SYMROOT"] || "build" @@ -74,7 +74,7 @@ DEDICATED ? nil : "Contents/Resources" ].compact.join("/") - BUILD_TYPE = [src_path(".svn"), src_path(".bzr")].any? { |f| File.exists?(f) } ? :development : :release + BUILD_TYPE = [top_path(".svn"), top_path(".bzr")].any? { |f| File.exists?(f) } ? :development : :release TAG_MAPPINGS = { "version" => version(), Modified: armagetronad/trunk/armagetronad/MacOS/rakelib/xcode.rake =================================================================== --- armagetronad/trunk/armagetronad/MacOS/rakelib/xcode.rake 2008-12-30 19:53:57 UTC (rev 8705) +++ armagetronad/trunk/armagetronad/MacOS/rakelib/xcode.rake 2009-01-01 02:36:37 UTC (rev 8717) @@ -3,7 +3,7 @@ def self.process_file(orig, package_dir=nil) result_file = AA::Config.generated_path(orig.ext) - orig = AA::Config.src_path(orig) + orig = AA::Config.top_path(orig) # Process the file (copy to build dir, replace tags) file result_file => [orig, directory(result_file.pathmap("%d"))] do |t| @@ -34,12 +34,12 @@ resource_included = AA::Config.combine_path_components(GENERATED_RESOURCE_DIR, "included") if AA::Config::BUILD_TYPE == :development - sh %{"#{AA::Config::SRC_DIR}/batch/make/sortresources" \\ - "#{AA::Config::SRC_DIR}/resource/proto" \\ + sh %{"#{AA::Config::TOP_DIR}/batch/make/sortresources" \\ + "#{AA::Config::TOP_DIR}/resource/proto" \\ #{AA::Config.escape_sh resource_included} \\ - "#{AA::Config::SRC_DIR}/batch/make/sortresources.py"} + "#{AA::Config::TOP_DIR}/batch/make/sortresources.py"} else - cp_r(AA::Config.src_path("resource"), AA::Config.generated_path) + cp_r(AA::Config.top_path("resource"), AA::Config.generated_path) end end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <baz...@us...> - 2009-01-07 12:09:30
|
Revision: 8759 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8759&view=rev Author: bazaarmagetron Date: 2009-01-07 12:09:14 +0000 (Wed, 07 Jan 2009) Log Message: ----------- da...@da...: Hopefully converted line endings to DOS line endings Modified Paths: -------------- armagetronad/trunk/armagetronad/minor_version armagetronad/trunk/armagetronad/win32/README.txt Added Paths: ----------- armagetronad/trunk/armagetronad/ Removed Paths: ------------- armagetronad/trunk/armagetronad/ Property changes on: armagetronad/trunk/armagetronad ___________________________________________________________________ Added: bzr:revision-info + timestamp: 2009-01-05 05:57:51.542000055 -0600 committer: da...@da... properties: branch-nick: armagetronad Added: svn:external + https://svn.sourceforge.net/svnroot/armagetronad/armagetronad/trunk/armagetronad Added: bzr:ancestry:v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs + svn-v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs:7d95bf1e-0414-0410-9756-b78462a59f44:armagetronad%2Ftrunk%2Farmagetronad:8394 svn-v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs:7d95bf1e-0414-0410-9756-b78462a59f44:armagetronad%2Ftrunk%2Farmagetronad:8715 Added: bzr:file-ids + Added: bzr:revision-id:v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs + 613 z-...@us...-20080211141509-cwbrb6hmtz9313jr 626 z-...@us...-20080214170110-rhfpd874zuogr3cm 627 z-...@us...-20080214170244-1gstsfe9yzyvrx9b 657 z-...@us...-20080301093905-0jwh1zg9srukp8fn 678 wrt...@us...-20080320130546-cr72y7d9q5a8nk7a 679 z-...@us...-20080324202056-eybvkm0gjomywbcq 680 z-...@us...-20080326104303-kpkkrwiw1fioi0rd 681 epsy-20080327213346-setzm7umdzzuk2dm 683 wrt...@us...-20080402122117-54nak33inuca02o9 684 wrt...@us...-20080402122804-2xhc8bgyrjsa09cd 685 wrt...@us...-20080418093840-cxtpql4xw2vsbmyn 686 ep...@fr...-20080418200503-q16s8az3yewn4x7a 687 ep...@fr...-20080419004917-bq4vguy9vpbkmlo3 688 wrt...@us...-20080419185850-ksm1feadrrhqigjb 689 wrt...@us...-20080423170738-zb8v72r0asm7cp52 691 ep...@fr...-20080427145818-212ave5ohdhth4ph 692 epsy46-20080428164518-07b9wsj90rf82c3y 693 epsy46-20080429194430-hq3fd6i1mnz1vrnz 694 ep...@fr...-20080518131839-uik8hj18c55boh3m 696 z-...@us...-20080618212520-e6ov1rb9b9edwt30 697 wrt...@us...-20080708142300-tu6f7ag7ak0yhdrf 698 wrt...@us...-20080727173310-pv1vq0wj01yfwgfl 699 da...@da...-20080824021014-8aacq5gfp7ktxlxz 700 da...@da...-20080824055426-l5dwhb216uteu7ca 701 da...@da...-20080824172432-lvagd99j28hq8uc1 702 da...@da...-20080824225545-ply97boo9jkqtysn 704 ep...@fr...-20081027173216-nh6d92edtwe35j2g 705 ep...@fr...-20081027203505-42bpegw0fyywzyou 706 ep...@fr...-20081027204727-jcx89jukht9ay72r 707 ep...@fr...-20081028180734-62o6e90rf020xzv8 708 ep...@fr...-20081028224044-f3myemuy87v52ilp 709 ep...@fr...-20081110193848-iksu9rmzzi7jb0qq 710 ep...@fr...-20081114212232-i1q12n375bdpl0sp 712 z-...@us...-20081211141049-wbjceadupsfss5ib 713 da...@da...-20081216223143-1hso83uxyagaubg8 716 lee...@gm...-20081220084635-zv6bpm9rar9yufy7 717 lee...@gm...-20081220085046-6rwe6cqmdlffs4rl 718 lee...@gm...-20081220085502-gpad43pu99t1e6po 719 lee...@gm...-20081220092821-q7uj4w92j6a3a7eb 720 lee...@gm...-20081220094339-k3zb139qp87r4b2w 721 lee...@gm...-20081220100858-uap7k5s22tbipzkt 722 lee...@gm...-20081220111203-rhp5p15agx73xi1k 723 lee...@gm...-20081220112757-mjp2yffddjy5s74e 724 lee...@gm...-20081220114653-k2dqt4wiizipbwas 725 lee...@gm...-20081221181637-6d0tfx7sx7syxfb6 726 lee...@gm...-20081221182603-9bkelm9x7aclb0bw 734 lee...@gm...-20081230173103-fmzio9fanap2rybf 735 lee...@gm...-20081230174204-cppkz4sumguhysa9 736 lee...@gm...-20081230174738-mecjttlpyp1i859c 737 lee...@gm...-20081230174816-qmtp2a3q8m52jsn3 738 lee...@gm...-20081230194247-q6oyx6cqfz03b2lr 739 lee...@gm...-20081231202038-odzabc3wmlqzvskt 740 lee...@gm...-20081231203835-nn2kezh1el82dn1q 741 lee...@gm...-20090101022727-myjxnrvqe5e4l1wz 743 da...@da...-20090103170253-cdtppjz8nzwhngst 744 da...@da...-20090103183413-r1852m22og3lh2uc 745 lee...@gm...-20090103212852-mvsergjd4ao1la77 746 da...@da...-20090103231550-6zn9qzo6gpj9kwu8 748 da...@da...-20090105115751-x3y9oui4xvt43crj Added: svn:ignore + compile config.sub install-sh Eclipse* configure version.h CVS doc_bak log leak.history config.cache config.log .gdbinit config.h Makefile leak.log diff scorelog.txt ladder.txt highscores.txt config.status won_matches.txt mainicon.ico .dont_update screenshot_1.bmp won_rounds.txt Makefile.global memprofile* frommaster.srv screenshot* ml astat master bindist master_list.srv big_brother master.srv *.dll *.ilk README.txt README-SDL.txt update.bat tagcvs .infiles autom4te.cache config.h.stamp Testme html.m4 var ded .beautytag* config.h.in aclocal.m4 ChangeLog INSTALL Makefile.in missing COPYING version depcomp .version.new .cvsfiles stamp-h1 touch aa_config.h aa_config.h.in Added: svk:merge + 02982148-85d2-4202-9ec6-589ac3039d34:/local/armagetronad:107d95bf1e-0414-0410-9756-b78462a59f44:/armagetronad/trunk/armagetronad:8394 7d95bf1e-0414-0410-9756-b78462a59f44:/armagetronad/trunk/armagetronad:8715 Modified: armagetronad/trunk/armagetronad/minor_version =================================================================== --- armagetronad/trunk/armagetronad/minor_version 2009-01-04 21:06:08 UTC (rev 8738) +++ armagetronad/trunk/armagetronad/minor_version 2009-01-07 12:09:14 UTC (rev 8759) @@ -1 +1 @@ -_alphaDATE +.1_alpha1 Modified: armagetronad/trunk/armagetronad/win32/README.txt =================================================================== --- armagetronad/trunk/armagetronad/win32/README.txt 2009-01-04 21:06:08 UTC (rev 8738) +++ armagetronad/trunk/armagetronad/win32/README.txt 2009-01-07 12:09:14 UTC (rev 8759) @@ -1,67 +1,67 @@ -Compiling Armagetron Advanced on Windows with Code::Blocks ----------------------------------------------------------- - -Code::Blocks is an open source, cross platform C/C++ IDE. -It has multiple compiler support, and it comes in two presentations: -MinGW bundle or Standalone for use with other compilers. - -More info and download of Code::Blocks: http://www.codeblocks.org - -Armagetron Advanced can be compiled with these compilers: -* MinGw: obtained in the MinGW bundle download of Code::Blocks -* Free Microsoft Visual C++ Toolkit 2003: http://msdn.microsoft.com/visualc/vctoolkit2003/ - -Currently I use the following nightly build of Code::Blocks: - CB_20060428_rev2395_win32_wx263.7z -You also need an additional DLL: - wxmsw26u_gcc_cb_wx2.6.3.7z - -Download Link: http://developer.berlios.de/project/showfiles.php?group_id=5358 - -The sources are distributed over two SVN modules: -* armagetronad: containing generic sources and codeblocks project files -* winlibs: containing the libraries Armagetron Advanced depends on - -You need to check out the two modules from the repository at - -https://armagetronad.svn.sourceforge.net/svnroot/armagetronad - -You can just check out -https://armagetronad.svn.sourceforge.net/svnroot/armagetronad/trunk, that -way you'll have the correct directory structure, although you'll also get -some files you don't need. One way to do that is to use TortoiseSVN -(http://tortoisesvn.tigris.org/). - -1. Create a project directory (e.g. C:\Projects\Armagetron) -2. put the armagetronad source files there -3. In the same directory, put the winlibs files -4. It should look something like this: - +- Armagetron - +- armagetronad - +- winlibs -5. Check you've got python installed and set the path to the executable - inside python.bat -6. Go to the armagetronad/win32 directory - run update_version.bat -7. Start the Armagetron workspace (Armagetron.workspace) -8. To compile you will need to change the project's target to either - Release, Debug or Profile (it defaults to Release) -9. Go to the armagetronad/win32 directory - Run the makedist.bat file to copy all neccessary files into - the build directories (dist, debug or profile). - +- Armagetron - +- armagetronad - +- build - +- dist - +- debug - +- profile - -Note: Only directories that are already present will be updated. - At the end you will get a status report about missing files. - -To create an installer you need to install the nullsoft installer development -environment (http://nsis.sourceforge.net/). After that you can right click -on armagetronad.nsi in the appropriate build directory (not in the win32 -directory, it'll fail) and select "Execute NSIS script". - -In case of problems, visit forums.armagetronad.net and ask for help. +Compiling Armagetron Advanced on Windows with Code::Blocks +---------------------------------------------------------- + +Code::Blocks is an open source, cross platform C/C++ IDE. +It has multiple compiler support, and it comes in two presentations: +MinGW bundle or Standalone for use with other compilers. + +More info and download of Code::Blocks: http://www.codeblocks.org + +Armagetron Advanced can be compiled with these compilers: +* MinGw: obtained in the MinGW bundle download of Code::Blocks +* Free Microsoft Visual C++ Toolkit 2003: http://msdn.microsoft.com/visualc/vctoolkit2003/ + +Currently I use the following nightly build of Code::Blocks: + CB_20060428_rev2395_win32_wx263.7z +You also need an additional DLL: + wxmsw26u_gcc_cb_wx2.6.3.7z + +Download Link: http://developer.berlios.de/project/showfiles.php?group_id=5358 + +The sources are distributed over two SVN modules: +* armagetronad: containing generic sources and codeblocks project files +* winlibs: containing the libraries Armagetron Advanced depends on + +You need to check out the two modules from the repository at + +https://armagetronad.svn.sourceforge.net/svnroot/armagetronad + +You can just check out +https://armagetronad.svn.sourceforge.net/svnroot/armagetronad/trunk, that +way you'll have the correct directory structure, although you'll also get +some files you don't need. One way to do that is to use TortoiseSVN +(http://tortoisesvn.tigris.org/). + +1. Create a project directory (e.g. C:\Projects\Armagetron) +2. put the armagetronad source files there +3. In the same directory, put the winlibs files +4. It should look something like this: + +- Armagetron + +- armagetronad + +- winlibs +5. Check you've got python installed and set the path to the executable + inside python.bat +6. Go to the armagetronad/win32 directory + run update_version.bat +7. Start the Armagetron workspace (Armagetron.workspace) +8. To compile you will need to change the project's target to either + Release, Debug or Profile (it defaults to Release) +9. Go to the armagetronad/win32 directory + Run the makedist.bat file to copy all neccessary files into + the build directories (dist, debug or profile). + +- Armagetron + +- armagetronad + +- build + +- dist + +- debug + +- profile + +Note: Only directories that are already present will be updated. + At the end you will get a status report about missing files. + +To create an installer you need to install the nullsoft installer development +environment (http://nsis.sourceforge.net/). After that you can right click +on armagetronad.nsi in the appropriate build directory (not in the win32 +directory, it'll fail) and select "Execute NSIS script". + +In case of problems, visit forums.armagetronad.net and ask for help. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-11 23:46:40
|
Revision: 8796 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8796&view=rev Author: z-man Date: 2009-01-11 23:46:36 +0000 (Sun, 11 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8750 to 8792: ------------------------------------------------------------------------ r8787 | bazaarmagetron | 2009-01-11 19:16:27 +0100 (Sun, 11 Jan 2009) | 2 lines Manuel Moos: Activating all builds. (not merged, outdated) ------------------------------------------------------------------------ r8786 | bazaarmagetron | 2009-01-11 19:10:35 +0100 (Sun, 11 Jan 2009) | 2 lines Manuel Moos: Added tColor.*. (not merged, outdated) ------------------------------------------------------------------------ r8784 | bazaarmagetron | 2009-01-11 16:13:46 +0100 (Sun, 11 Jan 2009) | 2 lines Manuel Moos: Added comment. ------------------------------------------------------------------------ r8783 | bazaarmagetron | 2009-01-10 23:50:06 +0100 (Sat, 10 Jan 2009) | 2 lines Manuel Moos: Don't spam about unknown tags in server config files. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8750&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp Property Changed: ---------------- armagetronad/trunk/ armagetronad/trunk/build/gentoo/overlay/games-action/armagetronad-live/armagetronad-live-0.2.8_alpha8586.ebuild Property changes on: armagetronad/trunk ___________________________________________________________________ Added: svn:mergeinfo + /armagetronad/branches/0.2.8:8751-8792 Modified: armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp 2009-01-11 23:42:20 UTC (rev 8795) +++ armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp 2009-01-11 23:46:36 UTC (rev 8796) @@ -305,6 +305,9 @@ void nServerInfo::Load(std::istream &s) { + static bool warnedAboutUnknownOptions = false; + bool warnedAboutUnknownOptionsBefore = warnedAboutUnknownOptions; + bool end = false; while (!end && s.good() && !s.eof()) { @@ -355,7 +358,18 @@ else if (id == FILTEREDNAME) nameForSorting.ReadLine(s); else - con << "Warning: unknown tag " << id << " found in server config file.\n"; + { + // ignore rest of line + tString dummy; + dummy.ReadLine( s ); + + // warn, but only on first entry + if ( !warnedAboutUnknownOptionsBefore ) + { + con << "Warning: unknown tag " << id << " found in server config file.\n"; + warnedAboutUnknownOptions = true; + } + } } queried = 0; Property changes on: armagetronad/trunk/build/gentoo/overlay/games-action/armagetronad-live/armagetronad-live-0.2.8_alpha8586.ebuild ___________________________________________________________________ Deleted: svn:mergeinfo - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-12 09:12:46
|
Revision: 8799 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8799&view=rev Author: z-man Date: 2009-01-12 09:12:42 +0000 (Mon, 12 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8792 to 8798: ------------------------------------------------------------------------ r8798 | bazaarmagetron | 2009-01-12 10:08:23 +0100 (Mon, 12 Jan 2009) | 2 lines Manuel Moos: Fixed configure path. ------------------------------------------------------------------------ r8797 | bazaarmagetron | 2009-01-12 10:02:12 +0100 (Mon, 12 Jan 2009) | 2 lines Manuel Moos: Fixed warnings by find. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8792&view=rev Modified Paths: -------------- armagetronad/trunk/build/scripts/configure armagetronad/trunk/build/scripts/winsrc Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8792 + /armagetronad/branches/0.2.8:8751-8798 Modified: armagetronad/trunk/build/scripts/configure =================================================================== --- armagetronad/trunk/build/scripts/configure 2009-01-12 09:08:23 UTC (rev 8798) +++ armagetronad/trunk/build/scripts/configure 2009-01-12 09:12:42 UTC (rev 8799) @@ -6,7 +6,7 @@ source="$1" shift -CONFIGURE=`which $source/configure` +CONFIGURE=`pwd`/${source}/configure echo cd $target cd $target Modified: armagetronad/trunk/build/scripts/winsrc =================================================================== --- armagetronad/trunk/build/scripts/winsrc 2009-01-12 09:08:23 UTC (rev 8798) +++ armagetronad/trunk/build/scripts/winsrc 2009-01-12 09:12:42 UTC (rev 8799) @@ -50,5 +50,5 @@ find $WINDIR -name "*.am" -exec rm \{\} \; find $WINDIR -name "Makefile*" -exec rm \{\} \; find $WINDIR -name "*.ghost" -exec rm \{\} \; -find $WINDIR -name "CVS" -depth -exec rm -rf \{\} \; -find $WINDIR -name "*~" -depth -exec rm -rf \{\} \; +find $WINDIR -depth -name "CVS" -exec rm -rf \{\} \; +find $WINDIR -depth -name "*~" -exec rm -rf \{\} \; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-15 09:56:58
|
Revision: 8824 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8824&view=rev Author: z-man Date: 2009-01-15 09:56:49 +0000 (Thu, 15 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8798 to 8822: ------------------------------------------------------------------------ r8822 | bazaarmagetron | 2009-01-15 02:37:25 +0100 (Thu, 15 Jan 2009) | 2 lines Daniel Lee Harple: Enabled sound again. Be sure to update to latest osxlibs package from https://sourceforge.net/project/showfiles.php?group_id=110997&package_id=266788 (not merged, diverged) ------------------------------------------------------------------------ r8820 | z-man | 2009-01-14 13:00:51 +0100 (Wed, 14 Jan 2009) | 2 lines Turned down optimization level. Seems to solve the crash issue. (not merged, diverged) ------------------------------------------------------------------------ r8819 | z-man | 2009-01-14 11:30:32 +0100 (Wed, 14 Jan 2009) | 2 lines Adapted upload to sf. I'm lazy, so I hardcoded my name this time. ------------------------------------------------------------------------ r8818 | z-man | 2009-01-14 11:30:06 +0100 (Wed, 14 Jan 2009) | 2 lines Saner packager logic. ------------------------------------------------------------------------ r8813 | bazaarmagetron | 2009-01-12 23:03:01 +0100 (Mon, 12 Jan 2009) | 2 lines Manuel Moos: Ignoring map version again. ------------------------------------------------------------------------ r8809 | bazaarmagetron | 2009-01-12 22:22:21 +0100 (Mon, 12 Jan 2009) | 2 lines Manuel Moos: Added check for map version. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8798&view=rev Modified Paths: -------------- armagetronad/trunk/build/WorkMakefile armagetronad/trunk/build/configure Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8798 + /armagetronad/branches/0.2.8:8751-8822 Modified: armagetronad/trunk/build/WorkMakefile =================================================================== --- armagetronad/trunk/build/WorkMakefile 2009-01-15 09:53:35 UTC (rev 8823) +++ armagetronad/trunk/build/WorkMakefile 2009-01-15 09:56:49 UTC (rev 8824) @@ -367,7 +367,7 @@ # ***************************************** # - cd ${UPLOAD}; echo -e "cd incoming\nmput armagetron*\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nexit" | ftp -p upload.sf.net $* + cd ${UPLOAD}; rsync -avP -e ssh * z-...@fr...:uploads/ TOEMPTYLINE=sed -e "s,^$$,," -e "t q" -e "p" -e "d" -e ": q" -e "q" Modified: armagetronad/trunk/build/configure =================================================================== --- armagetronad/trunk/build/configure 2009-01-15 09:53:35 UTC (rev 8823) +++ armagetronad/trunk/build/configure 2009-01-15 09:56:49 UTC (rev 8824) @@ -141,6 +141,8 @@ PACKAGER=$USERNAME_AABETA if test -z "$PACKAGER"; then PACKAGER="Anonymous" + WARNING=yes + echo "Warning, packager set to anonymous. Change to your simple name (no @)." fi fi @@ -333,11 +335,6 @@ echo " -> ${OSTAG_AABETA}" -if echo $PACKAGER | grep -v "@" > /dev/null; then - echo -e "\nThe packager name is not an email address.\nYou may want to correct that by editing make.conf." - WARNING=yes -fi - if test "$WARNING" = no; then echo "Everything seems OK." else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-15 10:08:33
|
Revision: 8825 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8825&view=rev Author: z-man Date: 2009-01-15 10:08:28 +0000 (Thu, 15 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8822 to 8824: ------------------------------------------------------------------------ r8823 | bazaarmagetron | 2009-01-15 10:53:35 +0100 (Thu, 15 Jan 2009) | 4 lines author: Manuel Moos Sending /team chat to sender via server controlled chat message, not as a console message. This fixes any clientside decorations. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8822&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8822 + /armagetronad/branches/0.2.8:8751-8824 Modified: armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-01-15 09:56:49 UTC (rev 8824) +++ armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-01-15 10:08:28 UTC (rev 8825) @@ -2940,20 +2940,19 @@ else if ( se_filterDarkColorTeam ) msg = tColoredString::RemoveColors ( msg, true ); - // Log message to server and sender + // Log message to server (and in previous revisions, the sender) tColoredString messageForServerAndSender = se_BuildChatString(currentTeam, p, msg); messageForServerAndSender << "\n"; if (currentTeam != NULL) // If a player has just joined the game, he is not yet on a team. Sending a /team message will crash the server { sn_ConsoleOut(messageForServerAndSender, 0); - sn_ConsoleOut(messageForServerAndSender, p->Owner()); // Send message to team-mates int numTeamPlayers = currentTeam->NumPlayers(); - for (int teamPlayerIndex = 0; teamPlayerIndex < numTeamPlayers; teamPlayerIndex++) { - if (currentTeam->Player(teamPlayerIndex)->Owner() != p->Owner()) // Do not resend the message to yourself - se_SendTeamMessage(currentTeam, p, currentTeam->Player(teamPlayerIndex), msg); + for (int teamPlayerIndex = 0; teamPlayerIndex < numTeamPlayers; teamPlayerIndex++) + { + se_SendTeamMessage(currentTeam, p, currentTeam->Player(teamPlayerIndex), msg); } // check for other players who are authorized to hear the message @@ -2986,14 +2985,13 @@ else { sn_ConsoleOut(messageForServerAndSender, 0); - sn_ConsoleOut(messageForServerAndSender, p->Owner()); // check for other spectators for( int i = se_PlayerNetIDs.Len() - 1; i >=0; --i ) { ePlayerNetID * spectator = se_PlayerNetIDs(i); - if ( se_GetManagedTeam( spectator ) == 0 && spectator != p ) + if ( se_GetManagedTeam( spectator ) == 0 ) { se_SendTeamMessage(currentTeam, p, spectator, msg); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-17 20:03:03
|
Revision: 8843 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8843&view=rev Author: z-man Date: 2009-01-17 20:02:55 +0000 (Sat, 17 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8824 to 8841: ------------------------------------------------------------------------ r8841 | bazaarmagetron | 2009-01-17 20:13:41 +0100 (Sat, 17 Jan 2009) | 1 line Manuel Moos: Merging own work.(fixes of zthread detection in acinclude) ------------------------------------------------------------------------ r8831 | bazaarmagetron | 2009-01-16 22:02:03 +0100 (Fri, 16 Jan 2009) | 2 lines epsy: /op should now give messages when resulting access level is same as original. ------------------------------------------------------------------------ r8830 | bazaarmagetron | 2009-01-16 21:19:24 +0100 (Fri, 16 Jan 2009) | 2 lines Daniel Lee Harple: Corrected a word in the english language file. ------------------------------------------------------------------------ r8826 | bazaarmagetron | 2009-01-16 16:19:55 +0100 (Fri, 16 Jan 2009) | 4 lines author: Manuel Moos Also accept authentication if client sends a server IP that matches the resolved SERVER_DNS name. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8824&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/acinclude.m4 armagetronad/trunk/armagetronad/language/english_base.txt armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp armagetronad/trunk/armagetronad/src/network/nNetwork.cpp armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp armagetronad/trunk/armagetronad/src/network/nServerInfo.h Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8824 + /armagetronad/branches/0.2.8:8751-8841 Modified: armagetronad/trunk/armagetronad/acinclude.m4 =================================================================== --- armagetronad/trunk/armagetronad/acinclude.m4 2009-01-17 20:02:39 UTC (rev 8842) +++ armagetronad/trunk/armagetronad/acinclude.m4 2009-01-17 20:02:55 UTC (rev 8843) @@ -863,12 +863,14 @@ else echo "*** Could not run ZThread test program, checking why..." + CC_OLD=${CC} + CC=${CXX} CXXFLAGS="$CXXFLAGS $ZTHREAD_CXXFLAGS" LIBS="$LIBS $ZTHREAD_LIBS" echo $LIBS; - AC_TRY_LINK([#include "zthread/ZThread.h"], + AC_TRY_LINK([#include "zthread/Task.h"], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding ZThread or finding the wrong" @@ -883,6 +885,8 @@ echo "*** exact error that occured. This usually means ZThread was incorrectly installed" echo "*** or that you have moved ZThread since it was installed. In the latter case, you" echo "*** may want to edit the zthread-config script: $ZTHREAD_CONFIG" ]) + + CC=${CC_OLD} CFLAGS="$ac_save_CXXFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" Modified: armagetronad/trunk/armagetronad/language/english_base.txt =================================================================== --- armagetronad/trunk/armagetronad/language/english_base.txt 2009-01-17 20:02:39 UTC (rev 8842) +++ armagetronad/trunk/armagetronad/language/english_base.txt 2009-01-17 20:02:55 UTC (rev 8843) @@ -2867,6 +2867,8 @@ access_level_op_self 0xff7f7f\1 denied,0xffffff can't do that to yourself :).\n access_level_op_denied_max 0xff7f7f\1 denied,0xffffff your victim already has maximal rights.\n access_level_op_denied_ai 0xff7f7f\1 denied,0xffffff your victim is an AI.\n +access_level_op_same \1: This would have no effect.\n +access_level_op_unclear \1: User is already logged in, please explicitely set an access level.\n access_level_demote \1 has been demoted to "\2" by order of \3.\n access_level_promote \1 has been promoted to "\2" by order of \3.\n @@ -2910,6 +2912,7 @@ login_error_blacklist Authority \1 is on this server's blacklist. login_error_whitelist Authority \1 is not on this server's whitelist. login_error_pharm Server adress mismatch, \1 (sent by client) != \2 (our address). Pharming suspected. If you are connecting from the LAN and get this error, either set "TRUST_LAN" on the server (only if your LAN can be fully trusted, of course) or use "SERVER_IP" to make the local IP known to the server. +login_error_pharm_cheap Server address trouble. Client sent unspecific server address. login_error_methodmismatch The local method used for auhtentication has been modified since your password was set. In the server's config files, put all commands that define authentication methods before all local password definitions. login_error_nomethod No authentication method could be found. Your client supports \1, this server supports \2, and the authentication server supports \3. login_error_nomethodlist Authentication URL \1 does not return a list of supported methods, got error code \2, content "\3". Modified: armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-01-17 20:02:39 UTC (rev 8842) +++ armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-01-17 20:02:55 UTC (rev 8843) @@ -2181,6 +2181,8 @@ static void se_ChangeAccess( ePlayerNetID * admin, std::istream & s, char const * command, OPFUNC F ) { + bool isexplicit = false; + if ( admin->GetAccessLevel() <= se_opAccessLevel ) { ePlayerNetID * victim = se_FindPlayerInChatCommand( admin, command, s ); @@ -2204,9 +2206,9 @@ } char first; s >> first; - if ( !s.eof() && !s.fail() ) { + isexplicit = true; s.unget(); int newLevel = 0; s >> newLevel; @@ -2230,8 +2232,19 @@ accessLevel = static_cast< tAccessLevel >( level ); - if ( accessLevel > admin->GetAccessLevel() ) + if ( accessLevel == victim->GetAccessLevel() ) { + if ( isexplicit ) + { + sn_ConsoleOut( tOutput( "$access_level_op_same", command ), admin->Owner() ); + } + else + { + sn_ConsoleOut( tOutput( "$access_level_op_unclear", command ), admin->Owner() ); + } + } + else if ( accessLevel > admin->GetAccessLevel() ) + { (*F)( admin, victim, accessLevel ); } else Modified: armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp 2009-01-17 20:02:39 UTC (rev 8842) +++ armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp 2009-01-17 20:02:55 UTC (rev 8843) @@ -35,6 +35,7 @@ #include "nNetwork.h" #include "nNetObject.h" #include "nSocket.h" +#include "nServerInfo.h" #include <memory> #include <string> @@ -406,6 +407,7 @@ public: nLoginProcess( int userID ) : nMachineDecorator( nMachine::GetMachine( userID ) ) + , checkAddress( true ) { // install self reference to keep this object alive selfReference_ = this; @@ -469,7 +471,7 @@ void ProcessClientAnswer( nMessage & answer ); // sanity check the server address - bool CheckServerAddress( nMessage & m ); + bool CheckServerAddress(); // and here we go again: a background task talks with the authority // and determines whether the client is authorized or not. @@ -506,6 +508,15 @@ //! pointer to self to keep the object alive while the machine exists SelfPointer selfReference_; + + //! address of socket receiving the login message + nAddress serverSocketAddress; + + //! address of login message sender + tString peerAddress; + + //! flag indicating whether the sent server address needs checking + bool checkAddress; }; @@ -897,22 +908,32 @@ // read the server address the client used for scrambling m >> serverAddress; - // sanity check it, of course :) - if ( !CheckServerAddress( m ) ) - { - // no use going on, the server address won't match, password checking will fail. - return; - } + // sanity check it later } else { serverAddress = sn_GetMyAddress(); - + if ( method.method != "bmd5" ) { con << "WARNING, client did not send the server address. Password checks may fail.\n"; } + else + { + checkAddress = false; + } } + + // store receiving socket address + nSocket const * socket = sn_Connections[m.SenderID()].socket; + if ( !socket ) + { + ReportAuthorityError( "Internal error, no receiving socket of authentication message." ); + } + serverSocketAddress = socket->GetAddress(); + + // store peer address + sn_GetAdr( m.SenderID(), peerAddress ); // and go on nMemberFunctionRunner::ScheduleMayBlock( *this, &nLoginProcess::Authorize, authority != "" ); @@ -922,51 +943,78 @@ static tSettingItem< bool > sn_TrustLANConf( "TRUST_LAN", sn_trustLAN ); // sanity check the server address -bool nLoginProcess::CheckServerAddress( nMessage & m ) +bool nLoginProcess::CheckServerAddress() { + // if no check is requested (only canm happen for old bmd5 protocol), don't check. + if ( !checkAddress ) + { + return true; + } + + // serverAddress given from client never can be *.*.*.*:*. This would + // give false positive check results because some of the methods below + // compare serverAddress to strings that may be *.*.*.*:*, and checking + // serverAddress once here is the safest and easiest way. + if ( serverAddress.StartsWith("*") ) + { + return ReportAuthorityError( tOutput("$login_error_pharm_cheap" ) ); + } + // check whether we can read our IP from the socket - nSocket const * socket = sn_Connections[m.SenderID()].socket; - if ( socket ) + tString compareAddress = serverSocketAddress.ToString(); + if ( compareAddress == serverAddress ) { - tString compareAddress = socket->GetAddress().ToString(); - if ( !compareAddress.StartsWith("*") && compareAddress == serverAddress ) - { - // everything is fine, adresses match - return true; - } + // everything is fine, adresses match + return true; } // check the incoming address, clients from the LAN should be safe if ( sn_trustLAN ) { - tString peerAddress; - sn_GetAdr( m.SenderID(), peerAddress ); if ( sn_IsLANAddress( peerAddress ) && sn_IsLANAddress( serverAddress ) ) { return true; } } - std::cout << serverAddress; + // std::cout << serverAddress; - if ( sn_GetMyAddress() == serverAddress ) + // fetch our server address. First, try the basic networking system. + tString trueServerAddress = sn_GetMyAddress(); + + if ( trueServerAddress == serverAddress ) { // all's well return true; } - tString hisServerAddress = serverAddress; - serverAddress = sn_GetMyAddress(); + // if SERVER_DNS is set, the client most likely will connect over that IP. Use it. + if ( sn_GetMyDNSName().Len() > 1 ) + { + // resolve DNS. Yes, do this every time someone logs in, IPs can change. + // after all, that's the point of setting SERVER_DNS :) + nAddress address; + address.SetHostname( sn_GetMyDNSName() ); + + address.SetPort( serverSocketAddress.GetPort() ); - // if we don't know our own address, - if ( sn_GetMyAddress().StartsWith("*") ) + // transform back to string + trueServerAddress = address.ToString(); + } + + if ( trueServerAddress == serverAddress ) { - // reject authentication. - return ReportAuthorityError( tOutput("$login_error_pharm", hisServerAddress, sn_GetMyAddress() ) ); + // all's well + return true; } + // Z-Man: can't remember what this swapping is for. Possibly to accept + // the login anyway for debugging purposes. + tString hisServerAddress = serverAddress; + serverAddress = trueServerAddress; + // reject authentication. - return ReportAuthorityError( tOutput("$login_error_pharm", hisServerAddress, sn_GetMyAddress() ) ); + return ReportAuthorityError( tOutput("$login_error_pharm", hisServerAddress, trueServerAddress ) ); } // and here we go again: a background task talks with the authority @@ -981,6 +1029,13 @@ } else { + // sanity check it server address + if ( !CheckServerAddress() ) + { + // no use going on, the server address won't match, password checking will fail. + return; + } + if ( !tRecorder::IsPlayingBack() ) { nKrawall::CheckScrambledPassword( *this, *this ); Modified: armagetronad/trunk/armagetronad/src/network/nNetwork.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-01-17 20:02:39 UTC (rev 8842) +++ armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-01-17 20:02:55 UTC (rev 8843) @@ -3192,8 +3192,12 @@ // clear peer info used for receiving memset( &peers[MAXCLIENTS+1], 0, sizeof(sockaddr) ); + // copy socket info over to [MAXCLIENTS+1] and receive. The copy + // step is important, nAuthentication.cpp relies on the socket being set. if((sn_Connections[MAXCLIENTS+1].socket = (*i).CheckNewConnection() ) != NULL) + { rec_peer(MAXCLIENTS+1); + } } } // z-man: after much thought, the server does also need to listen to the Modified: armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp 2009-01-17 20:02:39 UTC (rev 8842) +++ armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp 2009-01-17 20:02:55 UTC (rev 8843) @@ -2637,6 +2637,11 @@ static tConfItemLine sn_sbtip_official("SERVER_DNS", net_dns); +tString const & sn_GetMyDNSName() +{ + return net_dns; +} + // ******************************************************************************************* // * // * DoGetFrom Modified: armagetronad/trunk/armagetronad/src/network/nServerInfo.h =================================================================== --- armagetronad/trunk/armagetronad/src/network/nServerInfo.h 2009-01-17 20:02:39 UTC (rev 8842) +++ armagetronad/trunk/armagetronad/src/network/nServerInfo.h 2009-01-17 20:02:55 UTC (rev 8843) @@ -43,6 +43,9 @@ typedef nServerInfo* (sn_ServerInfoCreator)(); +//! return the DNS name of this machine, if set +tString const & sn_GetMyDNSName(); + //! Basic server information: everything you need to connect class nServerInfoBase { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-18 12:51:01
|
Revision: 8853 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8853&view=rev Author: z-man Date: 2009-01-18 12:50:55 +0000 (Sun, 18 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8841 to 8852: (Also: finally got gWinZone.* back in sync with 0.2.8. Future merges should be possible again, yay.) ------------------------------------------------------------------------ r8851 | bazaarmagetron | 2009-01-18 01:48:12 +0100 (Sun, 18 Jan 2009) | 2 lines Manuel Moos: Applied hoop's zone rendering patch. 'tis good. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8841&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/AUTHORS armagetronad/trunk/armagetronad/language/english_base.txt Added Paths: ----------- armagetronad/trunk/armagetronad/src/tron/gWinZone.cpp armagetronad/trunk/armagetronad/src/tron/gWinZone.h Removed Paths: ------------- armagetronad/trunk/armagetronad/src/tron/gWinZone.cpp armagetronad/trunk/armagetronad/src/tron/gWinZone.h Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8841 + /armagetronad/branches/0.2.8:8751-8852 Modified: armagetronad/trunk/armagetronad/AUTHORS =================================================================== --- armagetronad/trunk/armagetronad/AUTHORS 2009-01-18 01:47:17 UTC (rev 8852) +++ armagetronad/trunk/armagetronad/AUTHORS 2009-01-18 12:50:55 UTC (rev 8853) @@ -92,6 +92,9 @@ Tomas Birraux french accents in font +hoop + Zone rendering settings + External code merged in from ============================ Modified: armagetronad/trunk/armagetronad/language/english_base.txt =================================================================== --- armagetronad/trunk/armagetronad/language/english_base.txt 2009-01-18 01:47:17 UTC (rev 8852) +++ armagetronad/trunk/armagetronad/language/english_base.txt 2009-01-18 12:50:55 UTC (rev 8853) @@ -696,6 +696,10 @@ gl_vendor_help OpenGL system information alpha_blend_help Enable alpha blending zone_alpha_toggle_help This is XORd with ALPHA_BLEND to determine the way to draw zones +zone_segments_help How many segments the zone is formed with. Default is 11 +zone_seg_length_help The rendered percentual of every segment. Default is .5 +zone_bottom Where to put the zone along the Z axis. Default is 0.0 +zone_height The zone segments' height. Default is 5.0 smooth_shading_help Enable smooth shading text_out_help Enable console text output console_columns_help Number of characters in each line of console output Deleted: armagetronad/trunk/armagetronad/src/tron/gWinZone.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gWinZone.cpp 2009-01-18 01:47:17 UTC (rev 8852) +++ armagetronad/trunk/armagetronad/src/tron/gWinZone.cpp 2009-01-18 12:50:55 UTC (rev 8853) @@ -1,1611 +0,0 @@ -/* - -************************************************************************* - -ArmageTron -- Just another Tron Lightcycle Game in 3D. -Copyright (C) 2000 Manuel Moos (ma...@mo...) - -************************************************************************** - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*************************************************************************** - -*/ - -#include "rSDL.h" - -#include "gWinZone.h" -#include "eFloor.h" -#include "eTimer.h" -#include "eGrid.h" -#include "gCycle.h" -#include "gGame.h" -#include "eTeam.h" -#include "ePlayer.h" -#include "rRender.h" -#include "nConfig.h" -#include "tString.h" -#include "rScreen.h" -#include "eSoundMixer.h" - -#include <time.h> -#include <algorithm> -#include <functional> -#include <deque> - -static int sg_zoneAlphaToggle = 0; -static tSettingItem<int> sg_zoneAlphaToggleConf( "ZONE_ALPHA_TOGGLE", sg_zoneAlphaToggle ); - -std::deque<gZone *> sg_Zones; - -static int sg_zoneDeath = 1; -static tSettingItem<int> sg_zoneDeathConf( "WIN_ZONE_DEATHS", sg_zoneDeath ); - -REAL sg_expansionSpeed = 1.0f; -REAL sg_initialSize = 5.0f; - -static nSettingItem< REAL > sg_expansionSpeedConf( "WIN_ZONE_EXPANSION", sg_expansionSpeed ); -static nSettingItem< REAL > sg_initialSizeConf( "WIN_ZONE_INITIAL_SIZE", sg_initialSize ); - -//! creates a win or death zone (according to configuration) at the specified position -gZone * sg_CreateWinDeathZone( eGrid * grid, const eCoord & pos ) -{ - gZone * ret = NULL; - if ( sg_zoneDeath ) - { - ret = tNEW( gDeathZoneHack( grid, pos ) ); - sn_ConsoleOut( "$instant_death_activated" ); - } - else - { - ret = tNEW( gWinZoneHack( grid, pos ) ); - if ( sg_currentSettings->gameType != gFREESTYLE ) - { - sn_ConsoleOut( "$instant_win_activated" ); - } - else - { - sn_ConsoleOut( "$instant_round_end_activated" ); - } - } - - // initialize radius and expansion speed - static_cast<eGameObject*>(ret)->Timestep( se_GameTime() ); - ret->SetReferenceTime(); - ret->SetRadius( sg_initialSize ); - ret->SetExpansionSpeed( sg_expansionSpeed ); - ret->SetRotationSpeed( .3f ); - - return ret; -} - -// number of segments to render a zone with -static const int sg_segments = 11; - -// ******************************************************************************* -// * -// * EvaluateFunctionNow -// * -// ******************************************************************************* -//! -//! @param f function to evaluate -//! @return the function's value at lastTime - referenceTime_ -//! -// ******************************************************************************* - -inline REAL gZone::EvaluateFunctionNow( tFunction const & f ) const -{ - return f( lastTime - referenceTime_ ); -} - -// ******************************************************************************* -// * -// * SetFunctionNow -// * -// ******************************************************************************* -//! -//! @param f function to modify -//! @param value value the function should have at lastTime - referenceTime_ -//! -// ******************************************************************************* - -inline void gZone::SetFunctionNow( tFunction & f, REAL value ) const -{ - f.SetOffset( value + f.GetSlope() * ( referenceTime_ - lastTime ) ); -} - -// ******************************************************************************* -// * -// * gZone -// * -// ******************************************************************************* -//! -//! @param grid Grid to put the zone into -//! @param pos Position to spawn the zone at -//! -// ******************************************************************************* - -gZone::gZone( eGrid * grid, const eCoord & pos ) - :eNetGameObject( grid, pos, eCoord( 0,0 ), NULL, true ), rotation_(1,0) -{ - // store creation time - referenceTime_ = createTime_ = lastTime = 0; - - // add to game grid - this->AddToList(); - - sg_Zones.push_back(this); - - // initialize position functions - SetPosition( pos ); - eSoundMixer* mixer = eSoundMixer::GetMixer(); - mixer->PushButton(ZONE_SPAWN, pos); -} - -// ******************************************************************************* -// * -// * gZone -// * -// ******************************************************************************* -//! -//! @param m Message to read creation data from -//! -// ******************************************************************************* - -gZone::gZone( nMessage & m ) - :eNetGameObject( m ), rotation_(1,0) -{ - // read creation time - m >> createTime_; - referenceTime_ = lastTime = createTime_; - - // initialize color to white, ReadSync will fill in the true value if available - color_.r_ = color_.g_ = color_.b_ = 1.0f; - - // add to game grid - this->AddToList(); - - sg_Zones.push_back(this); - - // initialize position functions - SetPosition( pos ); - eSoundMixer* mixer = eSoundMixer::GetMixer(); - mixer->PushButton(ZONE_SPAWN, pos); -} - -// ******************************************************************************* -// * -// * ~gZone -// * -// ******************************************************************************* -//! -//! -// ******************************************************************************* - -gZone::~gZone( void ) -{ - sg_Zones.erase( - std::find_if( - sg_Zones.begin(), - sg_Zones.end(), - std::bind2nd( - std::equal_to<gZone *>(), - this) - ) - ); -} - -// ******************************************************************************* -// * -// * WriteCreate -// * -// ******************************************************************************* -//! -//! @param m Message to write creation data to -//! -// ******************************************************************************* - -void gZone::WriteCreate( nMessage & m ) -{ - // delegate - eNetGameObject::WriteCreate( m ); - - m << createTime_; -} - -// ******************************************************************************* -// * -// * WriteSync -// * -// ******************************************************************************* -//! -//! @param m Message to write sync data to -//! -// ******************************************************************************* - -void gZone::WriteSync( nMessage & m ) -{ - // delegate - eNetGameObject::WriteSync( m ); - - // write color - m << color_.r_; - m << color_.g_; - m << color_.b_; - - // write reference time and functions - m << referenceTime_; - m << posx_; - m << posy_; - m << radius_; - - // write rotation speed - m << rotationSpeed_; -} - -// ******************************************************************************* -// * -// * ReadSync -// * -// ******************************************************************************* -//! -//! @param m Message to read sync data from -//! -// ******************************************************************************* - -void gZone::ReadSync( nMessage & m ) -{ - // delegage - eNetGameObject::ReadSync( m ); - - // read color - if (!m.End()) - { - m >> color_.r_; - m >> color_.g_; - m >> color_.b_; - se_MakeColorValid(color_.r_, color_.g_, color_.b_, 1.0f); - } - - // read reference time and functions - if (!m.End()) - { - m >> referenceTime_; - m >> posx_; - m >> posy_; - m >> radius_; - } - else - { - referenceTime_ = createTime_; - - // take old default values - this->radius_.SetOffset( sg_initialSize ); - this->radius_.SetSlope( sg_expansionSpeed ); - SetPosition( pos ); - SetVelocity( eCoord() ); - } - - // read rotation speed - if (!m.End()) - { - m >> rotationSpeed_; - } - else - { - // set fixed values - SetRotationSpeed( .3f ); - SetRotationAcceleration( 0.0f ); - } -} - -// ******************************************************************************* -// * -// * Timestep -// * -// ******************************************************************************* -//! -//! @param time the current time -//! -// ******************************************************************************* - -bool gZone::Timestep( REAL time ) -{ - // rotate - REAL speed = GetRotationSpeed(); - REAL angle = ( time - lastTime ) * speed; - // angle /= ( 1 + 2 * 3.14159 * angle/sg_segments ); - rotation_ = rotation_.Turn( cos( angle ), sin( angle ) ); - - // move to new position - REAL dt = time - referenceTime_; - Move( eCoord( posx_( dt ), posy_( dt ) ), lastTime, time ); - - // update time - lastTime = time; - - // kill this zone if it shrunk down to zero radius - if ( GetExpansionSpeed() < 0 && GetRadius() <= 0 ) - { - OnVanish(); - return true; - } - - return false; -} - -// ******************************************************************************* -// * -// * OnVanish -// * -// ******************************************************************************* -//! -//! -// ******************************************************************************* - -void gZone::OnVanish( void ) -{ -} - -// ******************************************************************************* -// * -// * InteractWith -// * -// ******************************************************************************* -//! -//! @param target the other game object -//! @param time the current time -//! @param recursion if set to true, don't recurse into other InteractWith functions (quite silly now that I think about it...) -//! -// ******************************************************************************* - -void gZone::InteractWith( eGameObject * target, REAL time, int recursion ) -{ - gCycle* prey = dynamic_cast< gCycle* >( target ); - if ( prey ) - { - REAL r = this->Radius(); - if ( ( prey->Position() - this->Position() ).NormSquared() < r*r ) - { - if ( prey->Player() && prey->Alive() ) - { - OnEnter( prey, time ); - } - } - } -} - -// ******************************************************************************* -// * -// * OnEnter -// * -// ******************************************************************************* -//! -//! @param target the cycle that has been found inside the zone -//! @param time the current time -//! -// ******************************************************************************* - -void gZone::OnEnter( gCycle * target, REAL time ) -{ -} - -// the zone's network initializator -static nNOInitialisator<gZone> zone_init(340,"zone"); - -// ******************************************************************************* -// * -// * CreatorDescriptor -// * -// ******************************************************************************* -//! -//! @return -//! -// ******************************************************************************* - -nDescriptor & gZone::CreatorDescriptor( void ) const -{ - return zone_init; -} - -// ******************************************************************************* -// * -// * Radius -// * -// ******************************************************************************* -//! -//! @return -//! -// ******************************************************************************* - -REAL gZone::Radius( void ) const -{ - return GetRadius(); -} - -// ******************************************************************************* -// * -// * Render -// * -// ******************************************************************************* -//! -//! @param cam the camera used for rendering -//! -// ******************************************************************************* - -void gZone::Render( const eCamera * cam ) -{ -#ifndef DEDICATED - - color_.a_ = ( lastTime - createTime_ ) * .2f; - if ( color_.a_ > .7f ) - color_.a_ = .7f; - if ( color_.a_ <= 0 ) - return; - - GLfloat m[4][4]={{rotation_.x,rotation_.y,0,0}, - {-rotation_.y,rotation_.x,0,0}, - {0,0,1,0}, - {pos.x,pos.y,0,1}}; - - ModelMatrix(); - glPushMatrix(); - - glDisable(GL_LIGHT0); - glDisable(GL_LIGHT1); - glDisable(GL_LIGHTING); - glDisable(GL_CULL_FACE); - glDepthMask(GL_FALSE); - glBlendFunc( GL_SRC_ALPHA, GL_ONE ); - - - //glDisable(GL_TEXTURE); - glDisable(GL_TEXTURE_2D); - - // glTranslatef(pos.x,pos.y,0); - - glMultMatrixf(&m[0][0]); - // glScalef(.5,.5,.5); - - bool useAlpha = sr_alphaBlend ? !sg_zoneAlphaToggle : sg_zoneAlphaToggle; - - if ( useAlpha ) - BeginQuads(); - else - BeginLineStrip(); - - const REAL seglen = .2f; - const REAL bot = 0.0f; - const REAL top = 5.0f; // + ( lastTime - createTime_ ) * .1f; - - color_.Apply(); - - REAL r = Radius(); - for ( int i = sg_segments - 1; i>=0; --i ) - { - REAL a = i * 2 * 3.14159 / REAL( sg_segments ); - REAL b = a + seglen; - - REAL sa = r * sin(a); - REAL ca = r * cos(a); - REAL sb = r * sin(b); - REAL cb = r * cos(b); - - glVertex3f(sa, ca, bot); - glVertex3f(sa, ca, top); - glVertex3f(sb, cb, top); - glVertex3f(sb, cb, bot); - - if ( !useAlpha ) - { - glVertex3f(sa, ca, bot); - RenderEnd(); - BeginLineStrip(); - } - } - - RenderEnd(); - - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glDepthMask(GL_TRUE); - - glPopMatrix(); -#endif -} - -void gZone::Render2D(tCoord) const { -#ifndef DEDICATED - if ( color_.a_ <= 0 ) - return; - - GLfloat m[4][4]={{rotation_.x,rotation_.y,0,0}, - {-rotation_.y,rotation_.x,0,0}, - {0,0,1,0}, - {pos.x,pos.y,0,1}}; - - ModelMatrix(); - glPushMatrix(); - - glMultMatrixf(&m[0][0]); - // glScalef(.5,.5,.5); - - BeginLines(); - - const REAL seglen = .2f; - - color_.Apply(); - - REAL r = Radius(); - for ( int i = sg_segments - 1; i>=0; --i ) - { - REAL a = i * 2 * 3.14159 / REAL( sg_segments ); - REAL b = a + seglen; - - REAL sa = r * sin(a); - REAL ca = r * cos(a); - REAL sb = r * sin(b); - REAL cb = r * cos(b); - - glVertex2f(sa, ca); - glVertex2f(sb, cb); - } - - RenderEnd(); - - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glDepthMask(GL_TRUE); - - glPopMatrix(); -#endif -} - - -// ******************************************************************************* -// * -// * RendersAlpha -// * -// ******************************************************************************* -//! -//! @return True if alpha blending is used -//! -// ******************************************************************************* -bool gZone::RendersAlpha() const -{ - return sr_alphaBlend; -} - -// ******************************************************************************* -// * -// * gWinZoneHack -// * -// ******************************************************************************* -//! -//! @param grid Grid to put the zone into -//! @param pos Position to spawn the zone at -//! -// ******************************************************************************* - -gWinZoneHack::gWinZoneHack( eGrid * grid, const eCoord & pos ) - :gZone( grid, pos ) -{ - color_.r_ = 0.0f; - color_.g_ = 1.0f; - color_.b_ = 0.0f; -} - -// ******************************************************************************* -// * -// * gWinZoneHack -// * -// ******************************************************************************* -//! -//! @param m Message to read creation data from -//! @param null -//! -// ******************************************************************************* - -gWinZoneHack::gWinZoneHack( nMessage & m ) - : gZone( m ) -{ -} - -// ******************************************************************************* -// * -// * ~gWinZoneHack -// * -// ******************************************************************************* -//! -//! -// ******************************************************************************* - -gWinZoneHack::~gWinZoneHack( void ) -{ -} - -// ******************************************************************************* -// * -// * OnEnter -// * -// ******************************************************************************* -//! -//! @param target the cycle that has been found inside the zone -//! @param time the current time -//! -// ******************************************************************************* - -void gWinZoneHack::OnEnter( gCycle * target, REAL time ) -{ - static const char* message="$player_win_instant"; - sg_DeclareWinner( target->Player()->CurrentTeam(), message ); - - // let zone vanish - if ( GetExpansionSpeed() >= 0 ) - { - SetReferenceTime(); - SetExpansionSpeed( -GetRadius()*.5 ); - RequestSync(); - } -} - -// ******************************************************************************* -// * -// * gDeathZoneHack -// * -// ******************************************************************************* -//! -//! @param grid Grid to put the zone into -//! @param pos Position to spawn the zone at -//! -// ******************************************************************************* - -gDeathZoneHack::gDeathZoneHack( eGrid * grid, const eCoord & pos ) - :gZone( grid, pos ) -{ - color_.r_ = 1.0f; - color_.g_ = 0.0f; - color_.b_ = 0.0f; -} - -// ******************************************************************************* -// * -// * gDeathZoneHack -// * -// ******************************************************************************* -//! -//! @param m Message to read creation data from -//! @param null -//! -// ******************************************************************************* - -gDeathZoneHack::gDeathZoneHack( nMessage & m ) - : gZone( m ) -{ -} - -// ******************************************************************************* -// * -// * ~gDeathZoneHack -// * -// ******************************************************************************* -//! -//! -// ******************************************************************************* - -gDeathZoneHack::~gDeathZoneHack( void ) -{ -} - -static int score_deathzone=-1; -static tSettingItem<int> s_dz("SCORE_DEATHZONE",score_deathzone); - -// ******************************************************************************* -// * -// * OnEnter -// * -// ******************************************************************************* -//! -//! @param target the cycle that has been found inside the zone -//! @param time the current time -//! -// ******************************************************************************* - -void gDeathZoneHack::OnEnter( gCycle * target, REAL time ) -{ - target->Player()->AddScore(score_deathzone, tOutput(), "$player_lose_suicide"); - target->Kill(); -} - -// ******************************************************************************* -// * -// * gBaseZoneHack -// * -// ******************************************************************************* -//! -//! @param grid Grid to put the zone into -//! @param pos Position to spawn the zone at -//! -// ******************************************************************************* - -gBaseZoneHack::gBaseZoneHack( eGrid * grid, const eCoord & pos ) - :gZone( grid, pos), onlySurvivor_( false ), currentState_( State_Safe ) -{ - enemiesInside_ = ownersInside_ = 0; - conquered_ = 0; - lastSync_ = -10; - teamDistance_ = 0; - lastEnemyContact_ = se_GameTime(); -} - -// ******************************************************************************* -// * -// * gBaseZoneHack -// * -// ******************************************************************************* -//! -//! @param m Message to read creation data from -//! -// ******************************************************************************* - -gBaseZoneHack::gBaseZoneHack( nMessage & m ) - : gZone( m ), onlySurvivor_( false ), currentState_( State_Safe ) -{ - enemiesInside_ = ownersInside_ = 0; - conquered_ = 0; - lastSync_ = -10; - teamDistance_ = 0; - lastEnemyContact_ = se_GameTime(); -} - -// ******************************************************************************* -// * -// * ~gBaseZoneHack -// * -// ******************************************************************************* -//! -//! -// ******************************************************************************* - -gBaseZoneHack::~gBaseZoneHack( void ) -{ -} - -REAL sg_conquestRate = .5; -REAL sg_defendRate = .25; -REAL sg_conquestDecayRate = .1; - -static tSettingItem< REAL > sg_conquestRateConf( "FORTRESS_CONQUEST_RATE", sg_conquestRate ); -static tSettingItem< REAL > sg_defendRateConf( "FORTRESS_DEFEND_RATE", sg_defendRate ); -static tSettingItem< REAL > sg_conquestDecayRateConf( "FORTRESS_CONQUEST_DECAY_RATE", sg_conquestDecayRate ); - -// time with no enemy inside a zone before it collapses harmlessly -static REAL sg_conquestTimeout = 0; -static tSettingItem< REAL > sg_conquestTimeoutConf( "FORTRESS_CONQUEST_TIMEOUT", sg_conquestTimeout ); - -// kill at least than many players from the team that just got its zone conquered -static int sg_onConquestKillMin = 0; -static tSettingItem< int > sg_onConquestKillMinConfig( "FORTRESS_CONQUERED_KILL_MIN", sg_onConquestKillMin ); - -// and at least this ratio -static REAL sg_onConquestKillRatio = 0; -static tSettingItem< REAL > sg_onConquestKillRationConfig( "FORTRESS_CONQUERED_KILL_RATIO", sg_onConquestKillRatio ); - -// score you get for conquering a zone -static int sg_onConquestScore = 0; -static tSettingItem< int > sg_onConquestConquestScoreConfig( "FORTRESS_CONQUERED_SCORE", sg_onConquestScore ); - -// flag indicating whether the team conquering the first zone wins (good for one on one matches) -static int sg_onConquestWin = 1; -static tSettingItem< int > sg_onConquestConquestWinConfig( "FORTRESS_CONQUERED_WIN", sg_onConquestWin ); - -// maximal number of base zones ownable by a team -static int sg_baseZonesPerTeam = 0; -static tSettingItem< int > sg_baseZonesPerTeamConfig( "FORTRESS_MAX_PER_TEAM", sg_baseZonesPerTeam ); - -// count zones belonging to the given team. -// fill in count and the zone that is farthest to the team. -void gBaseZoneHack::CountZonesOfTeam( eGrid const * grid, eTeam * otherTeam, int & count, gBaseZoneHack * & farthest ) -{ - count = 0; - farthest = NULL; - - // check whether other zones are already registered to that team - const tList<eGameObject>& gameObjects = grid->GameObjects(); - for (int j=gameObjects.Len()-1;j>=0;j--) - { - gBaseZoneHack *otherZone=dynamic_cast<gBaseZoneHack *>(gameObjects(j)); - - if ( otherZone && otherTeam == otherZone->Team() ) - { - count++; - if ( !farthest || otherZone->teamDistance_ > farthest->teamDistance_ ) - farthest = otherZone; - } - } -} - - -// ******************************************************************************* -// * -// * Timestep -// * -// ******************************************************************************* -//! -//! @param time the current time -//! -// ******************************************************************************* - -bool gBaseZoneHack::Timestep( REAL time ) -{ - if ( currentState_ == State_Conquering ) - { - // let zone vanish - SetReferenceTime(); - SetExpansionSpeed( -GetRadius()*.5 ); - SetRotationAcceleration( -GetRotationSpeed()*.4 ); - RequestSync(); - - currentState_ = State_Conquered; - } - - REAL dt = time - lastTime; - - // conquest going on - REAL conquest = sg_conquestRate * enemiesInside_ - sg_defendRate * ownersInside_ - sg_conquestDecayRate; - conquered_ += dt * conquest; - - // clamp - if ( conquered_ < 0 ) - { - conquered_ = 0; - conquest = 0; - } - if ( conquered_ > 1.01 ) - { - conquered_ = 1.01; - conquest = 0; - } - - // set speed according to conquest status - if ( currentState_ == State_Safe ) - { - REAL maxSpeed = 10 * ( 2 * 3.141 ) / sg_segments; - REAL omega = .3 + conquered_ * conquered_ * maxSpeed; - REAL omegaDot = 2 * conquered_ * conquest * maxSpeed; - - // determine the time since the last sync (exaggerate for smoother motion in local games) - REAL timeStep = lastTime - lastSync_; - if ( sn_GetNetState() != nSERVER ) - timeStep *= 100; - - if ( sn_GetNetState() != nCLIENT && - ( ( fabs( omega - GetRotationSpeed() ) + fabs( omegaDot - GetRotationAcceleration() ) ) * timeStep > .5 ) ) - { - SetRotationSpeed( omega ); - SetRotationAcceleration( omegaDot ); - SetReferenceTime(); - RequestSync(); - lastSync_ = lastTime; - } - - - // check for enemy contact timeout - if ( sg_conquestTimeout > 0 && lastEnemyContact_ + sg_conquestTimeout < time ) - { - enemies_.clear(); - - // if the zone would collapse without defenders, let it collapse now. A smart defender would - // have left the zone to let it collapse anyway. - if ( sg_conquestDecayRate < 0 ) - { - if ( team ) - sn_ConsoleOut( tOutput( "$zone_collapse_harmless", team->Name() ) ); - conquered_ = 1.0; - } - } - - // check whether the zone got conquered - if ( conquered_ >= 1 ) - { - currentState_ = State_Conquering; - OnConquest(); - } - } - - - // reset counts - enemiesInside_ = ownersInside_ = 0; - - // determine the owning team: the one that has a player spawned closest - - // find the closest player - if ( !team ) - { - teamDistance_ = 0; - const tList<eGameObject>& gameObjects = Grid()->GameObjects(); - gCycle * closest = NULL; - REAL closestDistance = 0; - for (int i=gameObjects.Len()-1;i>=0;i--) - { - gCycle *other=dynamic_cast<gCycle *>(gameObjects(i)); - - if (other ) - { - eTeam * otherTeam = other->Player()->CurrentTeam(); - eCoord otherpos = other->Position() - pos; - REAL distance = otherpos.NormSquared(); - if ( !closest || distance < closestDistance ) - { - // check whether other zones are already registered to that team - gBaseZoneHack * farthest = NULL; - int count = 0; - if ( sg_baseZonesPerTeam > 0 ) - CountZonesOfTeam( Grid(), otherTeam, count, farthest ); - - // only set team if not too many closer other zones are registered - if ( sg_baseZonesPerTeam == 0 || count < sg_baseZonesPerTeam || farthest->teamDistance_ > distance ) - { - closest = other; - closestDistance = distance; - } - } - } - } - - if ( closest ) - { - // take over team and color - team = closest->Player()->CurrentTeam(); - color_.r_ = team->R()/15.0; - color_.g_ = team->G()/15.0; - color_.b_ = team->B()/15.0; - teamDistance_ = closestDistance; - - RequestSync(); - } - - // if this zone does not belong to a team, discard it. - if ( !team ) - { - return true; - } - - // check other zones owned by the same team. Discard the one farthest away - // if the max count is exceeded - if ( team && sg_baseZonesPerTeam > 0 ) - { - gBaseZoneHack * farthest = 0; - int count = 0; - CountZonesOfTeam( Grid(), team, count, farthest ); - - // discard team of farthest zone - if ( count > sg_baseZonesPerTeam ) - farthest->team = NULL; - } - } - - - // delegate - bool ret = gZone::Timestep( time ); - - // reward survival - if ( !ret && onlySurvivor_ ) - { - const char* message= ( eTeam::teams.Len() > 2 || sg_onConquestScore ) ? "$player_win_survive" : "$player_win_conquest"; - sg_DeclareWinner( team, message ); - } - - return ret; -} - -// ******************************************************************************* -// * -// * OnVanish -// * -// ******************************************************************************* -//! -//! -// ******************************************************************************* - -void gBaseZoneHack::OnVanish( void ) -{ - if (!team) - return; - - CheckSurvivor(); - - // kill the closest owners of the zone - if ( currentState_ != State_Safe && ( enemies_.size() > 0 || sg_defendRate < 0 ) ) - { - int kills = int( sg_onConquestKillRatio * team->NumPlayers() ); - kills = kills > sg_onConquestKillMin ? kills : sg_onConquestKillMin; - - while ( kills > 0 ) - { - -- kills; - - ePlayerNetID * closest = NULL; - REAL closestDistance = 0; - - // find the closest living owner - for ( int i = team->NumPlayers()-1; i >= 0; --i ) - { - ePlayerNetID * player = team->Player(i); - eNetGameObject * object = player->Object(); - if ( object && object->Alive() ) - { - eCoord otherpos = object->Position() - pos; - REAL distance = otherpos.NormSquared(); - if ( !closest || distance < closestDistance ) - { - closest = player; - closestDistance = distance; - } - } - } - - if ( closest ) - { - sn_ConsoleOut( tOutput("$player_kill_collapse", closest->GetName() ) ); - closest->Object()->Kill(); - } - } - } -} - -// ******************************************************************************* -// * -// * OnConquest -// * -// ******************************************************************************* -//! -//! -// ******************************************************************************* - -static eLadderLogWriter sg_basezoneConqueredWriter("BASEZONE_CONQUERED", true); -static eLadderLogWriter sg_basezoneConquererWriter("BASEZONE_CONQUERER", true); - -void gBaseZoneHack::OnConquest( void ) -{ - if ( team ) - { - sg_basezoneConqueredWriter << ePlayerNetID::FilterName(team->Name()) << GetPosition().x << GetPosition().y; - sg_basezoneConqueredWriter.write(); - } - float rr = GetRadius(); - rr *= rr; - for(int i = se_PlayerNetIDs.Len()-1; i >=0; --i) { - ePlayerNetID *player = se_PlayerNetIDs(i); - if(!player) { - continue; - } - gCycle *cycle = dynamic_cast<gCycle *>(player->Object()); - if(!cycle) { - continue; - } - if(cycle->Alive() && (cycle->Position() - Position()).NormSquared() < rr) { - sg_basezoneConquererWriter << player->GetUserName(); - sg_basezoneConquererWriter.write(); - } - } - - // calculate score. If nobody really was inside the zone any more, half it. - int totalScore = sg_onConquestScore; - if ( 0 == enemiesInside_ ) - totalScore /= 2; - - // eliminate dead enemies - TeamArray enemiesAlive; - for ( TeamArray::iterator iter = enemies_.begin(); iter != enemies_.end(); ++iter ) - { - eTeam* team = *iter; - if ( team->Alive() ) - enemiesAlive.push_back( team ); - } - enemies_ = enemiesAlive; - - // add score for successful conquest, divided equally between the teams that are - // inside the zone - if ( totalScore && enemies_.size() > 0 ) - { - tOutput win; - if ( team ) - { - win.SetTemplateParameter( 3, team->Name() ); - win << "$player_win_conquest_specific"; - } - else - { - win << "$player_win_conquest"; - } - - int score = totalScore / enemies_.size(); - for ( TeamArray::iterator iter = enemies_.begin(); iter != enemies_.end(); ++iter ) - { - (*iter)->AddScore( score, win, tOutput() ); - } - } - - // trigger immediate win - if ( sg_onConquestWin && enemies_.size() > 0 ) - { - static const char* message="$player_win_conquest"; - sg_DeclareWinner( enemies_[0], message ); - } - - CheckSurvivor(); -} - -// if this flag is enabled, the last team with a non-conquered zone wins the round. -static int sg_onSurviveWin = 1; -static tSettingItem< int > sg_onSurviveWinConfig( "FORTRESS_SURVIVE_WIN", sg_onSurviveWin ); - -// ******************************************************************************* -// * -// * CheckSurvivor -// * -// ******************************************************************************* -//! -//! -// ******************************************************************************* - -void gBaseZoneHack::CheckSurvivor( void ) -{ - // test if there is only one team with non-conquered zones left - if ( sg_onSurviveWin ) - { - // find surviving team and test whether it is the only one - gBaseZoneHack * survivor = 0; - bool onlySurvivor = true; - - const tList<eGameObject>& gameObjects = Grid()->GameObjects(); - for (int i=gameObjects.Len()-1;i>=0 && onlySurvivor;i--){ - gBaseZoneHack *other=dynamic_cast<gBaseZoneHack *>(gameObjects(i)); - - if ( other && other->currentState_ == State_Safe && other->team ) - { - if ( survivor && survivor->team != other->team ) - onlySurvivor = false; - else - survivor = other; - } - } - - // reward it later - if ( onlySurvivor && survivor ) - { - survivor->onlySurvivor_ = true; - } - } -} - -// ******************************************************************************* -// * -// * OnEnter -// * -// ******************************************************************************* -//! -//! @param target the cycle that has been found inside the zone -//! @param time the current time -//! -// ******************************************************************************* - -void gBaseZoneHack::OnEnter( gCycle * target, REAL time ) -{ - // determine the team of the player - tASSERT( target ); - if ( !target->Player() ) - return; - tJUST_CONTROLLED_PTR< eTeam > otherTeam = target->Player()->CurrentTeam(); - if (!otherTeam) - return; - if ( currentState_ != State_Safe ) - return; - - // remember who is inside - if ( team == otherTeam ) - { - ++ ownersInside_; - } - else if ( team ) - { - if ( enemiesInside_ == 0 ) - enemies_.clear(); - - ++ enemiesInside_; - if ( std::find( enemies_.begin(), enemies_.end(), otherTeam ) == enemies_.end() ) - enemies_.push_back( otherTeam ); - - lastEnemyContact_ = time; - } -} - -// ******************************************************************************* -// * -// * GetPosition -// * -// ******************************************************************************* -//! -//! @return the current position -//! -// ******************************************************************************* - -eCoord gZone::GetPosition( void ) const -{ - eCoord ret; - GetPosition( ret ); - return ret; -} - -// ******************************************************************************* -// * -// * GetPosition -// * -// ******************************************************************************* -//! -//! @param position the current position to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone const & gZone::GetPosition( eCoord & position ) const -{ - position.x = EvaluateFunctionNow( posx_ ); - position.y = EvaluateFunctionNow( posy_ ); - return *this; -} - -// ******************************************************************************* -// * -// * SetPosition -// * -// ******************************************************************************* -//! -//! @param position the current position to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone & gZone::SetPosition( eCoord const & position ) -{ - SetFunctionNow( posx_, position.x ); - SetFunctionNow( posy_, position.y ); - return *this; -} - -// ******************************************************************************* -// * -// * GetVelocity -// * -// ******************************************************************************* -//! -//! @return the current velocity -//! -// ******************************************************************************* - -eCoord gZone::GetVelocity( void ) const -{ - eCoord ret; - GetVelocity( ret ); - - return ret; -} - -// ******************************************************************************* -// * -// * GetVelocity -// * -// ******************************************************************************* -//! -//! @param velocity the current velocity to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone const & gZone::GetVelocity( eCoord & velocity ) const -{ - velocity.x = posx_.GetSlope(); - velocity.y = posy_.GetSlope(); - - return *this; -} - -// ******************************************************************************* -// * -// * SetVelocity -// * -// ******************************************************************************* -//! -//! @param velocity the current velocity to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone & gZone::SetVelocity( eCoord const & velocity ) -{ - // backup position - eCoord pos; - GetPosition( pos ); - - posx_.SetSlope( velocity.x ); - posy_.SetSlope( velocity.y ); - - // restore position - SetPosition( pos ); - - return *this; -} - -// ******************************************************************************* -// * -// * GetRadius -// * -// ******************************************************************************* -//! -//! @return the current radius -//! -// ******************************************************************************* - -REAL gZone::GetRadius( void ) const -{ - REAL ret = EvaluateFunctionNow( this->radius_ ); - ret = ret > 0 ? ret : 0; - - return ret; -} - -// ******************************************************************************* -// * -// * GetRadius -// * -// ******************************************************************************* -//! -//! @param radius the current radius to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone const & gZone::GetRadius( REAL & radius ) const -{ - radius = GetRadius(); - - return *this; -} - -// ******************************************************************************* -// * -// * SetRadius -// * -// ******************************************************************************* -//! -//! @param radius the current radius to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone & gZone::SetRadius( REAL radius ) -{ - SetFunctionNow( this->radius_, radius ); - - return *this; -} - -// ******************************************************************************* -// * -// * GetExpansionSpeed -// * -// ******************************************************************************* -//! -//! @return the current expansion speed -//! -// ******************************************************************************* - -REAL gZone::GetExpansionSpeed( void ) const -{ - return this->radius_.GetSlope(); -} - -// ******************************************************************************* -// * -// * GetExpansionSpeed -// * -// ******************************************************************************* -//! -//! @param expansionSpeed the current expansion speed to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone const & gZone::GetExpansionSpeed( REAL & expansionSpeed ) const -{ - expansionSpeed = this->radius_.GetSlope(); - - return *this; -} - -// ******************************************************************************* -// * -// * SetExpansionSpeed -// * -// ******************************************************************************* -//! -//! @param expansionSpeed the current expansion speed to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone & gZone::SetExpansionSpeed( REAL expansionSpeed ) -{ - REAL r = EvaluateFunctionNow( this->radius_ ); - this->radius_.SetSlope( expansionSpeed ); - SetRadius( r ); - - return *this; -} - -// ******************************************************************************* -// * -// * SetReferenceTime -// * -// ******************************************************************************* -//! -//! -// ******************************************************************************* - -void gZone::SetReferenceTime( void ) -{ - // set offsets to current values - this->posx_.SetOffset( EvaluateFunctionNow( this->posx_ ) ); - this->posy_.SetOffset( EvaluateFunctionNow( this->posy_ ) ); - this->radius_.SetOffset( EvaluateFunctionNow( this->radius_ ) ); - this->rotationSpeed_.SetOffset( EvaluateFunctionNow( this->rotationSpeed_ ) ); - - // reset time - this->referenceTime_ = lastTime; -} - -// ******************************************************************************* -// * -// * GetRotationSpeed -// * -// ******************************************************************************* -//! -//! @return The current rotation speed -//! -// ******************************************************************************* - -REAL gZone::GetRotationSpeed( void ) const -{ - return EvaluateFunctionNow( rotationSpeed_ ); -} - -// ******************************************************************************* -// * -// * GetRotation -// * -// ******************************************************************************* -//! -//! @return The current rotation position, as normalized x and y coordinates -//! -// ******************************************************************************* - -tCoord const &gZone::GetRotation( void ) const -{ - return rotation_; -} - -// ******************************************************************************* -// * -// * GetRotationSpeed -// * -// ******************************************************************************* -//! -//! @param rotationSpeed The current rotation speed to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone const & gZone::GetRotationSpeed( REAL & rotationSpeed ) const -{ - rotationSpeed = this->GetRotationSpeed(); - return *this; -} - -// ******************************************************************************* -// * -// * SetRotationSpeed -// * -// ******************************************************************************* -//! -//! @param rotationSpeed The current rotation speed to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone & gZone::SetRotationSpeed( REAL rotationSpeed ) -{ - SetFunctionNow( this->rotationSpeed_, rotationSpeed ); - return *this; -} - -// ******************************************************************************* -// * -// * GetRotationAcceleration -// * -// ******************************************************************************* -//! -//! @return the current acceleration of the rotation -//! -// ******************************************************************************* - -REAL gZone::GetRotationAcceleration( void ) const -{ - return this->rotationSpeed_.GetSlope(); -} - -// ******************************************************************************* -// * -// * GetRotationAcceleration -// * -// ******************************************************************************* -//! -//! @param rotationAcceleration the current acceleration of the rotation to fill -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone const & gZone::GetRotationAcceleration( REAL & rotationAcceleration ) const -{ - rotationAcceleration = this->GetRotationAcceleration(); - return *this; -} - -// ******************************************************************************* -// * -// * GetColor -// * -// ******************************************************************************* -//! -//! @return the current color of the zone -//! -// ******************************************************************************* - -rColor const & gZone::GetColor( void ) const -{ - return color_; -} - -// ******************************************************************************* -// * -// * SetRotationAcceleration -// * -// ******************************************************************************* -//! -//! @param rotationAcceleration the current acceleration of the rotation to set -//! @return A reference to this to allow chaining -//! -// ******************************************************************************* - -gZone & gZone::SetRotationAcceleration( REAL rotationAcceleration ) -{ - REAL omega = this->GetRotationSpeed(); - this->rotationSpeed_.SetSlope( rotationAcceleration ); - SetRotationSpeed( omega ); - - return *this; -} - - - Copied: armagetronad/trunk/armagetronad/src/tron/gWinZone.cpp (from rev 8852, armagetronad/branches/0.2.8/armagetronad/src/tron/gWinZone.cpp) =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gWinZone.cpp (rev 0) +++ armagetronad/trunk/armagetronad/src/tron/gWinZone.cpp 2009-01-18 12:50:55 UTC (rev 8853) @@ -0,0 +1,1752 @@ +/* + +************************************************************************* + +ArmageTron -- Just another Tron Lightcycle Game in 3D. +Copyright (C) 2000 Manuel Moos (ma...@mo...) + +************************************************************************** + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*************************************************************************** + +*/ + +#include "rSDL.h" + +#include "gWinZone.h" +#include "eFloor.h" +#include "eTimer.h" +#include "eGrid.h" +#include "gCycle.h" +#include "gGame.h" +#include "eTeam.h" +#include "ePlayer.h" +#include "rRender.h" +#include "nConfig.h" +#include "tString.h" +#include "rScreen.h" +#include "eSoundMixer.h" + +#include <time.h> +#include <algorithm> +#include <functional> +#include <deque> + +static int sg_zoneAlphaToggle = 0; +static tSettingItem<int> sg_zoneAlphaToggleConf( "ZONE_ALPHA_TOGGLE", sg_zoneAlphaToggle ); + +std::deque<gZone *> sg_Zones; + +static int sg_zoneDeath = 1; +static tSettingItem<int> sg_zoneDeathConf( "WIN_ZONE_DEATHS", sg_zoneDeath ); + +REAL sg_expansionSpeed = 1.0f; +REAL sg_initialSize = 5.0f; + +static nSettingItem< REAL > sg_expansionSpeedConf( "WIN_ZONE_EXPANSION", sg_expansionSpeed ); +static nSettingItem< REAL > sg_initialSizeConf( "WIN_ZONE_INITIAL_SIZE", sg_initialSize ); + +static int sg_zoneSegments = 11; +static tSettingItem<int> sg_zoneSegmentsConf( "ZONE_SEGMENTS", sg_zoneSegments ); + +static REAL sg_zoneSegLength = .5; +static tSettingItem<REAL> sg_zoneSegLengthConf( "ZONE_SEG_LENGTH", sg_zoneSegLength ); + +static REAL sg_zoneBottom = 0.0f; +static tSettingItem<REAL> sg_zoneBottomConf( "ZONE_BOTTOM", sg_zoneBottom ); + +static REAL sg_zoneHeight = 5.0f; +static tSettingItem<REAL> sg_zoneHeightConf( "ZONE_HEIGHT", sg_zoneHeight ); + + +//! creates a win or death zone (according to configuration) at the specified position +gZone * sg_CreateWinDeathZone( eGrid * grid, const eCoord & pos ) +{ + gZone * ret = NULL; + if ( sg_zoneDeath ) + { + ret = tNEW( gDeathZoneHack( grid, pos ) ); + sn_ConsoleOut( "$instant_death_activated" ); + } + else + { + ret = tNEW( gWinZoneHack( grid, pos ) ); + if ( sg_currentSettings->gameType != gFREESTYLE ) + { + sn_ConsoleOut( "$instant_win_activated" ); + } + else + { + sn_ConsoleOut( "$instant_round_end_activated" ); + } + } + + // initialize radius and expansion speed + static_cast<eGameObject*>(ret)->Timestep( se_GameTime() ); + ret->SetReferenceTime(); + ret->SetRadius( sg_initialSize ); + ret->SetExpansionSpeed( sg_expansionSpeed ); + ret->SetRotationSpeed( .3f ); + + return ret; +} + +// number of segments to render a zone with +static const int sg_segments = 11; + +// ******************************************************************************* +// * +// * EvaluateFunctionNow +// * +// ******************************************************************************* +//! +//! @param f function to evaluate +//! @return the function's value at lastTime - referenceTime_ +//! +// ******************************************************************************* + +inline REAL gZone::EvaluateFunctionNow( tFunction const & f ) const +{ + return f( lastTime - referenceTime_ ); +} + +// ******************************************************************************* +// * +// * SetFunctionNow +// * +// ******************************************************************************* +//! +//! @param f function to modify +//! @param value value the function should have at lastTime - referenceTime_ +//! +// ******************************************************************************* + +inline void gZone::SetFunctionNow( tFunction & f, REAL value ) const +{ + f.SetOffset( value + f.GetSlope() * ( referenceTime_ - lastTime ) ); +} + +// ******************************************************************************* +// * +// * gZone +// * +// ******************************************************************************* +//! +//! @param grid Grid to put the zone into +//! @param pos Position to spawn the zone at +//! +// ******************************************************************************* + +gZone::gZone( eGrid * grid, const eCoord & pos ) + :eNetGameObject( grid, pos, eCoord( 0,0 ), NULL, true ), rotation_(1,0) +{ + // store creation time + referenceTime_ = createTime_ = lastTime = 0; + + // add to game grid + this->AddToList(); + + sg_Zones.push_back(this); + + // initialize position functions + SetPosition( pos ); + eSoundMixer* mixer = eSoundMixer::GetMixer(); + mixer->PushButton(ZONE_SPAWN, pos); +} + +// ******************************************************************************* +// * +// * gZone +// * +// ******************************************************************************* +//! +//! @param m Message to read creation data from +//! +// ******************************************************************************* + +gZone::gZone( nMessage & m ) + :eNetGameObject( m ), rotation_(1,0) +{ + // read creation time + m >> createTime_; + referenceTime_ = lastTime = createTime_; + + // initialize color to white, ReadSync will fill in the true value if available + color_.r_ = color_.g_ = color_.b_ = 1.0f; + + // add to game grid + this->AddToList(); + + sg_Zones.push_back(this); + + // initialize position functions + SetPosition( pos ); + eSoundMixer* mixer = eSoundMixer::GetMixer(); + mixer->PushButton(ZONE_SPAWN, pos); +} + +// ******************************************************************************* +// * +// * ~gZone +// * +// ******************************************************************************* +//! +//! +// ******************************************************************************* + +gZone::~gZone( void ) +{ + sg_Zones.erase( + std::find_if( + sg_Zones.begin(), + sg_Zones.end(), + std::bind2nd( + std::equal_to<gZone *>(), + this) + ) + ); +} + +// ******************************************************************************* +// * +// * WriteCreate +// * +// ******************************************************************************* +//! +//! @param m Message to write creation data to +//! +// ******************************************************************************* + +void gZone::WriteCreate( nMessage & m ) +{ + // delegate + eNetGameObject::WriteCreate( m ); + + m << createTime_; +} + +// ******************************************************************************* +// * +// * WriteSync +// * +// ******************************************************************************* +//! +//! @param m Message to write sync data to +//! +// ******************************************************************************* + +void gZone::WriteSync( nMessage & m ) +{ + // delegate + eNetGameObject::WriteSync( m ); + + // write color + m << color_.r_; + m << color_.g_; + m << color_.b_; + + // write reference time and functions + m << referenceTime_; + m << posx_; + m << posy_; + m << radius_; + + // write rotation speed + m << rotationSpeed_; +} + +// ******************************************************************************* +// * +// * ReadSync +// * +// ******************************************************************************* +//! +//! @param m Message to read sync data from +//! +// ******************************************************************************* + +void gZone::ReadSync( nMessage & m ) +{ + // delegage + eNetGameObject::ReadSync( m ); + + // read color + if (!m.End()) + { + m >> color_.r_; + m >> color_.g_; + m >> color_.b_; + se_MakeColorValid(color_.r_, color_.g_, color_.b_, 1.0f); + } + + // read reference time and functions + if (!m.End()) + { + m >> referenceTime_; + m >> posx_; + m >> posy_; + m >> radius_; + } + else + { + referenceTime_ = createTime_; + + // take old default values + this->radius_.SetOffset( sg_initialSize ); + this->radius_.SetSlope( sg_expansionSpeed ); + SetPosition( pos ); + SetVelocity( eCoord() ); + } + + // read rotation speed + if (!m.End()) + { + m >> rotationSpeed_; +... [truncated message content] |
From: <z-...@us...> - 2009-01-19 00:39:45
|
Revision: 8864 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8864&view=rev Author: z-man Date: 2009-01-19 00:39:35 +0000 (Mon, 19 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8854 to 8863: ------------------------------------------------------------------------ r8863 | bazaarmagetron | 2009-01-19 01:32:55 +0100 (Mon, 19 Jan 2009) | 5 lines author: Manuel Moos Worked around SDL/input system bug: composite characters (" + a -> ?\195?\164) never send SDL_KEYUP events when the last key is released, so the key repeat system needs to ignore them. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8854&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/src/ui/uMenu.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852 + /armagetronad/branches/0.2.8:8751-8852,8855-8863 Modified: armagetronad/trunk/armagetronad/src/ui/uMenu.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/ui/uMenu.cpp 2009-01-19 00:32:55 UTC (rev 8863) +++ armagetronad/trunk/armagetronad/src/ui/uMenu.cpp 2009-01-19 00:39:35 UTC (rev 8864) @@ -212,6 +212,12 @@ switch (tEvent.type) { case SDL_KEYDOWN: + if ( tEvent.key.keysym.sym == SDLK_UNKNOWN ) + { + // don't repeat unknown syms. They come from multi-key compositions and + // don't send keyup events when released. + break; + } repeat = true; memcpy( &tEventRepeat, &tEvent, sizeof( SDL_Event ) ); nextrepeat = tSysTimeFloat() + repeatdelay; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-26 10:12:08
|
Revision: 8895 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8895&view=rev Author: z-man Date: 2009-01-26 10:12:03 +0000 (Mon, 26 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8863 to 8894: ------------------------------------------------------------------------ r8894 | bazaarmagetron | 2009-01-26 10:38:52 +0100 (Mon, 26 Jan 2009) | 7 lines author: Manuel Moos Stop responding to pings when TALK_TO_MASTER was never set and no LAN broadcast server discovery queries came in. This should get servers off the master list if you turn TALK_TO_MASTER to 0 and restart the server. They'll linger on a bit on some users' lists, especially if the server is on a LAN and queried from the LAN a lot, though. ------------------------------------------------------------------------ r8892 | bazaarmagetron | 2009-01-25 22:42:21 +0100 (Sun, 25 Jan 2009) | 1 line Bazaarmagetron: Empty merge to keep the peace between svn and bzr. ------------------------------------------------------------------------ r8887 | bazaarmagetron | 2009-01-25 13:30:31 +0100 (Sun, 25 Jan 2009) | 2 lines Manuel Moos: Small translation bump. ------------------------------------------------------------------------ r8886 | bazaarmagetron | 2009-01-24 15:01:45 +0100 (Sat, 24 Jan 2009) | 2 lines epsy: forgot to remove this little helper ------------------------------------------------------------------------ r8881 | bazaarmagetron | 2009-01-23 16:25:53 +0100 (Fri, 23 Jan 2009) | 2 lines epsy: Fixed handling of subdirectories on authorities ------------------------------------------------------------------------ r8880 | bazaarmagetron | 2009-01-23 00:54:17 +0100 (Fri, 23 Jan 2009) | 2 lines Manuel Moos: updated a bit. ------------------------------------------------------------------------ r8879 | bazaarmagetron | 2009-01-23 00:53:29 +0100 (Fri, 23 Jan 2009) | 2 lines Manuel Moos: Less empty line spam with --scm switch. ------------------------------------------------------------------------ r8878 | bazaarmagetron | 2009-01-22 13:06:36 +0100 (Thu, 22 Jan 2009) | 2 lines Manuel Moos: Partial translation :) ------------------------------------------------------------------------ r8877 | bazaarmagetron | 2009-01-22 13:05:52 +0100 (Thu, 22 Jan 2009) | 2 lines Manuel Moos: Added --scm switch that allows less clutter when checking in partial translations. ------------------------------------------------------------------------ r8872 | bazaarmagetron | 2009-01-21 18:52:43 +0100 (Wed, 21 Jan 2009) | 2 lines Manuel Moos: Better logic for lowering rim wall rendering height to match the sky height. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8863&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/language/deutsch.txt armagetronad/trunk/armagetronad/language/update.py armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp armagetronad/trunk/armagetronad/src/tron/gWall.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8863 + /armagetronad/branches/0.2.8:8751-8852,8855-8894 Modified: armagetronad/trunk/armagetronad/language/deutsch.txt =================================================================== --- armagetronad/trunk/armagetronad/language/deutsch.txt 2009-01-26 09:38:52 UTC (rev 8894) +++ armagetronad/trunk/armagetronad/language/deutsch.txt 2009-01-26 10:12:03 UTC (rev 8895) @@ -20,6 +20,7 @@ first_use_help Wurde \g zum ersten mal gestartet? include_help bindet die angegebene Datei ein sinclude_help bindet die angegebene Datei ein, ohne eine Fehlermeldung zu liefern, wenn sie nicht gefunden wurde +rinclude_help bindet die angegebene Datei \xFCber das Resourcensystem ein; sie kann so von einem entfernten Server kommen. new_team_allowed_help Kann man momentan ein neues Team er\xF6ffnen? #******************************************** @@ -142,6 +143,8 @@ enemy_currenttime_influence_help Wenn dies auf 1 gesetzt wird, so ist nicht mehr die Aufbauzeit der Mauer, sondern die Zeit des Kontaktes relevant f\xFCr die Bestimmug des Killers. Alle Zahlenwerte sind hier erlaubt. enemy_suicide_timeout_help Wenn es keinen Feindkontakt innerhalb dieser Zeit in Sekunden gab, dann z\xE4hlt ein Tod als Selbstmord. score_die_help Punktzahl, die man f\xFCrs Sterben erh\xE4lt (sollte negativ sein) +score_survive_help Punktzahl, die man f\xFCr das \xDCberleben bekommt +score_hole_help Punktzahl, die man erh\xE4lt, wenn man f\xFCr ein Teammitglied ein Loch in eine gegnerische Wand macht score_kill_help Punktzahl, die man f\xFCr das Beseitigen eines Gegners erh\xE4lt (sollte positiv sein) score_suicide_help Was man f\xFCr Selbstmord erh\xE4lt (sollte negativ sein) score_win_help Was man f\xFCr den Gewinn einer Runde erh\xE4lt (sollte positiv sein) @@ -182,6 +185,7 @@ team_min_players_help Mindestzahl von Spielern pro Team team_allow_shuffle_up_help Wenn dies auf 1 gesetzt wird, dann d\xFCrfen sich Spieler mit /teamshuffle selber nach innen bef\xF6rdern. Ansonsten d\xFCrfen sie sich nur degradieren. team_center_is_boss_help Wenn dies auf 1 gesetzt wird, so ist der mittlere Spieler immer der Boss eines Teams. Ansonsten tr\xE4gt der \xE4lteste Spieler diese Verantwortung. +team_elimination_mode_help Gibt an, wie Teams eliminiert werden, wenn es mehr als (SP_)TEAMS_MAX gibt. Ein Wert von 0 l\xF6st das jeweils kleinste Team auf (mit m\xF6glichst geringer Punktzahl), 1 beh\xE4lt Teams mit "besserer" Farbe (blau > gold > rot etc), und 2 eliminiert die Teams mit der geringsten Punktzahl. teams_max_help H\xF6chstzahl von Teams teams_min_help Mindestzahl von Teams @@ -197,10 +201,21 @@ limit_time_help Beende das Match nach Ablauf von soviel Minuten auto_team_help Wenn dies auf 1 steht, werden Spieler automatisch einem Team zugeteilt. Steht es auf 0, bleiben sie Zuschauer. +auto_team_spec_spam_help Nur wenn der wert 1 ist, werden Zuschauer, die den Server betreten oder verlassen, angek\xFCndigt. Hat nur einen Effekt, wenn AUTO_TEAM auf 0 steht. allow_team_name_color_help Erlaubt es, ein Team nach einer Farbe zu benennen allow_team_name_player_help Erlaubt es, ein Team nach dem Anf\xFChrer zu benennen +play_time_total_help Gesamtzeit in Minuten, die mit diesem Client gespielt wurde +play_time_online_help Gesamtzeit in Minuten, die mit diesem Client online gespielt wurde +play_time_team_help Gesamtzeit in Minuten, die mit diesem Client in einem Team gespielt wurde +min_play_time_total_help Ben\xF6tigte Gesamtspielzeitzeit in Minuten, um hier zu spielen +min_play_time_online_help Ben\xF6tigte Gesamtspielzeitzeit online in Minuten, um hier zu spielen +min_play_time_team_help Ben\xF6tigte Gesamtspielzeitzeit in einem Team in Minuten, um hier zu spielen +play_time_total_lacking Du kannst hier nicht spielen, erst ben\xF6tigst Du mehr allgemeine Erfahrung. Spiele bitte \1 Minuten woanders (alleine gegen die CPUs z\xE4hlt).\n +play_time_online_lacking Du kannst hier nicht spielen, erst ben\xF6tigst Du mehr Erfahrung im Online-Spiel. Spiele bitte \1 Minuten auf anderen Servern.\n +play_time_team_lacking Du kannst hier nicht spielen, erst ben\xF6tigst Du mehr allgemeine Erfahrung im Teamspiel. Spiele bitte \1 Minuten auf einem anderen Server mit Teams.\n + team_name_1_help Name f\xFCr Team 1 team_name_2_help Name f\xFCr Team 2 team_name_3_help Name f\xFCr Team 3 @@ -302,6 +317,9 @@ player_chat_wait_single_help Setze dies auf 1, wenn immer nur ein Spieler seinen Zeitvorrat reduziert bekommen soll, obwohl auch auf andere noch gewartet wird. player_chat_wait_teamleader_help Setze dies auf 1, wenn nur Teamchefs eine Spielpause ausl\xF6sen k\xF6nnen soll, oder auf 0, um das allen Spielern zu erlauben. +wait_for_external_script_help L\xE4sst den Server zwischen zwei Runden auf ein externes Script warten, bis das Script den Wert wieder auf 0 setzt. +wait_for_external_script_timeout_help Maximale Zeit in Sekunden, die der Server \xFCber WAIT_FOR_EXTERNAL_SCRIPT pausiert werden kann. Wenn die Zeit abgelaufen ist, startet die n\xE4chste Runde auch so. + chatter_remove_time_help Zeit in Sekunden im Chatbot-Zustand, nach der ein Spieler aus dem Spiel geworfen wird idle_remove_time_help Zeit in Sekunden ohne Steuerungsbefehl, nach der ein Spieler aus dem Spiel geworfen wird idle_kick_time_help Zeit in Sekunden ohne Steuerungsbefehl, nach der ein Spieler vom Server geworfen wird @@ -315,6 +333,8 @@ #******************************************** player_name_confitem_help Spielername +player_user_confitem_help Golbale Spieler-ID +auto_login_confitem_help Soll sich dieser Spieler automatisch am Server einloggen? camcenter_help Zentriere die interne Kamera in Fahrtrichtung start_cam_help Lieblingskameramodus start_fov_help Anf\xE4nglicher Sichtwinkel @@ -362,6 +382,7 @@ spam_penalty_help Extrastrafe f\xFCr eine erkanne Spam-Aktion spam_maxlen_help Maximall\xE4nge f\xFCr die Chat-Nachrichten. spam_autokick_help Spamer-Wert, bei dem der Spieler automatisch vom Server geworfen wird. +spam_autokick_count_help Zahl der Spam-Warnungen, bevor ein Spieler gekickt wird. silence_all_help Wenn dieser Wert auf 1 gesetzt ist, dann wird aller Chat unterbunden. enable_chat_help Wenn dies auf 0 gesetzt wird, dann werden alle \xF6ffentlichen Chat-Nachrichten unterdr\xFCckt (Auf dem Server sind Nachrichten von Administratoren und /msg und /team-Nachrichten Ausnahmen). allow_team_change_help Nur wenn dieser Wert 1 ist d\xFCrfen Spieler irh Team beliebig w\xE4hlen. Wenn dieser Wert 0 ist, muss ein Administrator jeden Teamwechsel mit ALLOW_TEAM_CHANGE_PLAYER authorisieren. @@ -442,15 +463,30 @@ allow_voting_spectator_help Wenn dies auf 1 gesetzt wird, dann d\xFCrfen auch Zuschauer abstimmen. min_voters_help Minimalzahl der Stimmberechtigten, damit Abstimmungen zugelassen werden. max_votes_help Maximalzahl der Abstimmungen, die gleichzeitig laufen k\xF6nnen. +votes_cancel_help Bricht alle laufenden Abstimmungen a. max_votes_per_voter_help Maximalzahl der Abstimmungen von jedem Stimmberechtigten, die gleichzeitig laufen k\xF6nnnen. voting_start_decay_help Nach sovielen Sekunden wird begonnen, die Enthaltungen in einer Abstimmung zu ignorieren; es kommt dadurch auch bei nicht absoluten Mehrheiten zu einem Ergebnis. voting_decay_help Alle soviele Sekunden wird eine Enthaltung mehr ignoriert. voting_bias_help f\xFCgt so viele virtuelle W\xE4hler hinzu, die sich gegen jede Ver\xE4nderung aussprechen. +voting_bias_kick_help f\xFCgt so viele virtuelle W\xE4hler hinzu, die sich gegen jeden Rauswurf aussprechen. +voting_bias_suspend_help f\xFCgt so viele virtuelle W\xE4hler hinzu, die sich gegen jede Suspendierung stellen. +voting_bias_include_help f\xFCgt so viele virtuelle W\xE4hler hinzu, die sich gegen jede Include-Abstimmung stellen. +voting_bias_command_help f\xFCgt so viele virtuelle W\xE4hler hinzu, die sich gegen jede Kommando-Abstimmung stellen. + voting_privacy_help Kontrolliert die Ausgabe von Abstimmungen. 2: alles bleibt geheim 1: der Initiator einer Abstimmung wird im Serverlog vermerkt 0: die gesamte Abstimmung wird im Log vermerkt -1: der Initiator einer Abstimmung wird \xF6ffentlich bekanntgegeben -2: die gesamte Abstimmung ist \xF6ffentlich. voting_spam_issue_help Es wird als so nevig angesehen, eine Abstimmung zu beginnen. voting_spam_reject_help Es wird als so nevig angesehen, wenn eine Abstimmung abgelehnt wird.. +voting_harm_time_help Zeit in Sekunden, die zwischen zwei sch\xE4dlichen Abstimmungen gegen denselben Spieler liegen muss. voting_kick_time_help Mindestzeit in Sekunden, die zwischen zwei Vertreibungsvorschl\xE4gen gegen denselben Spieler liegen muss. voting_maturity_help Zeit in Sekunden, die ein Spieler auf dem Server anwesend sein muss, bevor er Abstimmungen starten darf. +voting_suspend_rounds_help Anzahl der Runden, die ein Spieler via "/vote suspend <spielername>" suspendiert wird. +voting_kick_minharm_help Zahl der sch\xE4dlichen Abstimmungen (suspension, kick,...), die gegen einen Spieler (nicht notwendigerweise erfolgreich) eingereicht werden m\xFCssen, bevor ein Vertreibungsvorschlag aus dem Menu wirklich als Vertreibung gehandhabt wird. Davor werden Suspendierungen daraus. +votes_suspend_help Unterbricht Abstimmungen fuer x Minuten. +votes_suspend_default_help Defaultwert f\xFCr die Zeit in VOTES_SUSPEND. +votes_unsuspend_help Erlaubt Abstimmungen wieder. +voting_suspended Abstimmungen wurden f\xFCr die n\xE4chsten \1 Minuten unterbrochen.\n +voting_unsuspended Abstimmungen sind wieder erlaubt.\n +vote_rejected_voting_suspended Abstimmungen wuden vom Administrator unterbrochen.\n #******************************************** #******************************************** @@ -576,6 +612,7 @@ server_port_help Port, auf dem dieser Server Verbindungen annimmt client_port_help Port, auf dem wir versuchen, Verbindung aufzunehmen max_clients_help Maximale Zahl der akzeptierten Verbindungen von Clients. +max_clients_limit Warnung: MAX_CLIENTS kann nicht gr\xF6\xDFer als \1 sein. Einstellung nicht ver\xE4ndert. max_clients_same_ip_soft_help Maximale Zahl der Clients, die von derselben IP-Adresse dauerhaft akzeptiert werden: die Verbindung \xFCberz\xE4hlige Clients kann jederzeit abreissen. max_clients_same_ip_hard_help Maximale Zahl der Clients, die von derselben IP-Adresse akzeptiert werden: mehr Clients werden von Anfang an abgeblockt. max_players_same_ip_help Maximalzahl der Spieler, die von derselben Internetadresse aus spielen d\xFCrfen. @@ -665,7 +702,6 @@ swapmode_glfinish_help glFinish() wird zur Synchronisation verwendet. Nur so ist es garantiert, dass Eingabe und Ausgabe wirklich Synchron laufen, aber der Preis ist auf einigen Systemen die Vollauslastung des Prozessors. swap_mode_help Bestimmt, wie Ein- und Ausgabe synchronisiert werden. 0: gar nicht, 1: mit glFlush(), 2: mit glFinish(). -ztrick_help Knifflige Leistungsverbesserung: funktionniert leider meist nicht... (3dfx-Karten sind die einzig bekannte Ausnahme) texture_mode_0_help Bodentextur: texture_mode_1_help Wandtexturen: texture_mode_2_help Objekttexturen: @@ -675,19 +711,51 @@ gl_version_help OpenGL System-Information gl_renderer_help OpenGL System-Information gl_vendor_help OpenGL System-Information -line_antialias_help Aktiviert Kantengl\xE4ttung f\xFCr Linien -poly_antialias_help Aktiviert Kantengl\xE4ttung f\xFCr Polygone -persp_correct_help Aktiviert Perspektivenkorrektur alpha_blend_help Aktiviert Transparenzeffekte +zone_alpha_toggle_help Dieser wert wird mit ALPHA_BLEND geXORed, um den Rendermodus der Zonen zu bestimmen +zone_segments_help Mit wievelen Segmenten Zonen dargestellt werden. Default: 11 +zone_seg_length_help Der Anteil jedes Zonensegents, der tats\xE4chlich dargestellt wird. Default: .5 +zone_bottom Unterer Rand der Zonen. Default: 0.0 +zone_height H\xF6he der Zonen: Default: 5.0 smooth_shading_help Aktiviert "Rundes Licht" text_out_help Aktiviert Textausgabe console_columns_help Anzahl der Spalten der Textausgabe console_rows_help Anzahl der Zeilen der Textausgabe (normal) console_rows_max_help Anzahl der Zeilen der Textausgabe (maximal beim Hochscrollen) +console_indent_help Anzahl der Leerzeichen, mit denen die Vortsetzung einer automatisch umgebrochenen Konsolenzeile einger\xFCckt wird console_decorate_id_help Jede Ausgabezeile wird mit der ID-Nummer des Clients, der sie verursacht hat, dekoriert console_decorate_ip_help Jede Ausgabezeile wird mit der IP-Adresse des Clients, der sie verursacht hat, dekoriert +console_decorate_timestamp_help Dekoriert jede Zeile der Konsolenausgabe mit aktuellem Datum und Uhrzeit console_ladder_log_help Schickt das Ladder-Log auch an die Standardausgabe +ladderlog_decorate_timestamp_help Dekoriert jede zeile von ladderlog.txt mit aktuellem Datum und Uhrzeit +ladderlog_write_all_help Setzt alle LADDER_LOG_WRITE_*-Einstellungen auf denselben Wert +ladderlog_write_all_usage Verwendung: LADDER_LOG_WRITE_ALL 1|0 +ladderlog_write_all_enabled Aktiviert volle Ausgabe nach ladderlog.txt. +ladderlog_write_all_disabled Deaktiviert ausgabe nach ladderlog.txt. +ladderlog_write_authority_blurb_help Schreibt in ladderlog.txt: AUTHORITY_BLURB <Name> <Wert> +ladderlog_write_basezone_conquered_help Schreibt in ladderlog.txt: BASEZONE_CONQUERED <Team> <cx> <cy> +ladderlog_write_basezone_conquerer_help Schreibt in ladderlog.txt: BASEZONE_CONQUERER <Spieler> +ladderlog_write_chat_help Schreibt in ladderlog.txt: CHAT <Redner> [/me] <was er sagt> +ladderlog_write_death_frag_help Schreibt in ladderlog.txt: DEATH_FRAG <Beute> <J\xE4ger> +ladderlog_write_death_suicide_help Schreibt in ladderlog.txt: DEATH_SUICIDE <Spieler> +ladderlog_write_death_teamkill_help Schreibt in ladderlog.txt: DEATH_TEAMKILL <Beute> <J\xE4ger> +ladderlog_write_game_end_help Schreibt in ladderlog.txt: GAME_END +ladderlog_write_game_time_help Schreibt in ladderlog.txt: GAME_TIME <Zeit> (beachte ebenfalls: GAME_TIME_INTERVAL) +ladderlog_write_match_winner_help Schreibt in ladderlog.txt: MATCH_WINNER <Gewinner> +ladderlog_write_new_match_help Schreibt in ladderlog.txt: NEW_MATCH +ladderlog_write_new_round_help Schreibt in ladderlog.txt: NEW_ROUND +ladderlog_write_num_humans_help Schreibt in ladderlog.txt: NUM_HUMANS <Zahl der Menschlichen Spieler> +ladderlog_write_online_player_help Schreibt in ladderlog.txt: ONLINE_PLAYER <Name> [<Ping> [<Team>]] +ladderlog_write_player_entered_help Schreibt in ladderlog.txt: PLAYER_ENTERED <Name> <IP> <Spitzname> +ladderlog_write_player_left_help Schreibt in ladderlog.txt: PLAYER_LEFT <Name> <IP> +ladderlog_write_player_renamed_help Schreibt in ladderlog.txt: PLAYER_RENAMED <alter Name> <neuer Name> <IP> <Spitzname> +ladderlog_write_round_score_help Schreibt in ladderlog.txt: ROUND_SCORE <Punktzahl diese Runde> <Spieler> [<Team>] +ladderlog_write_round_score_team_help Schreibt in ladderlog.txt: ROUND_SCORE_TEAM <Punktzahl diese Runde> <Team> +ladderlog_write_round_winner_help Schreibt in ladderlog.txt: ROUND_WINNER <Gewinner> +ladderlog_write_sacrifice_help Schreibt in ladderlog.txt: SACRIFICE <Spieler, der das Loch benutzt hat> <Spieler, der das Loch gemacht hat> <Spieler, dessen Wand durchl\xF6chert wurde> +ladderlog_write_wait_for_external_script_help Schreibt in ladderlog.txt: WAIT_FOR_EXTERNAL_SCRIPT (beachte ebenfalls: WAIT_FOR_EXTERNAL_SCRIPT und WAIT_FOR_EXTERNAL_SCRIPT_TIMEOUT) ladderlog_game_time_interval Wenn dies auf einen positiven Wert gesetz wird, so wird alle n Sekunden eine Statusmeldung ins Ladder-Log geschrieben. +chat_log_help Schreibt maschinenlesbares Chatlog in var/chatlog.txt show_fps_help Aktiviert Performance-Anzeige floor_mirror_help Spiegelung des Bodens floor_detail_help Detail des Bodens @@ -711,11 +779,19 @@ floor_mirror_int_help St\xE4rke der Bodenspiegelungen color_strings_help Markiere Texte farblich (z.B. Namen im Chat) filter_color_strings_help Entferne Farbcodierungen aus allen Texten, die \xFCber das Netwerk empfangen werden. +filter_dark_color_strings_help Entferne zu dunkle Farbcodierungen aus Zeichenketten. filter_color_names_help Entferne Farbcodierungen aus Spielernamen. +filter_dark_color_names_help Entferne zu dunkle Farbcodierungen aus Spielernamen. filter_name_ends_help Entferne Leerzeichen und anderen M\xFCll von Anfang und Ende der Spielernamen. filter_name_middle_help Sollen extra-Freir\xE4ume und anderer M\xFCll aus Spielernamen entfernt werden? filter_color_server_names_help Entferne Farbcodierungen aus Servernamen im Browser. +filter_dark_color_server_names_help Entferne zu dunkle Farbcodierungen aus Servernamen. +filter_color_team_help Entferne Farbcodierungen aus /team-Nachrichten. +filter_dark_color_team_help Entferne zu dunkle Farbcodierungen aus /team-Nachrichten. +zone_alpha_help Transparenzfaktor f\xFCr Rendering der Zonen. 1.0 ist das Maximum. +zone_alpha_server_help Transparenzfaktor f\xFCr Rendering der Zonen, vom Server kontrolliert. 1.0 ist das Maximum. + #screen mode custom_screen_height_help Benutzerdefinierte Bildschirmh\xF6he custom_screen_width_help Benutzerdefinierte Bildschirmbreite @@ -797,6 +873,7 @@ round_center_message_help Zentralnachricht, die jede Runde wiederholt wird password_storage_help Bestimmt, wo die Passw\xF6rter gespeichert werden: gar nicht (-1), nur im Speicher(0) oder auf der Festplatte(1, nicht empfohlen) +protect_sensitive_files_help Soll verhindert werden, dass user.cfg und andere Dateien von anderen Benutzern gelesen werden k\xF6nnen? admin_pass_help Kennwort f\xFCr das grundlegende im Spiel admin backward_compatibility_help Maximale Zahl \xE4lterer Versionen, die noch unterst\xFCtzt werden. @@ -807,9 +884,14 @@ exit_help Beendet den Serverprozess. # manning and kicking commands +only_works_on_server Der Konsolenbefehl \1 funktionniert nur auf dem Server. Wenn Du entsprechende Rechte hast, kannst du ihm aktivieren, indem Du "/admin \1 \2" sagst.\n players_help Gibt eine Liste der eingeloggten Spieler aus +teams_help Gibt eine Liste aller Teams mit einer rudiment\xE4ren Darstellung der Formation aus. Analog zum Chat-Kommando /teams. kill_help T\xF6tet den angegebenen Spieler (als Warnung vor einem Rausschmiss) silence_help Verbietet einem bestimmten Spieler, \xF6ffentlich zu Reden +suspend_help Suspendiert einen Spieler f\xFCr die n\xE4chsten N Runden (Defaultwert f\xFCr N ist SUSPEND_DEFAULT_ROUNDS) +unsuspend_help Hebt eine Suspendierung auf. +suspend_default_rounds_help Wieviele Runden soll eine Suspendierung normalerweise dauern? voice_help Kehrt SILENCE um allow_team_change_player_help Erlaubt einem bestimmten Speiler, einmal das Team zu wechseln disallow_team_change_player_help Kehrt ALLOW_TEAM_CHANGE_PLAYER um @@ -828,11 +910,23 @@ ban_list_help Gibt die Liste der Verbannten IP-Adressen aus. unban_ip_help Hebt eine Verbannung auf. +player_list_hidden_player_prefix_help Der Prefix, der vor versteckten Globalen IDs gezeigt wird, wenn man sie doch sehen kann. +player_list_search \1: Suchmuster "\n" passt auf:\n +player_list_search_no_results \1: Suchmuster "\2" liefert keine Treffer.\n +player_list_search_end \1: Ende der Suchergebnisse (\2 Treffer).\n +player_list_end \1: \2 Spieler.\n + +admins_help Gibt eine Liste der Administratoren. Siehe auch /admins and /listadmins chat commands. + +admin_list_cant_see \1: Zugriff auf Administratorenliste verweigert.\n # communication console_message_help Gibt eine Nachricht auf den Konsolen aller angeschlossenen Spieler aus. center_message_help Gibt eine Nachricht in der Bildschirmmitte aller angeschlossenen Spieler aus. fullscreen_message_help Unterbricht das Spiel mit einer bildschirmf\xFCllenden Nachrict. say_help L\xE4sst den Server-Administrator etwas sagen. +rename_help Benennt den angegebenen Spieler um. +allow_rename_player_help Gibt dem angegebenen Spieler die Erlaubnis, seinen Namen wieder zu \xE4ndern. +disallow_rename_player_help Nimmt dem angegebenen Spieler die Erlaubnis, seinen Namen zu \xE4ndern. #******************************************** #******************************************** @@ -1392,21 +1486,20 @@ bookmarks_menu_name Name bookmarks_menu_name_help Der Name des Servers. Wird nur f\xFCr die Anzeige verwendet und hat keine Funktion, ist also frei w\xE4hlbar. bookmarks_menu_connect Verbindung zu \1 aufbauen - bookmarks_menu_edit_connect_text Verbindung aufbauen bookmarks_menu_edit_connect_help Teleport zum Spieleraster! + masters_menu Subkulturen masters_menu_help Verbinde dich mit alternativen Gemeinschaften von Servern -masters_menu_edit Verwaltung -masters_menu_edit_help Verwaltet die Subkulturen -masters_menu_edit_slot Bearbeite \1 -masters_menu_address Adresse -masters_menu_address_help Die Adresse des Master-Servers, der die Subkultur verwaltet -masters_menu_name Name -masters_menu_name_help Der Name der Subkultur. Wird nur f\xFCr die Anzeige verwendet und hat keine Funktion, ist also frei w\xE4hlbar. -masters_menu_connect Mit Subkultur \1 verbinden - +masters_menu_edit Verwaltung +masters_menu_edit_help Verwaltet die Subkulturen +masters_menu_edit_slot Bearbeite \1 +masters_menu_address Adresse +masters_menu_address_help Die Adresse des Master-Servers, der die Subkultur verwaltet +masters_menu_name Name +masters_menu_name_help Der Name der Subkultur. Wird nur f\xFCr die Anzeige verwendet und hat keine Funktion, ist also frei w\xE4hlbar. +masters_menu_connect Mit Subkultur \1 verbinden masters_menu_edit_connect_text Subkultur Betreten masters_menu_edit_connect_help \xD6ffnet ein Master-Server-Browser-\xE4hliches Menu mit allen Servern dieser Subkultur @@ -1537,7 +1630,6 @@ viewport_assign_text Fenster zuteilen viewport_assign_help Welcher Spieler spielt in welchem Fenster? - #player setup player_name_text Name: @@ -1857,21 +1949,12 @@ detail_floor_2tex_text Doppelt texturierte Ebene detail_floor_2tex_help Die beiden Gruppen von Rasterlinien werden separat gezeichnet und sind damit bis zum Horizont gestochen scharf. Kostet allerdings auch etwas an Performance. -detail_polyantialias_text Polygon-Antial.: -detail_polyantialias_help Sollen die Kanten von Polygonen gegl\xE4ttet werden? Auf den meisten Systemen ist dieses Feature leider nicht richtig implementiert. - -detail_lineantialias_text Line-Antial.: -detail_lineantialias_help Sollen die Kanten von Linien gegl\xE4ttet werden? - detail_alpha_text Transparenz: detail_alpha_help Kostenlos auf den meisten 3D-Karten: Einige Objekte (die ersten Meter der W\xE4nde hinter den Vehikeln) werden transparent dargestellt. Verlangsamt den Software Renderer ein wenig. detail_smooth_text Rundes Licht: detail_smooth_help (Besser bekannt als Smooth Shading) L\xE4sst die Beleuchtung der Objekte "runder" erscheinen. Auch bei Softwarerendering fast umsonst. -detail_persp_text Perpektivenkorrektur: -detail_persp_help Wenn man dieses Feature deaktivert, so werden die Boden- und Wandtexturen f\xFCrchterlich verzerrt; Objekttexturen leiden jedoch nur wenig. Bringt im Softwaremodus etwas Geschwindigkeit, bei den meisten 3D-Beschleunigern kann man es gar nicht mehr abschalten. - detail_text_truecolor_text Texturen in TrueColor: detail_text_truecolor_help Speichert die Texturen in 32 Bit (24 Bit Farbe + 8 Bit Transparenz), sonst werden 16 Bit verwendet. @@ -1934,9 +2017,6 @@ tweaks_displaylists_text Display Lists: tweaks_displaylists_help Display Lists sind ein OpenGL-Feature, um ein Objekt schnell oft rendern zu k\xF6nnen; es wird normalerweise f\xFCr die Vehikel verwendet. Manchmal funktioniert das aber nicht richtig: wenn die Vehikel unsichtbar sind, dann sollte dieses Feature ausgeschaltet werden. -tweaks_ztrick_text Z-Trick: -tweaks_ztrick_help Geschwindigkeitstrick: auf 3dfx-Karten kann man das L\xF6schen des Z-Puffers (f\xFCr die Tiefensortierung der Objekte) sparen. Wenn es nicht funktionniert, so verschwinden die Vehikel mit seltsamen Effekten aus dem Bild. - tweaks_infinity_text Unendlich: tweaks_infinity_help OpenGL unterst\xFCtzt eigentlich unendlich ferne Punkte: sie entsprechen einfach nur Richtungen. Senn dieser Menupunkt aktiviert wird, dann verwendet \g diese unendlichen Punkte, um z.B. den Boden zu zeichnen. Meistens ist dieses Feature allerdings kaputtoptimiert. @@ -2106,10 +2186,9 @@ player_win_instant \1 bekam \2 Punkte durch das Erreichen der Siegzone.\n player_win_conquest \1 bekam \2 Punkte f\xFCr das erobern der Basis des Feindes.\n +player_win_held_fortress \1 bekam \2 Punkte f\xFCr das Halten der eigenen Basis.\n player_win_conquest_specific \1 bekam \2 Punkte f\xFCr das erobern der Basis von \3.\n player_kill_collapse \1 wurde von seiner kollabierenden Zone vernichtet.\n -player_win_held_fortress \1 bekam \2 Punkte f\xFCr das Halten der eigenen Basis.\n - zone_collapse_harmless \1s Zone verpufft harmlos wegen mangelden Feindkontakts.\n #******************************************** @@ -2140,7 +2219,7 @@ player_left_game \1 0xff7f7fwurde mit \2 Punkten endg\xFCltig gel\xF6scht.\n player_leaving_game \1 0xff7f7fhat das Spiel verlassen.\n player_renamed \2 hat sich auf \1 umbenannt.\n -player_rename_rejected_votekick \1 0xffffffdarf sich nicht in \2 0xffffffumbenennen, das k\xF6nnte die Abstimmenden verwirren.\n +player_rename_rejected_votekick \1 0xffffffdarf sich nicht in \2 0xffffffumbenennen, das k\xF6nnte die Abstimmenden verwirren.\n player_welcome \n\nWilkommen \1! Auf diesem Server l\xE4uft Version \2.\n player_win_default \1 erh\xE4lt aus sehr seltsamen Gr\xFCnden \2 Punkte.\n player_lose_default \1 verliert aus sehr seltsamen Gr\xFCnden \2 Punkte.\n @@ -2171,7 +2250,6 @@ team_shuffle \1 wird von Position \2 auf \3 verschoben.\n player_noshuffleup Du darfst dich hier nicht selbst bef\xF6rdern.\n player_noshuffle Dein Positions\xE4nderungswunsch hat keinen Effekt.\n - msg_toomanymatches 0xff0000Zu viele Treffer bei Suche nach \1. Bitte etwas genauer.\n msg_nomatch 0xff0000Keine Treffer bein Suche nach \1.\n @@ -2265,6 +2343,7 @@ network_server_login Empfange Verbindungsaufbau von \1.\n network_server_login_success Neuer Benutzer: \1\n + network_toomanyservers \n\n\nWarnung: auf dieem Computer laufen zu viele Server.\nDieser k\xF6nnte von Clients eventuell nicht gefunden werden.\n\n\n network_browser_unidentified Nichtidentifizierbare Serverinformation von \1 "uber Kanal \2 erhalten.\n @@ -2306,8 +2385,6 @@ voted_kill_kick Du wurdest von einem w\xFCtenden Mob vom Server geschmissen; wahrscheinlich hassen sie dich. Gute Arbeit! Versuche, woanders zu spielen. network_kill_spectator Du warst zu lange nur Beobachter. -network_kick_notfound Spieler \1 nicht gefunden. Gross/Kleinschreibung?\n - network_ban_kph IP \1 ist nun mit \2 Kicks pro Stunde registriert.\n network_ban Spieler von IP \1 sind f\xFCr die n\xE4chsten \2 minuten gesperrt. Grund: \3\n network_noban Spieler von IP \1 sind nicht mehr gesperrt. @@ -2336,7 +2413,6 @@ vote_submitted Vorschlag "\2" wurde von \1 eingebracht.\n vote_vote_for \1 hat f\xFCr Vorschlag "\2" gestimmt.\n vote_vote_against \1 hat gegen Vorschlag "\2" gestimmt.\n - #******************************************** #******************************************** # @@ -2404,6 +2480,8 @@ #******************************************** #******************************************** +# printed on loading a map + # title of map error message map_file_load_failure_title Fehler mit Arena @@ -2467,14 +2545,12 @@ config_value_changed \1 wurde von \2 auf \3 ver\xE4ndert.\n config_error_read Eingabefehler beim Lesen von \1: Ung\xFCltiges Format.\n config_message_info \1 steht momentan auf \2.\n - nconfig_errror_protected Nix da. Nur der Server darf \1 \xE4ndern.\n nconfig_error_unknown Konfigurations\xE4nderung f\xFCr die unbekannte Variable \1 erhalten.\n\n\n\nWAHRSCHEINLICH SOLLTE EINE NEUE VERSION VON ARMAGETRON INSTALLIERT WERDEN!!!!\n nconfig_error_nonet Konfigurations\xE4nderung \xFCber das Netwzerk f\xFCr die Variable \1 erhalten, die jedoch keinen Netzwerksupport hat.\n\n\n\nWAHRSCHEINLICH SOLLTE EINE NEUE VERSION VON ARMAGETRON INSTALLIERT WERDEN!!!!\n nconfig_error_ignoreold Veraltete Konfigurations\xE4nderung f\xFCr Einstellung \1 wird ignoriert.\n nconfig_value_changed \1 wurde auf Befehl des Servers von \2 auf \3 ver\xE4ndert.\n - #************************************* #************************************* # @@ -2508,7 +2584,6 @@ password_help Passwort-Einstellung login_request_failed Login fehlgeschlagen. Neuer Versuch! -login_request_first Dieser Server erfordert ein Login. login_request_namechange Neues Login nach Namens\xE4nderung erforderlich. login_request_master Der Master-Server erfordert ein Login. @@ -2521,12 +2596,11 @@ hud_ping Ping: hud_rubber Rubber +# access level messages + +# various reasons for logins to fail + # items that should not be translated # Room for lost settings in translation files: - -# Outdated: -team_max_imbalance_perm_help H\xF6chste tolerierte Ungleichheit der Teams, dauerhaft -player_joins_team_now \1 0x7fff7fspielt nun f\xFCr \2.\n -sp_team_max_imbalance_perm_help H\xF6chste tolerierte Ungleichheit der Teams, dauerhaft Modified: armagetronad/trunk/armagetronad/language/update.py =================================================================== --- armagetronad/trunk/armagetronad/language/update.py 2009-01-26 09:38:52 UTC (rev 8894) +++ armagetronad/trunk/armagetronad/language/update.py 2009-01-26 10:12:03 UTC (rev 8895) @@ -9,6 +9,8 @@ # panish translation is up to date. # the --complete switch adds the original texts as comments to all items, even # those already translated. +# the --scm switch removes all comments added by previous runs so you can +# easily check in partial translations into source control. # # update.py --dist # compactifies translations: strips comments and whitespace @@ -22,7 +24,8 @@ def __init__(self): # maximal assumed length of identifier self.maxlen = 30 - self.commentAll = False + self.commentAll = False + self.commentNone = False self.autoComment = "#ORIGINAL TEXT:" self.autoComment2 = "#TRANSLATION " self.untranslated = "UNTRANSLATED\n" @@ -53,7 +56,8 @@ del self.dictionary[ key ] except KeyError: # translation not found: note that. - self.Write( "#" + key, self.untranslated ) + if not self.commentNone: + self.Write( "#" + key, self.untranslated ) # writes dictionary to open outfile def WriteDictionary0( self ): @@ -116,6 +120,12 @@ # flag indicating whether the next item needs an extra separation line separate = True + # flag indicating whether the last language item was translated + lastTranslated = True + + # flag indicating whether the last line was empty + lastEmpty = False + # read through base file, rewriting it for line in infile.readlines(): pair = self.ParseLine( line ) @@ -124,12 +134,16 @@ try: del self.lostcomments[ line ] except KeyError: pass # just print line, it is a comment or whitespace - self.outfile.write( line ) + empty = ( len(line) <= 1 ) + if lastTranslated or ( not empty or not lastEmpty ): + self.outfile.write( line ) + lastEmpty = empty separate = False else: if not pair[0] == "include": # write original text as a comment - if self.commentAll or pair[0] not in self.dictionary: + lastTranslated = pair[0] in self.dictionary + if self.commentAll or ( not lastTranslated and not self.commentNone ): if separate: self.outfile.write("\n") self.Write( self.autoComment, pair[1] ) @@ -204,6 +218,8 @@ else: if len( sys.argv ) >= 2 and sys.argv[1] == "--complete": lu.commentAll = True + if len( sys.argv ) >= 2 and sys.argv[1] == "--scm": + lu.commentNone = True # read in all translations for file in sys.argv[1:]: Modified: armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp 2009-01-26 09:38:52 UTC (rev 8894) +++ armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp 2009-01-26 10:12:03 UTC (rev 8895) @@ -617,6 +617,8 @@ // is the authority an abreviation? bool shortcut = true; + // does it contain a path? + bool hasPath = false; // is the server a raw IP? bool rawIP = true; @@ -695,6 +697,7 @@ } slash = false; + hasPath = true; } } @@ -702,13 +705,14 @@ if( inHostName || inPort ) { outShort.put(tolower(c)); - outFull.put(c); + outFull.put( (char) c ); } else { - outDirectory.put(c); + outDirectory.put( (char) c); } + c = in.get(); } if ( slash ) @@ -725,6 +729,7 @@ return ReportAuthorityError( tOutput( "$login_error_invalidurl_rawip", authority ) ); } + authority = outShort.str().c_str(); fullAuthority = outFull.str().c_str(); @@ -744,10 +749,10 @@ shortcut = true; } - if( slash ) + if( hasPath ) { - fullAuthority << outDirectory; - authority << outDirectory; + fullAuthority += outDirectory.str().c_str(); + authority += outDirectory.str().c_str(); } } Modified: armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp 2009-01-26 09:38:52 UTC (rev 8894) +++ armagetronad/trunk/armagetronad/src/network/nServerInfo.cpp 2009-01-26 10:12:03 UTC (rev 8895) @@ -82,6 +82,9 @@ nServerInfoCharacterFilter sn_serverNameCharacterFilter; +// number of big server info queries to accept (-1 for infinity) +static int sn_numAcceptQueries = 0; + static int sn_MaxUnreachable() { return sn_IsMaster ? 10 : 5; @@ -1161,6 +1164,21 @@ if ( FloodProtection( m ) ) return; + // allow some followup queries + if ( sn_numAcceptQueries >= 0 ) + { + sn_numAcceptQueries += 3; + if ( sn_numAcceptQueries > 10 ) + { + sn_numAcceptQueries = 10; + } + if ( sn_numAcceptQueries < 5 ) + { + sn_numAcceptQueries = 5; + } + // con << sn_numAcceptQueries << "\n"; + } + // immediately respond with a small info tJUST_CONTROLLED_PTR< nMessage > ret = tNEW(nMessage)(SmallServerDescriptor); @@ -1250,6 +1268,19 @@ void nServerInfo::GiveBigServerInfo(nMessage &m) { + // check whether we should respond + if ( sn_numAcceptQueries >= 0 ) + { + if( sn_numAcceptQueries == 0 ) + { + // ignore + return; + } + + --sn_numAcceptQueries; + // con << sn_numAcceptQueries << "\n"; + } + if ( FloodProtection( m ) ) return; @@ -1684,6 +1715,9 @@ void nServerInfo::TellMasterAboutMe(nServerInfoBase *masterInfo) { + // accept infinite queries + sn_numAcceptQueries = -1; + // don't reinitialize the network system nSocketResetInhibitor inhibitor; Modified: armagetronad/trunk/armagetronad/src/tron/gWall.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gWall.cpp 2009-01-26 09:38:52 UTC (rev 8894) +++ armagetronad/trunk/armagetronad/src/tron/gWall.cpp 2009-01-26 10:12:03 UTC (rev 8895) @@ -195,9 +195,9 @@ } - if (h>9000){ - if (sr_lowerSky || sg_MoviePack()) h=lower_height; - if (sr_upperSky && !sg_MoviePack()) h=upper_height; + if (h>lower_height){ + if (sr_upperSky && !sg_MoviePack() && h>upper_height) h=upper_height; + else if (sr_lowerSky || sg_MoviePack()) h=lower_height; } BeginQuads(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-26 12:53:45
|
Revision: 8902 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8902&view=rev Author: z-man Date: 2009-01-26 12:43:01 +0000 (Mon, 26 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8894 to 8901: ------------------------------------------------------------------------ r8901 | z-man | 2009-01-26 13:34:18 +0100 (Mon, 26 Jan 2009) | 2 lines More .cvsignores removed. ------------------------------------------------------------------------ r8900 | z-man | 2009-01-26 13:33:27 +0100 (Mon, 26 Jan 2009) | 2 lines Removing obsolete .cvsignore files. Finally :) ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8894&view=rev Removed Paths: ------------- armagetronad/trunk/armagetronad/.cvsignore armagetronad/trunk/armagetronad/batch/.cvsignore armagetronad/trunk/armagetronad/config/.cvsignore armagetronad/trunk/armagetronad/desktop/.cvsignore armagetronad/trunk/armagetronad/language/.cvsignore armagetronad/trunk/armagetronad/resource/.cvsignore armagetronad/trunk/armagetronad/src/.cvsignore armagetronad/trunk/armagetronad/src/doc/.cvsignore armagetronad/trunk/armagetronad/src/doc/net/.cvsignore armagetronad/trunk/armagetronad/src/engine/.cvsignore armagetronad/trunk/armagetronad/src/first/.cvsignore armagetronad/trunk/armagetronad/src/network/.cvsignore armagetronad/trunk/armagetronad/src/render/.cvsignore armagetronad/trunk/armagetronad/src/thirdparty/.cvsignore armagetronad/trunk/armagetronad/src/thirdparty/particles/.cvsignore armagetronad/trunk/armagetronad/src/tools/.cvsignore armagetronad/trunk/armagetronad/src/tron/.cvsignore armagetronad/trunk/armagetronad/src/ui/.cvsignore armagetronad/trunk/armagetronad/www-root/.cvsignore armagetronad/trunk/build/.cvsignore armagetronad/trunk/build_codeblocks/.cvsignore armagetronad/trunk/build_eclipse/.cvsignore armagetronad/trunk/build_eclipse/sysprofile/.cvsignore armagetronad/trunk/build_visualc/.cvsignore armagetronad/trunk/winlibs/.cvsignore armagetronad/trunk/winlibs/libvorbis/win32/.cvsignore Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8894 + /armagetronad/branches/0.2.8:8751-8852,8855-8901 Deleted: armagetronad/trunk/armagetronad/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,64 +0,0 @@ -Eclipse* -configure -version.h -CVS -doc_bak -log -leak.history -config.cache -config.log -.gdbinit -config.h -Makefile -leak.log -diff -scorelog.txt -ladder.txt -highscores.txt -config.status -won_matches.txt -mainicon.ico -.dont_update -screenshot_1.bmp -won_rounds.txt -Makefile.global -memprofile* -frommaster.srv -screenshot* -ml -astat -master -bindist -master_list.srv -big_brother -master.srv -*.dll -*.ilk -README.txt -README-SDL.txt -update.bat -tagcvs -.infiles -autom4te.cache -config.h.stamp -Testme -html.m4 -var -ded -.beautytag* -config.h.in -aclocal.m4 -ChangeLog -INSTALL -Makefile.in -missing -COPYING -version -depcomp -compile -install-sh -config.sub -.version.new -.cvsfiles -stamp-h1 -touch Deleted: armagetronad/trunk/armagetronad/batch/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/batch/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/batch/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,13 +0,0 @@ -install -masterstarter -pushscores -rcd_config -rcd_master -rcd_server -rcd_startstop -serverstarter -starter -stat -uninstall -Makefile.in -sysinstall Deleted: armagetronad/trunk/armagetronad/config/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/config/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/config/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,5 +0,0 @@ -.tag -aiplayers.cfg -rc.config -Makefile.in -autoexec.cfg Deleted: armagetronad/trunk/armagetronad/desktop/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/desktop/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/desktop/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,2 +0,0 @@ -Makefile.in -armagetronad.desktop Deleted: armagetronad/trunk/armagetronad/language/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/language/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/language/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,3 +0,0 @@ -.tag -languages.txt -*.bak Deleted: armagetronad/trunk/armagetronad/resource/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/resource/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/resource/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,3 +0,0 @@ -automatic -Makefile.in -included \ No newline at end of file Deleted: armagetronad/trunk/armagetronad/src/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,4 +0,0 @@ -Makefile.in -tPaths.h -armagetronad_main -.deps Deleted: armagetronad/trunk/armagetronad/src/doc/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/doc/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/doc/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,11 +0,0 @@ -doxygen -Doxyfile -commands.txt -Makefile -ml -*.html -*.ghost -.m4.dep -Makefile.in -*.dep -html.m4 Deleted: armagetronad/trunk/armagetronad/src/doc/net/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/doc/net/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/doc/net/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,8 +0,0 @@ -Makefile -ml -*.html -*.ghost -.m4.dep -Makefile.in -*.dep - Deleted: armagetronad/trunk/armagetronad/src/engine/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/engine/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/engine/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -*.dep Deleted: armagetronad/trunk/armagetronad/src/first/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/first/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/first/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -Makefile.in Deleted: armagetronad/trunk/armagetronad/src/network/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/network/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/network/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,3 +0,0 @@ -*.dep -armagetronad-master -armagetronad-stat Deleted: armagetronad/trunk/armagetronad/src/render/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/render/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/render/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -*.dep Deleted: armagetronad/trunk/armagetronad/src/thirdparty/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/thirdparty/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/thirdparty/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -Makefile.in Deleted: armagetronad/trunk/armagetronad/src/thirdparty/particles/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/thirdparty/particles/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/thirdparty/particles/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,2 +0,0 @@ -Makefile.in -.deps Deleted: armagetronad/trunk/armagetronad/src/tools/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/tools/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/tools/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -*.dep Deleted: armagetronad/trunk/armagetronad/src/tron/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/tron/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/tron/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,2 +0,0 @@ -*.dep -armagetronad Deleted: armagetronad/trunk/armagetronad/src/ui/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/src/ui/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/src/ui/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -*.dep Deleted: armagetronad/trunk/armagetronad/www-root/.cvsignore =================================================================== --- armagetronad/trunk/armagetronad/www-root/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/armagetronad/www-root/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -Makefile.in Deleted: armagetronad/trunk/build/.cvsignore =================================================================== --- armagetronad/trunk/build/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/build/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,9 +0,0 @@ -.includes-updated -.remaking-includes -ap-* -aptest -aptest-client -aptest-server -builds -make.conf -tarballs Deleted: armagetronad/trunk/build_codeblocks/.cvsignore =================================================================== --- armagetronad/trunk/build_codeblocks/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/build_codeblocks/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -.project Deleted: armagetronad/trunk/build_eclipse/.cvsignore =================================================================== --- armagetronad/trunk/build_eclipse/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/build_eclipse/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,6 +0,0 @@ -build -make.config -preconfig -autoclean -register -memprofile1.txt Deleted: armagetronad/trunk/build_eclipse/sysprofile/.cvsignore =================================================================== --- armagetronad/trunk/build_eclipse/sysprofile/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/build_eclipse/sysprofile/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -profile.config Deleted: armagetronad/trunk/build_visualc/.cvsignore =================================================================== --- armagetronad/trunk/build_visualc/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/build_visualc/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,15 +0,0 @@ -.project -*.ncb -*.opt -*.positions -*.suo -*.plg -*.Tags.WW -*.vcproj.* -tmp -leak.log -memprofile* -stdout.txt -stderr.txt -*.sln -*.vcproj Deleted: armagetronad/trunk/winlibs/.cvsignore =================================================================== --- armagetronad/trunk/winlibs/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/winlibs/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1 +0,0 @@ -.project Deleted: armagetronad/trunk/winlibs/libvorbis/win32/.cvsignore =================================================================== --- armagetronad/trunk/winlibs/libvorbis/win32/.cvsignore 2009-01-26 12:34:18 UTC (rev 8901) +++ armagetronad/trunk/winlibs/libvorbis/win32/.cvsignore 2009-01-26 12:43:01 UTC (rev 8902) @@ -1,20 +0,0 @@ -Makefile -Makefile.in -VorbisEnc_Dynamic_Debug -VorbisEnc_Dynamic_Release -VorbisEnc_Static_Debug -VorbisEnc_Static_Release -VorbisFile_Dynamic_Debug -VorbisFile_Dynamic_Release -VorbisFile_Static_Debug -VorbisFile_Static_Release -Vorbis_Dynamic_Debug -Vorbis_Dynamic_Release -Vorbis_Static_Debug -Vorbis_Static_Release -*.dep -*.mak -*.ncb -*.opt -*.dsw -*.plg This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-27 09:40:24
|
Revision: 8910 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8910&view=rev Author: z-man Date: 2009-01-27 09:40:19 +0000 (Tue, 27 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8901 to 8906: ------------------------------------------------------------------------ r8906 | bazaarmagetron | 2009-01-27 08:27:53 +0100 (Tue, 27 Jan 2009) | 4 lines author: Manuel Moos Teams the client thinks cannot be joined are no longer hidden in the menu, but shown with transparency (darker without alpha blending). ------------------------------------------------------------------------ r8905 | bazaarmagetron | 2009-01-27 08:27:05 +0100 (Tue, 27 Jan 2009) | 1 line Manuel Moos: Removed obsolete explicit resource path. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8901&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/config/examples/cvs_test/sumo_complete.cfg armagetronad/trunk/armagetronad/src/render/rFont.cpp armagetronad/trunk/armagetronad/src/tron/gTeam.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8901 + /armagetronad/branches/0.2.8:8751-8852,8855-8906 Modified: armagetronad/trunk/armagetronad/config/examples/cvs_test/sumo_complete.cfg =================================================================== --- armagetronad/trunk/armagetronad/config/examples/cvs_test/sumo_complete.cfg 2009-01-27 09:26:03 UTC (rev 8909) +++ armagetronad/trunk/armagetronad/config/examples/cvs_test/sumo_complete.cfg 2009-01-27 09:40:19 UTC (rev 8910) @@ -2,7 +2,7 @@ # set map in a way compatible with old clients MAP_FILE_OVERRIDE 0 -MAP_FILE Z-Man/fortress/sumo_4x4-0.1.1.aamap.xml(http://resource.armagetronad.net/resource/Anonymous/polygon/regular/square-1.0.1.aamap.xml) +MAP_FILE Z-Man/fortress/sumo_4x4-0.1.1.aamap.xml # freestyle game: no round winner GAME_TYPE 0 Modified: armagetronad/trunk/armagetronad/src/render/rFont.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/render/rFont.cpp 2009-01-27 09:26:03 UTC (rev 8909) +++ armagetronad/trunk/armagetronad/src/render/rFont.cpp 2009-01-27 09:40:19 UTC (rev 8910) @@ -746,6 +746,13 @@ void rTextField::SetDefaultColor( tColor const & defaultColor ) { defaultColor_ = defaultColor; + if ( !sr_alphaBlend ) + { + defaultColor_.r_ *= defaultColor_.a_; + defaultColor_.g_ *= defaultColor_.a_; + defaultColor_.b_ *= defaultColor_.a_; + defaultColor_.a_ = 1; + } blendColor_ = tColor(); } @@ -792,6 +799,13 @@ void rTextField::SetBlendColor( tColor const & blendColor ) { blendColor_ = blendColor; + if ( !sr_alphaBlend ) + { + blendColor_.r_ *= blendColor_.a_; + blendColor_.g_ *= blendColor_.a_; + blendColor_.b_ *= blendColor_.a_; + blendColor_.a_ = 1; + } } tColor rTextField::defaultColor_; Modified: armagetronad/trunk/armagetronad/src/tron/gTeam.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gTeam.cpp 2009-01-27 09:26:03 UTC (rev 8909) +++ armagetronad/trunk/armagetronad/src/tron/gTeam.cpp 2009-01-27 09:40:19 UTC (rev 8910) @@ -98,11 +98,13 @@ { tJUST_CONTROLLED_PTR< ePlayerNetID > player; tJUST_CONTROLLED_PTR< eTeam > team; + bool canJoin_; public: - gMenuItemPlayerTeam(uMenu *M,ePlayerNetID* p, eTeam* t ) + gMenuItemPlayerTeam(uMenu *M,ePlayerNetID* p, eTeam* t, bool canJoin ) : uMenuItem( M, tOutput("$team_menu_join_help", t->Name())), player ( p ), - team ( t) + team ( t), + canJoin_( canJoin ) { } @@ -110,7 +112,7 @@ { tOutput text; PrepareTeamText(&text, team, player, "$team_menu_join"); - DisplayTextSpecial( x, y, text, selected, alpha ); + DisplayTextSpecial( x, y, text, selected, alpha * ( canJoin_ ? 1 : ( selected ? .8 : .5 ) ) ); } virtual void Enter() @@ -270,9 +272,9 @@ for ( int i = 0; i<eTeam::teams.Len(); i++ ) { eTeam *team = eTeam::teams(i); - if ( team && team != player->NextTeam() && !team->PlayerMayJoin( player ) ) + if ( team && team != player->NextTeam() && !team->PlayerMayJoin( player )) { - items[ items.Len() ] = tNEW( gMenuItemPlayerTeam ) ( &playerMenu, player, team ); + items[ items.Len() ] = tNEW( gMenuItemPlayerTeam ) ( &playerMenu, player, team, false ); } } // second pass add teams who probably can be joined @@ -281,7 +283,7 @@ { eTeam *team = eTeam::teams(i); if ( team && team != player->NextTeam() && team->PlayerMayJoin( player )) - items[ items.Len() ] = tNEW( gMenuItemPlayerTeam ) ( &playerMenu, player, team ); + items[ items.Len() ] = tNEW( gMenuItemPlayerTeam ) ( &playerMenu, player, team, true ); } if ( player->IsSpectating() || This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-01-29 12:38:14
|
Revision: 8922 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8922&view=rev Author: z-man Date: 2009-01-29 12:38:10 +0000 (Thu, 29 Jan 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8906 to 8921: ------------------------------------------------------------------------ r8921 | bazaarmagetron | 2009-01-29 13:31:39 +0100 (Thu, 29 Jan 2009) | 2 lines Manuel Moos: Added timer drift compensation. ------------------------------------------------------------------------ r8920 | bazaarmagetron | 2009-01-29 12:11:11 +0100 (Thu, 29 Jan 2009) | 2 lines Manuel Moos: Applied lag clamping on client, too. ------------------------------------------------------------------------ r8919 | bazaarmagetron | 2009-01-28 22:36:14 +0100 (Wed, 28 Jan 2009) | 4 lines author: Manuel Moos Carefully clarified our odd signed arithmetics during string encoding/decoding to the compiler. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8906&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/NEWS armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp armagetronad/trunk/armagetronad/src/engine/eTimer.cpp armagetronad/trunk/armagetronad/src/engine/eTimer.h armagetronad/trunk/armagetronad/src/network/nNetwork.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8906 + /armagetronad/branches/0.2.8:8751-8852,8855-8921 Modified: armagetronad/trunk/armagetronad/NEWS =================================================================== --- armagetronad/trunk/armagetronad/NEWS 2009-01-29 12:31:39 UTC (rev 8921) +++ armagetronad/trunk/armagetronad/NEWS 2009-01-29 12:38:10 UTC (rev 8922) @@ -281,6 +281,8 @@ Bugfixes -------- +- Added compensation for drifting timers (observed often with + overclocked mainboards) - Text input fields now let the text wrap correctly and make use of the space allocated for them in a not-completely-dumb way. And *sigh* depending on the text field, color codes are either ignored (for the usernames) or both displayed in text and rendered. Modified: armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp 2009-01-29 12:31:39 UTC (rev 8921) +++ armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp 2009-01-29 12:38:10 UTC (rev 8922) @@ -44,6 +44,8 @@ static REAL se_lagSlowWeight=.2f; // extra weight lag reports from the server influence the slow lag compensation with static REAL se_lagFastWeight=1.0f; // extra weight lag reports from the server influence the fast lag compensation with +static REAL se_lagCreditSingle = .1f; // maximal seconds of lag credit given or accepted in a single event + static tSettingItem< REAL > se_maxLagSpeedupConf( "LAG_MAX_SPEEDUP_TIMER", se_maxLagSpeedup ); static tSettingItem< REAL > se_lagSlowDecayTimeConf( "LAG_SLOW_TIME", se_lagSlowDecayTime ); static tSettingItem< REAL > se_lagFastDecayTimeConf( "LAG_FAST_TIME", se_lagFastDecayTime ); @@ -63,6 +65,9 @@ con << "Received message of " << lag << " seconds of lag, weight " << weight << "\n"; #endif + // clamp + lag = lag > se_lagCreditSingle ? se_lagCreditSingle : lag; + // memorize the time of serious reports if ( weight > 1 ) lagLast_ = tSysTimeFloat(); @@ -89,7 +94,7 @@ if ( lagFast_ < lagSlow_ ) lagFast_ = lagSlow_; - // clam smooth lag with fast lag + // clamp smooth lag with fast lag if ( smoothLag_ > lagFast_ ) smoothLag_ = lagFast_; @@ -130,9 +135,6 @@ // maximal seconds of lag credit static REAL se_lagCredit = .5f; -// maximal seconds of lag credit given in a single event -static REAL se_lagCreditSingle = .1f; - // sweet spot, the fill ratio of lag credit the server tries to keep the client at static REAL se_lagCreditSweetSpot = .5f; Modified: armagetronad/trunk/armagetronad/src/engine/eTimer.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/eTimer.cpp 2009-01-29 12:31:39 UTC (rev 8921) +++ armagetronad/trunk/armagetronad/src/engine/eTimer.cpp 2009-01-29 12:38:10 UTC (rev 8922) @@ -73,6 +73,11 @@ averageSpf_.Add(1/60.0,5); creationSystemTime_ = tSysTimeFloat(); + + lastStartTime_ = lastRemoteTime_ = 0; + + // assume strongly the clocks are in sync + startTimeDrift_.Add( 0, 100 ); } eTimer::~eTimer(){ @@ -119,6 +124,8 @@ void eTimer::ReadSync(nMessage &m){ nNetObject::ReadSync(m); + bool checkDrift = true; + //std::cerr << "Got sync:" << remote_currentTime << ":" << speed << '\n'; // determine the best estimate of the start time offset that reproduces the sent remote @@ -136,6 +143,7 @@ { qualityTester_.Timestep( 100 ); startTimeOffset_.Reset(); + checkDrift = false; } speed = remoteSpeed; @@ -162,6 +170,7 @@ if ( remote_currentTime < se_timerStartFudgeStop ) { remote_currentTime += ping * ( se_timerStartFudgeStop - remote_currentTime ) * se_timerStartFudge; + checkDrift = false; } // determine quality from ping variance @@ -170,6 +179,27 @@ // determine start time remoteStartTimeOffset = smoothedSystemTime_ - startTime_ - remote_currentTime; + // calculate drift + if( checkDrift ) + { + REAL timeDifference = remote_currentTime - lastRemoteTime_; + REAL drift = lastStartTime_ - remoteStartTimeOffset; + + if ( timeDifference > 0 ) + { + REAL driftAverage = startTimeDrift_.GetAverage(); + // con << "Drift: " << driftAverage << "\n"; + REAL driftDifference = drift/timeDifference; + + timeDifference = timeDifference > 1 ? 1 : timeDifference; + startTimeDrift_.Timestep( timeDifference * .1 ); + startTimeDrift_.Add( driftDifference + driftAverage, timeDifference ); + } + } + + lastStartTime_ = remoteStartTimeOffset; + lastRemoteTime_ = remote_currentTime; + // let the averagers decay faster at the beginning if ( remote_currentTime < 0 ) { @@ -275,7 +305,7 @@ // pingAverager_ .Timestep( timeStep * .05); // if we're not running at default speed, update the virtual start time - startTime_ += ( 1.0 - speed ) * timeStep; + startTime_ += ( 1.0 - speed - startTimeDrift_.GetAverage() ) * timeStep; // smooth time offset { Modified: armagetronad/trunk/armagetronad/src/engine/eTimer.h =================================================================== --- armagetronad/trunk/armagetronad/src/engine/eTimer.h 2009-01-29 12:31:39 UTC (rev 8921) +++ armagetronad/trunk/armagetronad/src/engine/eTimer.h 2009-01-29 12:38:10 UTC (rev 8922) @@ -62,8 +62,12 @@ double smoothedSystemTime_; //!< the smoothed system time double startTime_; //!< when was the last game started? nAverager startTimeOffset_; //!< the smoothed average of this averager is added to the start time on the client + nAverager startTimeDrift_; //!< drift of effective start time REAL startTimeSmoothedOffset_; //!< the smoothed average of startTimeOffset_ nAverager qualityTester_; //!< averager that tells us about the quality of the sync messages + + REAL lastStartTime_; //!< last received start time + REAL lastRemoteTime_; //!< last received time // the current game time is always smoothedSystemTime_ - ( startTime_ + startTimeSmoothedOffset_ ). Modified: armagetronad/trunk/armagetronad/src/network/nNetwork.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-01-29 12:31:39 UTC (rev 8921) +++ armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-01-29 12:38:10 UTC (rev 8922) @@ -1196,8 +1196,17 @@ // write first pairs of bytes for(i=0;i+1<len;i+=2) - Write(sRaw[i]+(sRaw[i+1] << 8)); + { + // yep. Signed shorts. That gives + // nice overflows. By the time we noticed, + // it was too late to change :) + short lo = s[i]; + short hi = s[i+1]; + // combine the two into a single short + Write( lo + (hi << 8) ); + } + // write last byte if (i<len) Write(sRaw[i]); @@ -1229,10 +1238,16 @@ s.reserve(len); for(int i=0;i<len;i+=2){ Read(w); - tString::CHAR c1 = w & 255; - sn_AddToString( s, c1 ); + + // carefully reverse the signed + // encoding logic + char lo = w & 0xff; + unsigned short hi = (short)w - lo; + hi >>= 8; + sn_AddToString( s, lo ); + if (i+1<len) - sn_AddToString( s, (w-c1) >> 8 ); + sn_AddToString( s, hi ); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-01 14:57:43
|
Revision: 8938 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8938&view=rev Author: z-man Date: 2009-02-01 14:57:41 +0000 (Sun, 01 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8921 to 8937: ------------------------------------------------------------------------ r8930 | bazaarmagetron | 2009-01-31 23:05:27 +0100 (Sat, 31 Jan 2009) | 2 lines Manuel Moos: Added section for post-beta1 changes. ------------------------------------------------------------------------ r8923 | bazaarmagetron | 2009-01-29 20:21:51 +0100 (Thu, 29 Jan 2009) | 4 lines author: Manuel Moos Stupid Z-Man didn't know 'char' is allowed to mean 'unsigned char'. Fixes string encoding/decoding on systems where this is the case. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8921&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/NEWS armagetronad/trunk/armagetronad/src/network/nNetwork.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8921 + /armagetronad/branches/0.2.8:8751-8852,8855-8937 Modified: armagetronad/trunk/armagetronad/NEWS =================================================================== --- armagetronad/trunk/armagetronad/NEWS 2009-02-01 02:58:26 UTC (rev 8937) +++ armagetronad/trunk/armagetronad/NEWS 2009-02-01 14:57:41 UTC (rev 8938) @@ -87,6 +87,9 @@ - Added support for armagetronad URLs on Mac OS X and KDE -- armagetronad://<server>[:<port>]. port defaults to 4534. - New command-line flag: --connect <server>[:<port>]. Startup the game and connect directly to <server>. +Changes since 0.2.8.3_beta1: +============================ + Changes since 0.2.8.2 ===================== Modified: armagetronad/trunk/armagetronad/src/network/nNetwork.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-01 02:58:26 UTC (rev 8937) +++ armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-01 14:57:41 UTC (rev 8938) @@ -1197,19 +1197,19 @@ // write first pairs of bytes for(i=0;i+1<len;i+=2) { - // yep. Signed shorts. That gives + // yep. Signed arithmetic. That gives // nice overflows. By the time we noticed, // it was too late to change :) - short lo = s[i]; - short hi = s[i+1]; + signed char lo = s[i]; + signed char hi = s[i+1]; // combine the two into a single short - Write( lo + (hi << 8) ); + Write( short(lo) + (short(hi) << 8) ); } // write last byte if (i<len) - Write(sRaw[i]); + Write( static_cast< signed char >( sRaw[i] ) ); return *this; } @@ -1241,8 +1241,8 @@ // carefully reverse the signed // encoding logic - char lo = w & 0xff; - unsigned short hi = (short)w - lo; + signed char lo = w & 0xff; + signed short hi = ((short)w) - lo; hi >>= 8; sn_AddToString( s, lo ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-02 12:36:43
|
Revision: 8941 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8941&view=rev Author: z-man Date: 2009-02-02 12:36:40 +0000 (Mon, 02 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8937 to 8940: ------------------------------------------------------------------------ r8940 | bazaarmagetron | 2009-02-02 13:32:11 +0100 (Mon, 02 Feb 2009) | 4 lines r8939 | bazaarmagetron | 2009-02-02 13:31:12 +0100 (Mon, 02 Feb 2009) | 4 lines author: Manuel Moos Fixed rare wallpassing bug; it required what whould usually be an instakill and infinte wall length. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8937&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/NEWS armagetronad/trunk/armagetronad/src/tron/gCycle.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8937 + /armagetronad/branches/0.2.8:8751-8852,8855-8940 Modified: armagetronad/trunk/armagetronad/NEWS =================================================================== --- armagetronad/trunk/armagetronad/NEWS 2009-02-02 12:32:11 UTC (rev 8940) +++ armagetronad/trunk/armagetronad/NEWS 2009-02-02 12:36:40 UTC (rev 8941) @@ -90,6 +90,9 @@ Changes since 0.2.8.3_beta1: ============================ +- Fixed rare wallpassing bug; it required what whould usually be an + instakill and infinte wall length. + Changes since 0.2.8.2 ===================== Modified: armagetronad/trunk/armagetronad/src/tron/gCycle.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-02 12:32:11 UTC (rev 8940) +++ armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-02 12:36:40 UTC (rev 8941) @@ -1636,6 +1636,10 @@ static REAL sg_CycleWallLengthFromDist( REAL distance ) { REAL len = gCycle::WallsLength(); + if ( len <= 0 ) + { + return len; + } // make base length longer or shorter, depending on the sign of sg_cycleDistWallShrink REAL d = sg_cycleDistWallShrinkOffset - distance; @@ -1650,6 +1654,10 @@ { // get distance influence REAL len = sg_CycleWallLengthFromDist( distance ); + if ( len <= 0 ) + { + return len; + } // apply rubber shortening return len - GetRubber() * sg_cycleRubberWallShrink; @@ -3477,7 +3485,7 @@ // another possibility: if the walls are very short compared to rubber, we could // get away with just accounding for some rubber on the cycle that we'd need to kill // otherwise. - if ( !saved && verletSpeed_ >= 0 ) + if ( !saved && verletSpeed_ >= 0 && this->ThisWallsLength() > 0 ) { REAL dt = otherTime - time; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-12 12:38:24
|
Revision: 8954 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8954&view=rev Author: z-man Date: 2009-02-12 12:38:21 +0000 (Thu, 12 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8940 to 8953: ------------------------------------------------------------------------ r8953 | bazaarmagetron | 2009-02-12 12:39:50 +0100 (Thu, 12 Feb 2009) | 2 lines Manuel Moos: properly saving and restoring CFLAGS for ZThread test. ------------------------------------------------------------------------ r8952 | bazaarmagetron | 2009-02-09 03:25:34 +0100 (Mon, 09 Feb 2009) | 2 lines Daniel Lee Harple: Using the custom connect menu after browsing a server subculture didn't work. ------------------------------------------------------------------------ r8951 | bazaarmagetron | 2009-02-09 01:04:31 +0100 (Mon, 09 Feb 2009) | 2 lines Manuel Moos: Better alignment for more than 9 players. ------------------------------------------------------------------------ r8950 | bazaarmagetron | 2009-02-09 00:56:56 +0100 (Mon, 09 Feb 2009) | 4 lines author: Manuel Moos Implemented team ID printing for /team output for ease of /shuffling. Implemented /myteam to only get your own team layout. ------------------------------------------------------------------------ r8949 | bazaarmagetron | 2009-02-08 04:47:28 +0100 (Sun, 08 Feb 2009) | 2 lines Daniel Lee Harple: Removed debug output. ------------------------------------------------------------------------ r8946 | bazaarmagetron | 2009-02-04 20:57:03 +0100 (Wed, 04 Feb 2009) | 4 lines author: epsy Changed se_DeOp to not use se_ChangeAccess. Moved stuff from se_ChangeAccess to se_CanChangeAccess. Removed references to /promote. ------------------------------------------------------------------------ r8945 | bazaarmagetron | 2009-02-04 20:55:24 +0100 (Wed, 04 Feb 2009) | 1 line epsy: Fixed spectators not seeing their own team messages when invited ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8940&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/acinclude.m4 armagetronad/trunk/armagetronad/language/english_base.txt armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp armagetronad/trunk/armagetronad/src/tron/gServerFavorites.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8940 + /armagetronad/branches/0.2.8:8751-8852,8855-8953 Modified: armagetronad/trunk/armagetronad/acinclude.m4 =================================================================== --- armagetronad/trunk/armagetronad/acinclude.m4 2009-02-12 11:39:50 UTC (rev 8953) +++ armagetronad/trunk/armagetronad/acinclude.m4 2009-02-12 12:38:21 UTC (rev 8954) @@ -763,7 +763,7 @@ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_zthreadtest" = "xyes" ; then ac_save_CXXFLAGS="$CXXFLAGS" - ac_save_CFLAGS="$CXXFLAGS" + ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CXXFLAGS="$CXXFLAGS $ZTHREAD_CXXFLAGS" CFLAGS="$CFLAGS $ZTHREAD_CXXFLAGS" @@ -887,7 +887,7 @@ echo "*** may want to edit the zthread-config script: $ZTHREAD_CONFIG" ]) CC=${CC_OLD} - CFLAGS="$ac_save_CXXFLAGS" + CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi Modified: armagetronad/trunk/armagetronad/language/english_base.txt =================================================================== --- armagetronad/trunk/armagetronad/language/english_base.txt 2009-02-12 11:39:50 UTC (rev 8953) +++ armagetronad/trunk/armagetronad/language/english_base.txt 2009-02-12 12:38:21 UTC (rev 8954) @@ -2842,10 +2842,10 @@ access_level_hide_of_help Minimal access level to be able to hide it's own user account information. access_level_hide_to_help Minimal access level to see everyone's user account information. access_level_team_help Minimal access level for /lock, /unlock, /invite and /uninvite team management. -access_level_op_help Minimal access level for /op, /deop, /promote and /demote co-admin management commands commands. -access_level_op_max_help Maximal access level attainable by /op and /promote commands. +access_level_op_help Minimal access level for /op and /deop co-admin management commands commands. +access_level_op_max_help Maximal access level directly attainable by /op commands. access_level_admin_help Minimal access level for /admin command. -access_level_rtfm_help Minimal access level for /teach or /rtfm command. +access_level_rtfm_help Minimal access level for /teach or /rtfm command. access_level_chat_help Minimal access level for chatting. access_level_ips_help Minimal access level you need for seeing IPs of other players in the /players command. access_level_nver_help Minimal access level you need for seeing Network versions/strings from other players in /players. @@ -2866,7 +2866,7 @@ access_level_vote_command_execute_help Minimal access level successful command votes will be executed at. access_level_chat_timeout_help Time in seconds between public announcements that someone wants to chat, but can't. Set to 0 to disable the public warnings. -access_level_chat_request \10xRESETT would like to chat, but is not authorized yet. Would someone be so kind and say "/op \2" or "/promote \2"?\n +access_level_chat_request \10xRESETT would like to chat, but is not authorized yet. Would someone be so kind and say "/op \2"?\n access_level_chat_denied 0xff7f7fChat denied,0xffffff insufficient access level.\n access_level_op_denied 0xff7f7f\1 denied,0xffffff insufficient access level.\n access_level_op_overpowered 0xff7f7f\1 denied,0xffffff your need higher access righrs than your victim.\n @@ -2874,7 +2874,7 @@ access_level_op_denied_max 0xff7f7f\1 denied,0xffffff your victim already has maximal rights.\n access_level_op_denied_ai 0xff7f7f\1 denied,0xffffff your victim is an AI.\n access_level_op_same \1: This would have no effect.\n -access_level_op_unclear \1: User is already logged in, please explicitely set an access level.\n +access_level_op_unclear \1: User is already logged in, please explicitly set an access level.\n access_level_demote \1 has been demoted to "\2" by order of \3.\n access_level_promote \1 has been promoted to "\2" by order of \3.\n Modified: armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-02-12 11:39:50 UTC (rev 8953) +++ armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-02-12 12:38:21 UTC (rev 8954) @@ -2041,8 +2041,6 @@ tColoredString say; say << tColoredString::ColorString(1,1,.5) << "( " << *sender; - con << team->Name() << "\n"; - if( !team ) { // foo --> Spectatos: message @@ -2176,6 +2174,32 @@ static tSettingItem< tAccessLevel > se_opAccessLevelMaxConf( "ACCESS_LEVEL_OP_MAX", se_opAccessLevelMax ); static tAccessLevelSetter se_opAccessLevelMaxConfLevel( se_opAccessLevelMaxConf, tAccessLevel_Owner ); +static bool se_CanChangeAccess( ePlayerNetID * admin, ePlayerNetID * victim, char const * command ) +{ + tASSERT( admin ); + tASSERT( victim ); + + if ( admin->GetAccessLevel() > se_opAccessLevel ) // Can he even use this command? + { + sn_ConsoleOut( tOutput( "$access_level_op_denied", command ), admin->Owner() ); + } + else if ( victim == admin ) + { + sn_ConsoleOut( tOutput( "$access_level_op_self", command ), admin->Owner() ); + } + else if ( admin->GetAccessLevel() >= victim->GetAccessLevel() ) + { + sn_ConsoleOut( tOutput( "$access_level_op_overpowered", command ), admin->Owner() ); + } + else + { + return true; + } + + return false; + +} + // an operation that changes the access level of another player typedef void (*OPFUNC)( ePlayerNetID * admin, ePlayerNetID * victim, tAccessLevel accessLevel ); @@ -2183,81 +2207,60 @@ { bool isexplicit = false; - if ( admin->GetAccessLevel() <= se_opAccessLevel ) + ePlayerNetID * victim = se_FindPlayerInChatCommand( admin, command, s ); + + if ( victim && se_CanChangeAccess( admin, victim, command ) ) { - ePlayerNetID * victim = se_FindPlayerInChatCommand( admin, command, s ); - if ( victim ) + // read optional access level, this part is merly a copypaste from the /shuffle code + int level = se_opAccessLevelMax; + if ( victim->IsAuthenticated() ) { - if ( victim == admin ) + level = victim->GetAccessLevel(); + } + char first; + s >> first; + if ( !s.eof() && !s.fail() ) + { + isexplicit = true; + s.unget(); + int newLevel = 0; + s >> newLevel; + + if ( first == '+' || first == '-' ) { - sn_ConsoleOut( tOutput( "$access_level_op_self", command ), admin->Owner() ); + level += newLevel; } - else if ( admin->GetAccessLevel() >= victim->GetAccessLevel() ) + else { - sn_ConsoleOut( tOutput( "$access_level_op_overpowered", command ), admin->Owner() ); + level = newLevel; } - else - { - // read optional access level, this part is merly a copypaste from the /shuffle code - int level = se_opAccessLevelMax; - if ( victim->IsAuthenticated() ) - { - level = victim->GetAccessLevel(); - } - char first; - s >> first; - if ( !s.eof() && !s.fail() ) - { - isexplicit = true; - s.unget(); - int newLevel = 0; - s >> newLevel; + } - if ( first == '+' || first == '-' ) - { - level += newLevel; - } - else - { - level = newLevel; - } - } + s >> level; - s >> level; + // Make a last safety check on the given AL, then DON'T TOUCH IT ANYMORE + if ( level <= admin->GetAccessLevel() ) + level = admin->GetAccessLevel() + 1; - if ( level <= admin->GetAccessLevel() ) - level = admin->GetAccessLevel() + 1; + tAccessLevel accessLevel; + accessLevel = static_cast< tAccessLevel >( level ); - tAccessLevel accessLevel; - - accessLevel = static_cast< tAccessLevel >( level ); - - if ( accessLevel == victim->GetAccessLevel() ) - { - if ( isexplicit ) - { - sn_ConsoleOut( tOutput( "$access_level_op_same", command ), admin->Owner() ); - } - else - { - sn_ConsoleOut( tOutput( "$access_level_op_unclear", command ), admin->Owner() ); - } - } - else if ( accessLevel > admin->GetAccessLevel() ) - { - (*F)( admin, victim, accessLevel ); - } - else - { - sn_ConsoleOut( tOutput( "$access_level_op_denied_max", command ), admin->Owner() ); - } + if ( accessLevel == victim->GetAccessLevel() ) + { + if ( isexplicit ) + { + sn_ConsoleOut( tOutput( "$access_level_op_same", command ), admin->Owner() ); } + else + { + sn_ConsoleOut( tOutput( "$access_level_op_unclear", command ), admin->Owner() ); + } } + else if ( accessLevel > admin->GetAccessLevel() ) + { + (*F)( admin, victim, accessLevel ); + } } - else - { - sn_ConsoleOut( tOutput( "$access_level_op_denied", command ), admin->Owner() ); - } } // Promote changes the access rights of an already authed player @@ -2337,11 +2340,20 @@ } // DeOp takes it away -void se_DeOp( ePlayerNetID * admin, ePlayerNetID * victim, tAccessLevel ) +void se_DeOp( ePlayerNetID * admin, std::istream & s, char const * command ) { - if ( victim->IsAuthenticated() ) + ePlayerNetID * victim = se_FindPlayerInChatCommand( admin, command, s ); + + if ( victim && se_CanChangeAccess ( admin, victim, command ) ) { - victim->DeAuthenticate( admin ); + if ( victim->IsAuthenticated() ) + { + victim->DeAuthenticate( admin ); + } + else + { + sn_ConsoleOut( tOutput( "$access_level_op_same", command ), admin->Owner() ); + } } } @@ -2555,7 +2567,7 @@ } // log out -static void se_AdminLogout( ePlayerNetID * p ) +static void se_AdminLogout( ePlayerNetID * p, char const * command ) { #ifdef KRAWALL_SERVER // revoke the other kind of authentication as well @@ -2563,6 +2575,10 @@ { p->DeAuthenticate(); } + else + { + sn_ConsoleOut( tOutput( "$access_level_op_same", command ), p->Owner() ); + } #else if ( p->IsLoggedIn() ) { @@ -2615,7 +2631,7 @@ if (command == "/login") { // Really, there's no reason one would log in and log out all the time - spam.factor_ = 2; + spam.factor_ = 1; if ( spam.Block() ) { return; @@ -2627,13 +2643,13 @@ } else if (command == "/logout") { - spam.factor_ = 2; + spam.factor_ = 1; if( spam.Block() ) { return; } - se_AdminLogout( p ); + se_AdminLogout( p, command ); } #ifdef KRAWALL_SERVER else if ( command == "/op" ) @@ -2642,7 +2658,7 @@ } else if ( command == "/deop" ) { - se_ChangeAccess( p, s, "/deop", &se_DeOp ); + se_DeOp( p, s, "/deop" ); } else if ( command == "/invite" ) { @@ -2974,8 +2990,6 @@ ePlayerNetID * admin = se_PlayerNetIDs(i); if ( - admin != p && - ( // two cases: ( // You are a speccing admin, and you aren't invited to anything: @@ -2988,7 +3002,6 @@ // invited players are also authorized currentTeam->IsInvited( admin ) ) - ) ) { se_SendTeamMessage(currentTeam, p, admin, msg); @@ -3075,9 +3088,11 @@ } } -// prints an indented team member -static void se_SendTeamMember( ePlayerNetID const * player, int indent, std::ostream & tos ) +// prints an indented team member with position marker +static void se_SendTeamMember( ePlayerNetID const * player, int indent, std::ostream & tos, int index, int width ) { + tos << '#' << std::setw( width ) << index+1 << ' '; + // send team name for( int i = indent-1; i >= 0; --i ) { @@ -3102,18 +3117,19 @@ // send team members int teamMembers = team->NumPlayers(); + int width = teamMembers >= 10 ? 2 : 1; int indent = 0; // print left wing, the odd team members for( int i = (teamMembers/2)*2-1; i>=0; i -= 2 ) { - se_SendTeamMember( team->Player(i), indent, tos ); + se_SendTeamMember( team->Player(i), indent, tos, i, width ); indent += 2; } // print right wing, the even team members for( int i = 0; i < teamMembers; i += 2 ) { - se_SendTeamMember( team->Player(i), indent, tos ); + se_SendTeamMember( team->Player(i), indent, tos, i, width ); indent -= 2; } @@ -3658,6 +3674,14 @@ se_ChatTeams( p ); return; } + else if (command == "/myteam") { + eTeam *currentTeam = se_GetManagedTeam( p ); + if( currentTeam ) + { + se_ListTeam( p, currentTeam ); + } + return; + } else if (command == "/help") { se_Help( p, p, s ); return; Modified: armagetronad/trunk/armagetronad/src/tron/gServerFavorites.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gServerFavorites.cpp 2009-02-12 11:39:50 UTC (rev 8953) +++ armagetronad/trunk/armagetronad/src/tron/gServerFavorites.cpp 2009-02-12 12:38:21 UTC (rev 8954) @@ -508,6 +508,7 @@ // create menu entries sg_languageIDPrefix = "$bookmarks_"; + sg_Connect = &sg_ConnectFavorite; gCustomConnectEntries submenu( fav, &net_menu ); net_menu.Enter(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-12 12:45:00
|
Revision: 8956 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8956&view=rev Author: z-man Date: 2009-02-12 12:44:54 +0000 (Thu, 12 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8953 to 8955: ------------------------------------------------------------------------ r8955 | bazaarmagetron | 2009-02-12 13:42:35 +0100 (Thu, 12 Feb 2009) | 2 lines Manuel Moos: Hopefully really removing LOWEST scoring team now. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8953&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/src/engine/eTeam.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8953 + /armagetronad/branches/0.2.8:8751-8852,8855-8955 Modified: armagetronad/trunk/armagetronad/src/engine/eTeam.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/eTeam.cpp 2009-02-12 12:42:35 UTC (rev 8955) +++ armagetronad/trunk/armagetronad/src/engine/eTeam.cpp 2009-02-12 12:44:54 UTC (rev 8956) @@ -841,7 +841,10 @@ } // mode 2: lowest score goes out - last = t; + if ( !last ) + { + last = t; + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-12 18:30:02
|
Revision: 8965 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8965&view=rev Author: z-man Date: 2009-02-12 18:29:53 +0000 (Thu, 12 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8955 to 8964: ------------------------------------------------------------------------ r8964 | bazaarmagetron | 2009-02-12 19:19:07 +0100 (Thu, 12 Feb 2009) | 2 lines Manuel Moos: Reverted accidental change. ------------------------------------------------------------------------ r8963 | bazaarmagetron | 2009-02-12 19:18:21 +0100 (Thu, 12 Feb 2009) | 2 lines Manuel Moos: Added lag credit clamping dependant on the measured lag variance. ------------------------------------------------------------------------ r8962 | bazaarmagetron | 2009-02-12 18:41:38 +0100 (Thu, 12 Feb 2009) | 2 lines Manuel Moos: updated. ------------------------------------------------------------------------ r8961 | bazaarmagetron | 2009-02-12 18:35:09 +0100 (Thu, 12 Feb 2009) | 2 lines Manuel Moos: Corrected comparision in debug output. ------------------------------------------------------------------------ r8960 | bazaarmagetron | 2009-02-12 18:33:44 +0100 (Thu, 12 Feb 2009) | 2 lines Manuel Moos: Don't move cycles back in time if the owning client does not expect it. ------------------------------------------------------------------------ r8959 | bazaarmagetron | 2009-02-12 18:31:59 +0100 (Thu, 12 Feb 2009) | 4 lines author: Manuel Moos Anticipating serverside lag compensation to prevent misprediction of lag slides. ------------------------------------------------------------------------ r8958 | bazaarmagetron | 2009-02-12 18:30:28 +0100 (Thu, 12 Feb 2009) | 2 lines Manuel Moos: Exporting lag compensation version feature. ------------------------------------------------------------------------ r8957 | bazaarmagetron | 2009-02-12 18:29:00 +0100 (Thu, 12 Feb 2009) | 2 lines Manuel Moos: Const correctness of nVersionFeature::Supported(). ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8955&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/NEWS armagetronad/trunk/armagetronad/config/settings.cfg armagetronad/trunk/armagetronad/language/english_base.txt armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp armagetronad/trunk/armagetronad/src/engine/eLagCompensation.h armagetronad/trunk/armagetronad/src/network/nConfig.cpp armagetronad/trunk/armagetronad/src/network/nNetwork.cpp armagetronad/trunk/armagetronad/src/network/nNetwork.h armagetronad/trunk/armagetronad/src/tron/gCycle.cpp armagetronad/trunk/armagetronad/src/tron/gCycle.h armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8955 + /armagetronad/branches/0.2.8:8751-8852,8855-8964 Modified: armagetronad/trunk/armagetronad/NEWS =================================================================== --- armagetronad/trunk/armagetronad/NEWS 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/NEWS 2009-02-12 18:29:53 UTC (rev 8965) @@ -90,6 +90,9 @@ Changes since 0.2.8.3_beta1: ============================ +- Better lag slide protection: clients no longer get confused when + the server sends their cycle back in time, and the server no longer + does that for old clients. - Fixed rare wallpassing bug; it required what whould usually be an instakill and infinte wall length. Modified: armagetronad/trunk/armagetronad/config/settings.cfg =================================================================== --- armagetronad/trunk/armagetronad/config/settings.cfg 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/config/settings.cfg 2009-02-12 18:29:53 UTC (rev 8965) @@ -729,6 +729,10 @@ # but not more than this much credit is given for a single event. LAG_CREDIT_SINGLE 0.1 +# and not more than this multiple of the measured lag variance of all clients. +# (Set to 0 to disable this clamping.) +LAG_CREDIT_VARIANCE 3.0 + # Lag credit is not something that is available once. Just like rubber, lag credit # is refilled over time. This variable tells you how long it takes before a completely # used up lag credit takes to completely refill. Modified: armagetronad/trunk/armagetronad/language/english_base.txt =================================================================== --- armagetronad/trunk/armagetronad/language/english_base.txt 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/language/english_base.txt 2009-02-12 18:29:53 UTC (rev 8965) @@ -429,7 +429,8 @@ lag_fast_weight_help Extra weight lag reports from the server influence the fast lag compensation with. lag_credit_help Maximal seconds of total lag credit. -lag_credit_single_help Maximal seconds of lag credit for a single lag event. +lag_credit_single_help Maximal seconds of lag credit for a single lag credit event. +lag_credit_single_help Maximal multiple of the lag variance for a single lag credit event. lag_sweet_spot_help Sweet spot, the fill ratio of lag credit the server tries to keep the client at. lag_credit_time_help Timescale lag credit is restored on. Modified: armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp 2009-02-12 18:29:53 UTC (rev 8965) @@ -52,6 +52,21 @@ static tSettingItem< REAL > se_lagSlowWeightConf( "LAG_SLOW_WEIGHT", se_lagSlowWeight ); static tSettingItem< REAL > se_lagFastWeightConf( "LAG_FAST_WEIGHT", se_lagFastWeight ); +// averages over lag events +static nAverager se_lagAverager; + +class eLagAveragerInitializer +{ + public: + eLagAveragerInitializer() + { + // start with a large variance + se_lagAverager.Add(-1,1); + se_lagAverager.Add(1,1); + } +}; +static eLagAveragerInitializer se_lagInitializer; + //! lag tracker on client class nClientLag {public: @@ -135,6 +150,9 @@ // maximal seconds of lag credit static REAL se_lagCredit = .5f; +// maximal lag credit for a single event when compared to the lag variance +static REAL se_lagCreditVariance = 3.0f; + // sweet spot, the fill ratio of lag credit the server tries to keep the client at static REAL se_lagCreditSweetSpot = .5f; @@ -143,6 +161,7 @@ static tSettingItem< REAL > se_lagCreditConf( "LAG_CREDIT", se_lagCredit ); static tSettingItem< REAL > se_lagCreditSingleConf( "LAG_CREDIT_SINGLE", se_lagCreditSingle ); +static tSettingItem< REAL > se_lagCreditVarianceConf( "LAG_CREDIT_VARIANCE", se_lagCreditVariance ); static tSettingItem< REAL > se_lagCreditSweetSpotConf( "LAG_SWEET_SPOT", se_lagCreditSweetSpot ); static tSettingItem< REAL > se_lagCreditTimeConf( "LAG_CREDIT_TIME", se_lagCreditTime ); @@ -152,6 +171,11 @@ // see if a client supports lag compensation static nVersionFeature se_clientLagCompensation( 14 ); + //! the version feature telling whether this is supported +nVersionFeature const & eLag::Feature() +{ + return se_clientLagCompensation; +} //! lag tracker on server class nServerLag @@ -230,6 +254,11 @@ REAL TakeCredit( REAL lag ) { lag -= se_lagThreshold; + + se_lagAverager.Add( lag, 1 ); + se_lagAverager.Timestep( .001 ); + REAL lagVariance = se_lagAverager.GetDataVariance(); + if ( lag > 0 ) { #ifdef DEBUG_LAG @@ -242,6 +271,12 @@ // clamp lag = lag > se_lagCreditSingle ? se_lagCreditSingle : lag; + if( se_lagCreditVariance > 0 ) + { + REAL lagCreditVariance = sqrt( lagVariance ) * se_lagCreditVariance; + lag = lag > lagCreditVariance ? lagCreditVariance : lag; + } + // get values REAL credit = Credit(); @@ -269,7 +304,7 @@ #ifdef DEBUG_LAG { - if ( lag > lagBefore ) + if ( lag < lagBefore ) con << "Requesting " << lagBefore << " seconds of lag credit, granting " << lag << ".\n"; else con << "Granting " << lag << " seconds of lag credit.\n"; Modified: armagetronad/trunk/armagetronad/src/engine/eLagCompensation.h =================================================================== --- armagetronad/trunk/armagetronad/src/engine/eLagCompensation.h 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/src/engine/eLagCompensation.h 2009-02-12 18:29:53 UTC (rev 8965) @@ -31,6 +31,8 @@ #include "defs.h" +class nVersionFeature; + //! class for lag compensation functions in the game code class eLag { @@ -52,6 +54,9 @@ //! call on the client: advance time static void Timestep( REAL dt ); + + //! the version feature telling whether this is supported + static nVersionFeature const & Feature(); }; #endif Modified: armagetronad/trunk/armagetronad/src/network/nConfig.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nConfig.cpp 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/src/network/nConfig.cpp 2009-02-12 18:29:53 UTC (rev 8965) @@ -452,7 +452,7 @@ "0.2.8.2", // 13 "0.2.8.3_alpha", // 14 "0.2.8.3_alpha_auth", // 15 - "0.2.8.3", // 16 + "0.2.8.3_beta2", // 16 "0.2.8.4", // 17 "0.2.8.5_alpha", // 18 "0.2.8.5", // 19 Modified: armagetronad/trunk/armagetronad/src/network/nNetwork.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-12 18:29:53 UTC (rev 8965) @@ -423,14 +423,14 @@ max_ = max; } -bool nVersionFeature::Supported() +bool nVersionFeature::Supported() const { return ( min_ < 0 || nTempVersionOverrider::OverriddenVersion().Max() >= min_ ) && ( max_ < 0 || nTempVersionOverrider::OverriddenVersion().Min() <= max_ ); } -bool nVersionFeature::Supported( int client ) +bool nVersionFeature::Supported( int client ) const { if ( client < 0 || client > MAXCLIENTS ) return false; Modified: armagetronad/trunk/armagetronad/src/network/nNetwork.h =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetwork.h 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/src/network/nNetwork.h 2009-02-12 18:29:53 UTC (rev 8965) @@ -167,8 +167,8 @@ { public: nVersionFeature( int min, int max = -1 ); // creates a feature that is supported from version min to max; values of -1 indicate no border - bool Supported(); // returns whether this feature is supported by everyone - bool Supported( int client ); // returns whether this feature is supported by a certain client ( resp. the server in client mode ) + bool Supported() const; // returns whether this feature is supported by everyone + bool Supported( int client ) const; // returns whether this feature is supported by a certain client ( resp. the server in client mode ) private: int min_, max_; }; Modified: armagetronad/trunk/armagetronad/src/tron/gCycle.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-12 18:29:53 UTC (rev 8965) @@ -1497,6 +1497,16 @@ // for the credit lag = eLag::TakeCredit( Owner(), lag + lagOffset ) - lagOffset; + // don't go back further than last sync to the owner. + // old clients get doubly confused and produce an extra + // evil lag slide. + static nVersionFeature noConfusionFromMoveBack( 16 ); + if( !noConfusionFromMoveBack.Supported( Owner() ) && + lastTime - lag < lastSyncOwnerGameTime_ ) + { + lag = lastTime - lastSyncOwnerGameTime_; + } + // no compensation? Just quit. if ( lag < 0 ) return; @@ -1759,6 +1769,28 @@ // copy distance trueDistance_ = GetDistance(); + + // make a small timestep backwards if we passed the next + // destination. While this makes us react a tad later to lag slides, + // it avoids lag slide false positives, which later cause real + // lag slides. + if( eLag::Feature().Supported(0) ) + { + gDestination *dest = GetCurrentDestination(); + if ( dest ) + { + REAL distToDest = eCoord::F( dest->position - pos, dirDrive ); + if( distToDest < 0 ) + { + // instead of doing a full simulation, just trust the data from the + // destination. + pos = dest->position; + lastTime = dest->gameTime; + distance = dest->distance; + verletSpeed_ = dest->speed; + } + } + } } gCycleExtrapolator::gCycleExtrapolator(eGrid *grid, const eCoord &pos,const eCoord &dir,ePlayerNetID *p,bool autodelete) @@ -1850,10 +1882,10 @@ bool gCycleExtrapolator::TimestepCore(REAL currentTime, bool calculateAcceleration) { // determine a suitable next destination - gDestination destDefault( *parent_ ), *dest=&destDefault; - if ( GetCurrentDestination() ) + gDestination destDefault( *parent_ ), *dest=GetCurrentDestination(); + if ( !dest ) { - dest = GetCurrentDestination(); + dest = &destDefault; } // correct distance @@ -2269,6 +2301,7 @@ con << "Created cycle.\n"; #endif nextSyncOwner=nextSync=tSysTimeFloat()-1; + lastSyncOwnerGameTime_ = 0; if (sn_GetNetState()!=nCLIENT) RequestSync(); @@ -4932,6 +4965,7 @@ lastTimeAnim = lastTime = -EPS; nextSync = nextSyncOwner = -1; + lastSyncOwnerGameTime_ = 0; } @@ -4947,6 +4981,11 @@ void gCycle::WriteSync(nMessage &m){ // eNetGameObject::WriteSync(m); + if( SyncedUser() == Owner() ) + { + lastSyncOwnerGameTime_ = lastTime; + } + if ( Alive() ) { m << lastTime; Modified: armagetronad/trunk/armagetronad/src/tron/gCycle.h =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycle.h 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/src/tron/gCycle.h 2009-02-12 18:29:53 UTC (rev 8965) @@ -221,6 +221,7 @@ // unsigned short currentWallID; nTimeRolling nextSync, nextSyncOwner; + REAL lastSyncOwnerGameTime_; //!< time of the last sync to the owner in game time void MyInitAfterCreation(); Modified: armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp 2009-02-12 18:19:07 UTC (rev 8964) +++ armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp 2009-02-12 18:29:53 UTC (rev 8965) @@ -1960,6 +1960,16 @@ bool gCycleMovement::Timestep( REAL currentTime ) { +/* + static int count = 1; + ++count; + if ( count == 0 ) + { + int xc; + xc = 0; + } +*/ + // request regeneration of maximum space refreshSpaceAhead_ = true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-16 15:32:39
|
Revision: 9003 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9003&view=rev Author: z-man Date: 2009-02-16 15:32:36 +0000 (Mon, 16 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8964 to 8996: ------------------------------------------------------------------------ r8995 | bazaarmagetron | 2009-02-15 23:55:41 +0100 (Sun, 15 Feb 2009) | 9 lines author: Manuel Moos Instead of clearing the registration pointer of nNetObjects once they're remotely destroyed, have them switch over to being considered created locally. Objects lingering on for some reason still hold on to their object ID; if it gets reassigned on the server to some other object before the original object finally gets destroyed, clients rightfully complain about a duplicate use of the ID. Keeping the object registered avoids the reuse of the ID. ------------------------------------------------------------------------ r8994 | bazaarmagetron | 2009-02-15 23:54:55 +0100 (Sun, 15 Feb 2009) | 2 lines Manuel Moos: Whoops, re-added variable. ------------------------------------------------------------------------ r8993 | bazaarmagetron | 2009-02-15 23:54:05 +0100 (Sun, 15 Feb 2009) | 2 lines Manuel Moos: Removed obsolete breakpoint ------------------------------------------------------------------------ r8992 | bazaarmagetron | 2009-02-15 23:40:24 +0100 (Sun, 15 Feb 2009) | 2 lines Manuel Moos: Fixed typo in asserts. ------------------------------------------------------------------------ r8991 | bazaarmagetron | 2009-02-15 23:39:31 +0100 (Sun, 15 Feb 2009) | 2 lines Manuel Moos: Losing first packet when simulating ping. ------------------------------------------------------------------------ r8983 | bazaarmagetron | 2009-02-15 22:35:22 +0100 (Sun, 15 Feb 2009) | 2 lines epsy: Fixed bug 329812: MOVE_TO doesn't work when specifying port ------------------------------------------------------------------------ r8976 | bazaarmagetron | 2009-02-15 21:37:51 +0100 (Sun, 15 Feb 2009) | 2 lines Manuel Moos: Fixed typo ------------------------------------------------------------------------ r8975 | bazaarmagetron | 2009-02-15 19:07:52 +0100 (Sun, 15 Feb 2009) | 4 lines author: Manuel Moos Added assertions to pathfinding code (I was suspecting an infinte loop bug there, turned out to be just a case of a heavily fragmented grid). ------------------------------------------------------------------------ r8974 | bazaarmagetron | 2009-02-13 17:32:45 +0100 (Fri, 13 Feb 2009) | 2 lines Manuel Moos: Hopefully fixed playback desync when user is trying to log in with an illegal authority. ------------------------------------------------------------------------ r8973 | bazaarmagetron | 2009-02-13 17:25:29 +0100 (Fri, 13 Feb 2009) | 2 lines Manuel Moos: Fixed recording desync when a remote admin includes large config files with some settings vetoed. ------------------------------------------------------------------------ r8972 | bazaarmagetron | 2009-02-13 17:23:19 +0100 (Fri, 13 Feb 2009) | 2 lines Manuel Moos: Stable debug level guaranteed. ------------------------------------------------------------------------ r8971 | bazaarmagetron | 2009-02-13 14:53:21 +0100 (Fri, 13 Feb 2009) | 2 lines Manuel Moos: DEDICATED_IDLE now needs to be exactly 0 (or less) to keep a server going forever. ------------------------------------------------------------------------ r8970 | bazaarmagetron | 2009-02-13 12:21:14 +0100 (Fri, 13 Feb 2009) | 2 lines Manuel Moos: Added detection of small timer hickups in debug mode. ------------------------------------------------------------------------ r8969 | bazaarmagetron | 2009-02-13 03:03:22 +0100 (Fri, 13 Feb 2009) | 2 lines Manuel Moos: Tuning of timer drift detection to make it less likely to indicate a drift when there is none. ------------------------------------------------------------------------ r8968 | bazaarmagetron | 2009-02-13 00:27:27 +0100 (Fri, 13 Feb 2009) | 4 lines author: Manuel Moos Bending the time the client claims to have turned the cylce if telling the truth would mean certain death. ------------------------------------------------------------------------ r8967 | bazaarmagetron | 2009-02-13 00:25:40 +0100 (Fri, 13 Feb 2009) | 2 lines Manuel Moos: Common code for lag credit clamping. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8964&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp armagetronad/trunk/armagetronad/src/engine/ePath.cpp armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp armagetronad/trunk/armagetronad/src/engine/eTimer.cpp armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp armagetronad/trunk/armagetronad/src/network/nNetObject.cpp armagetronad/trunk/armagetronad/src/network/nNetwork.cpp armagetronad/trunk/armagetronad/src/tools/tConfiguration.cpp armagetronad/trunk/armagetronad/src/tools/tRecorder.cpp armagetronad/trunk/armagetronad/src/tools/tSysTime.cpp armagetronad/trunk/armagetronad/src/tron/gCycle.cpp armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp armagetronad/trunk/armagetronad/src/tron/gCycleMovement.h armagetronad/trunk/armagetronad/src/tron/gGame.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8964 + /armagetronad/branches/0.2.8:8751-8852,8855-8996 Modified: armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/engine/eLagCompensation.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -61,8 +61,8 @@ eLagAveragerInitializer() { // start with a large variance - se_lagAverager.Add(-1,1); - se_lagAverager.Add(1,1); + se_lagAverager.Add(-.1,.1f); + se_lagAverager.Add(.1,.1f); } }; static eLagAveragerInitializer se_lagInitializer; @@ -153,6 +153,9 @@ // maximal lag credit for a single event when compared to the lag variance static REAL se_lagCreditVariance = 3.0f; +// cached value of that times the variance of lag +static REAL se_lagCreditVarianceCache = 0.0f; + // sweet spot, the fill ratio of lag credit the server tries to keep the client at static REAL se_lagCreditSweetSpot = .5f; @@ -251,12 +254,19 @@ return Credit() - creditUsed_; } + // clamps a single credit event to the configured bounds + static void ClampSingleCredit( REAL & credit ) + { + credit = credit > se_lagCreditSingle ? se_lagCreditSingle : credit; + credit = credit > se_lagCreditVarianceCache ? se_lagCreditVarianceCache : credit; + } + REAL TakeCredit( REAL lag ) { lag -= se_lagThreshold; se_lagAverager.Add( lag, 1 ); - se_lagAverager.Timestep( .001 ); + se_lagAverager.Timestep( .01 ); REAL lagVariance = se_lagAverager.GetDataVariance(); if ( lag > 0 ) @@ -268,15 +278,15 @@ // if everyone is lagging, delete the used credit Balance(); - // clamp - lag = lag > se_lagCreditSingle ? se_lagCreditSingle : lag; - + // update variance cache if( se_lagCreditVariance > 0 ) { - REAL lagCreditVariance = sqrt( lagVariance ) * se_lagCreditVariance; - lag = lag > lagCreditVariance ? lagCreditVariance : lag; + se_lagCreditVarianceCache = sqrt( lagVariance ) * se_lagCreditVariance; } + // clamp + ClampSingleCredit( lag ); + // get values REAL credit = Credit(); @@ -439,8 +449,10 @@ // see how much total credit is left REAL credit = se_serverLag[client].CreditLeft(); - // but clamp it with the maximum single credit - return credit > se_lagCreditSingle ? se_lagCreditSingle : credit; + // and clam pit + nServerLag::ClampSingleCredit( credit ); + + return credit; } // ******************************************************************************* Modified: armagetronad/trunk/armagetronad/src/engine/ePath.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/ePath.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/engine/ePath.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -139,6 +139,8 @@ void eHalfEdge::SetMinPathLength( REAL length, tHeapBase& heap, ePATH_ORIGIN origin ) { + tASSERT( Heap() != &closedEdges ); + origin_ = origin; tHeapElement::SetVal( length, heap ); @@ -180,6 +182,7 @@ // and add all possible ways from there to the open list. eHalfEdge *e = openEdges.Remove(0); + tASSERT( e->origin_ < PATH_CLOSED ); int origin = e->origin_; origin |= PATH_CLOSED; @@ -319,7 +322,7 @@ if( origin_ == PATH_NONE ) { // completely new entry. - + tASSERT( Heap() == 0 ); SetMinPathLength( minLength, openEdges, newOrigin ); #ifdef DEBUG @@ -330,6 +333,7 @@ else if( minLength < MinPathLength() && origin_ < PATH_CLOSED) { // just update our info; the path got shorter. + tASSERT( Heap() != &closedEdges ); SetMinPathLength( minLength, openEdges, newOrigin ); #ifdef DEBUG Modified: armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -2135,7 +2135,9 @@ message_ << tColoredString::ColorString(1,.3,.3) << "RA: " << tColoredString::ColorString(1,1,1) << line << "\n"; // don't let message grow indefinitely - if (message_.Len() > 600) + unsigned long len = message_.Len(); + tRecorderSync< unsigned long >::Archive( "_MESSAGE_LEN", 3, len ); + if (len > 600) { sn_ConsoleOut( message_, netID_ ); message_.Clear(); @@ -7679,7 +7681,7 @@ static tSettingItem< int > se_defaultKickToPortConf( "DEFAULT_KICK_TO_PORT", se_defaultKickToPort ); static tConfItemLine se_defaultKickToReasonConf( "DEFAULT_KICK_TO_REASON", se_defaultKickToReason ); -static void se_MoveToConf(std::istream &s, REAL severity ) +static void se_MoveToConf(std::istream &s, REAL severity, const char * command ) { if ( se_NeedsServer( "KICK/MOVE_TO", s ) ) { @@ -7696,9 +7698,12 @@ s >> server; } - int port = se_defaultKickToPort; - if ( !s.eof() ) - s >> port; + int pos, port = se_defaultKickToPort; + if ( ( pos = server.StrPos( ":" ) ) != -1 ) + { + port = atoi( server.SubStr( pos + 1 ) ); + server = server.SubStr( 0, pos ); + } nServerInfoRedirect redirect( server, port ); @@ -7713,14 +7718,14 @@ } else { - con << "Usage: KICK_TO <user ID or name> <server IP to kick to>:<server port to kick to> <Reason>\n"; + con << "Usage: " << command << " <user ID or name> <server IP to kick to>:<server port to kick to> <Reason>\n"; return; } } static void se_KickToConf(std::istream &s ) { - se_MoveToConf( s, 1 ); + se_MoveToConf( s, 1, "KICK_TO" ); } static tConfItemFunc se_kickToConf("KICK_TO",&se_KickToConf); @@ -7728,7 +7733,7 @@ static void se_MoveToConf(std::istream &s ) { - se_MoveToConf( s, 0 ); + se_MoveToConf( s, 0, "MOVE_TO" ); } static tConfItemFunc se_moveToConf("MOVE_TO",&se_MoveToConf); Modified: armagetronad/trunk/armagetronad/src/engine/eTimer.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/eTimer.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/engine/eTimer.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -76,8 +76,8 @@ lastStartTime_ = lastRemoteTime_ = 0; - // assume strongly the clocks are in sync - startTimeDrift_.Add( 0, 100 ); + // assume VERY strongly the clocks are in sync + startTimeDrift_.Add( 0, 10000 ); } eTimer::~eTimer(){ Modified: armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/network/nAuthentication.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -530,7 +530,7 @@ method.prefix = ""; method.suffix = ""; - bool ret; + bool ret = false; if ( !tRecorder::IsPlayingBack() ) { if ( authority.Len() <= 1 ) @@ -1067,7 +1067,7 @@ // the finish task can also be triggered any time by this function: void nLoginProcess::Abort() { - nMemberFunctionRunner::ScheduleForeground( *this, &nLoginProcess::Finish ); + nMemberFunctionRunner::ScheduleBackground( *this, &nLoginProcess::Finish ); } // which, when finished, triggers the foreground task of updating the Modified: armagetronad/trunk/armagetronad/src/network/nNetObject.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetObject.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/network/nNetObject.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -72,7 +72,7 @@ static unsigned short net_max_current_id = net_max_current_id_min; #ifdef DEBUG -static void sn_BreakOnObjectID( unsigned int id ) +static void sn_BreakOnObjectID( unsigned short id ) { #ifdef DEBUG_X static unsigned int breakOnID = sn_WatchNetID; @@ -737,6 +737,10 @@ // gegister with the object database void nNetObject::Register( const nNetObjectRegistrar& registrar ) { +#ifdef DEBUG + sn_BreakOnObjectID( registrar.id ); +#endif + tASSERT( this == registrar.object ); tASSERT( id == 0 || id == registrar.id ); @@ -758,9 +762,6 @@ } else { -#ifdef DEBUG - sn_BreakOnObjectID( id ); -#endif sn_netObjects[id]=this; } @@ -945,7 +946,8 @@ if (!info.actionOnDeleteExecuted) no->ActionOnDelete(); - sn_netObjects(id)=NULL; + no->TakeOwnership(); + tJUST_CONTROLLED_PTR< nNetObject > bounce( no ); sn_netObjectsOwner(id)=0; } else @@ -1776,9 +1778,16 @@ if (clear){ if (no->owner==user && user!=sn_myNetID){ +#ifdef DEBUG + sn_BreakOnObjectID(i); +#endif if (no->ActionOnQuit()) - sn_netObjects(i)=NULL; // destroy it - else{ + { + no->createdLocally=true; + tControlledPTR< nNetObject > bounce( no ); // destroy it, if noone wants it + } + else + { no->owner=::sn_myNetID; // or make it mine. sn_netObjectsOwner(i)=::sn_myNetID; if (no->AcceptClientSync()){ @@ -1798,7 +1807,12 @@ if (clear) for (int i=sn_netObjectsOwner.Len()-1;i>=0;i--){ if (sn_netObjectsOwner(i)==user) + { +#ifdef DEBUG + sn_BreakOnObjectID(i); +#endif sn_netObjectsOwner(i)=0; + } } } Modified: armagetronad/trunk/armagetronad/src/network/nNetwork.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -767,11 +767,11 @@ timeout=sn_GetTimeout( rec ); -#ifdef nSIMULATE_PING - timeSendAgain=::netTime + nSIMULATE_PING; +#ifdef nSIMULATE_PING + timeSendAgain=::netTime + nSIMULATE_PING; #ifndef WIN32 tRandomizer & randomizer = tReproducibleRandomizer::GetInstance(); - timeSendAgain+= randimizer.Get() * nSIMULATE_PING_VARIANT; + timeSendAgain+= randomizer.Get() * nSIMULATE_PING_VARIANT; // timeSendAgain+=(nSIMULATE_PING_VARIANT*random())/RAND_MAX; #endif #else @@ -2265,6 +2265,10 @@ tASSERT(messageIDBig_); #endif new nWaitForAck(this,peer); + +#ifdef nSIMULATE_PING + return; +#endif } // server: messages to yourself are a bit strange... Modified: armagetronad/trunk/armagetronad/src/tools/tConfiguration.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tools/tConfiguration.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/tools/tConfiguration.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -567,7 +567,7 @@ "COLORDEPTH", "FULLSCREEN ", "ARMAGETRON_LAST_WINDOWSIZE", "ARMAGETRON_WINDOWSIZE", "ARMAGETRON_LAST_SCREENMODE", "ARMAGETRON_SCREENMODE", "CUSTOM_SCREEN", "SOUND", - "PASSWORD", "ADMIN_PASS", "RECORDING_DEBUGLEVEL", + "PASSWORD", "ADMIN_PASS", "ZTRICK", "MOUSE_GRAB", "PNG_SCREENSHOT", // "WHITE_SPARKS", "SPARKS", "KEEP_WINDOW_ACTIVE", "TEXTURE_MODE", "TEXTURES_HI", "LAG_O_METER", "INFINITY_PLANE", "SKY_WOBBLE", "LOWER_SKY", "UPPER_SKY", "DITHER", "HIGH_RIM", "FLOOR_DETAIL", @@ -593,7 +593,7 @@ static std::vector< tString > vetos = st_Stringify( vetos_char ); // delegate - return s_Veto( line, vetos ); + return s_Veto( line, vetos ) || s_VetoPlayback( line ); } Modified: armagetronad/trunk/armagetronad/src/tools/tRecorder.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tools/tRecorder.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/tools/tRecorder.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -561,7 +561,7 @@ // sync level with recording int level = st_debugLevelRecording; tRecorder::Playback( "DEBUGLEVEL", level ); - tRecorder::Record( "DEBUGLEVEL", st_debugLevelRecording ); + tRecorder::Record( "DEBUGLEVEL", level ); return level; } @@ -596,7 +596,9 @@ int tRecorderSyncBase::GetDebugLevelRecording( void ) { - return st_debugLevelRecording; + // delegate so this doesn't change when the config changes + return GetDebugLevelPlayback(); + // return st_debugLevelRecording; } REAL st_GetDifference( REAL a, REAL b) Modified: armagetronad/trunk/armagetronad/src/tools/tSysTime.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tools/tSysTime.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/tools/tSysTime.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -368,6 +368,29 @@ timeRelative = timeNewRelative; } + +#ifdef DEBUG + { + static tTime oldRelative = timeRelative; + tTime timeStep = timeRelative - oldRelative; + oldRelative = timeRelative; + + // detect unusually large timesteps + static REAL bigStep = 10; + bigStep *= .99; + REAL step = float( timeStep.seconds + timeStep.microseconds * 1E-6 ); + if ( step > 3 * bigStep ) + { + con << "Small timer hickup of " << step << " seconds.\n"; + bigStep = bigStep * 1.02; + } + else if ( step > bigStep ) + { + bigStep = step; + } + } +#endif + // try to archive it TimeArchiver< tRecordingBlock >::Archive( timeRelative ); #ifdef DEBUG Modified: armagetronad/trunk/armagetronad/src/tron/gCycle.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -1149,6 +1149,12 @@ #endif if ( other.Owner() && other.Player() ) chatting = other.Player()->IsChatting(); + + // cheat. If rubber ran out, backdate the time. + if ( other.RubberDepleteTime() > 0 ) + { + gameTime = other.RubberDepleteTime(); + } } void gDestination::CopyFrom(const gCycle &other) @@ -1546,7 +1552,7 @@ // see if we went back too far (should almost never happen) if ( distance < minDist ) { - st_Breakpoint(); + // st_Breakpoint(); TimestepCore( lastTime + ( minDist - distance )/verletSpeed_ ); } } Modified: armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -3831,6 +3831,7 @@ rubberUsage = 0; // decide over kill + bool rubberUsedUp = false; if ( rubber > rubber_granted || ( sg_cycleWidthRubberMax == 0 && sg_cycleWidthRubberMin == 0 ) ) { if ( sn_GetNetState() != nCLIENT ) @@ -3838,7 +3839,10 @@ throw gCycleDeath( pos ); } else + { rubber = rubber_granted; + rubberUsedUp = true; + } } // use up brake @@ -3859,9 +3863,24 @@ // clamp rubber ( mostly for client side HUD display ) - if ( rubber > rubber_granted ) + if ( rubber >= rubber_granted ) + { rubber = rubber_granted; + rubberUsedUp = true; + } + // record time rubber went out + if( rubberUsedUp ) + { + if ( rubberDepleteTime_ <= 0 ) + { + rubberDepleteTime_ = lastTime; + } + } + else + { + rubberDepleteTime_ = 0; + } lastTime=currentTime; @@ -3914,6 +3933,7 @@ // con << "creating cycle.\n"; #endif brakingReservoir = 1.0f; + rubberDepleteTime_ = 0.0f; braking = false; Modified: armagetronad/trunk/armagetronad/src/tron/gCycleMovement.h =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycleMovement.h 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/tron/gCycleMovement.h 2009-02-16 15:32:36 UTC (rev 9003) @@ -241,12 +241,15 @@ REAL rubber; //!< the amount rubber used up by the cycle REAL rubberMalus; //!< additional rubber usage factor REAL rubberSpeedFactor; //!< the factor by which the speed is currently multiplied by rubber + REAL rubberDepleteTime_; //!< the time rubber got depleted REAL brakeUsage; //!< current brake usage REAL rubberUsage; //!< current rubber usage (not from hitting a wall, but from tunneling. Without taking efficiency into account.) // room for accessors public: + REAL RubberDepleteTime() const; //!< returns the time rubber got fully used (or 0 if it hasn't) + REAL GetMaxSpaceAhead( REAL maxReport ) const; //< Returns the current maximal space ahead inline REAL GetDistance( void ) const; //!< Gets the distance traveled so far @@ -405,6 +408,20 @@ // ******************************************************************************************* // * +// * RubberDepleteTime +// * +// ******************************************************************************************* +//! +//! @return the time rubber got depleted +//! +// ******************************************************************************************* +inline REAL gCycleMovement::RubberDepleteTime() const +{ + return rubberDepleteTime_; +} + +// ******************************************************************************************* +// * // * GetDistance // * // ******************************************************************************************* Modified: armagetronad/trunk/armagetronad/src/tron/gGame.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gGame.cpp 2009-02-16 13:20:21 UTC (rev 9002) +++ armagetronad/trunk/armagetronad/src/tron/gGame.cpp 2009-02-16 15:32:36 UTC (rev 9003) @@ -1435,7 +1435,7 @@ int numPlayers = 0; while (numPlayers == 0 && - (ded_idle<.0001 || tSysTimeFloat()<startTime + ded_idle * 3600 ) && !uMenu::quickexit ){ + (ded_idle <= 0.0f || tSysTimeFloat()<startTime + ded_idle * 3600 ) && !uMenu::quickexit ){ sr_Read_stdin(); st_DoToDo(); gGame::NetSyncIdle(); @@ -1459,7 +1459,7 @@ } } - if (sg_NumUsers() <= 0 && ded_idle>0.0001 && + if (sg_NumUsers() <= 0 && ded_idle > 0.0f && tSysTimeFloat()>= startTime + ded_idle * 3600 ) { sg_Timestamp(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-16 15:58:06
|
Revision: 9008 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9008&view=rev Author: z-man Date: 2009-02-16 15:58:01 +0000 (Mon, 16 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 8996 to 9004: ------------------------------------------------------------------------ r9004 | bazaarmagetron | 2009-02-16 16:45:49 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: Implemented a variant of RLBOT simulating tripple binds. Useful for stress tests. ------------------------------------------------------------------------ r9002 | bazaarmagetron | 2009-02-16 14:20:21 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: No more respawining while death/winzone is active. ------------------------------------------------------------------------ r9001 | bazaarmagetron | 2009-02-16 14:18:57 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: Fixed cycle extrapolator getting permanently stuck. ------------------------------------------------------------------------ r9000 | bazaarmagetron | 2009-02-16 11:52:27 +0100 (Mon, 16 Feb 2009) | 5 lines author: Manuel Moos Ammendment to object ID recycling bugfix: sending object create and delete messages in alternating bursts now. Pending deletes should not block creations indefinitely. ------------------------------------------------------------------------ r8999 | bazaarmagetron | 2009-02-16 11:51:31 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: Removed small hickup detection in regular debug builds. ------------------------------------------------------------------------ r8998 | bazaarmagetron | 2009-02-16 02:28:18 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: Removed small hickup detection in regular debug builds. ------------------------------------------------------------------------ r8997 | bazaarmagetron | 2009-02-16 02:26:58 +0100 (Mon, 16 Feb 2009) | 4 lines author: Manuel Moos Rough fix for https://launchpad.net/bugs/329874: While there are deletion messages pending to a client, don't send creation messages. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8996&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/src/network/nNetObject.cpp armagetronad/trunk/armagetronad/src/network/nNetwork.cpp armagetronad/trunk/armagetronad/src/tools/tSysTime.cpp armagetronad/trunk/armagetronad/src/tron/gCycle.cpp armagetronad/trunk/armagetronad/src/tron/gGame.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-8996 + /armagetronad/branches/0.2.8:8751-8852,8855-9004 Modified: armagetronad/trunk/armagetronad/src/network/nNetObject.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetObject.cpp 2009-02-16 15:51:02 UTC (rev 9007) +++ armagetronad/trunk/armagetronad/src/network/nNetObject.cpp 2009-02-16 15:58:01 UTC (rev 9008) @@ -979,7 +979,33 @@ static tJUST_CONTROLLED_PTR< nMessage > destroyers[MAXCLIENTS+2]; static REAL destroyersTime[MAXCLIENTS+2]; +static int destroyersCount[MAXCLIENTS+2]; +// special ack for destroy messages +class nWaitForAckDestroy: public nWaitForAck{ +public: + nWaitForAckDestroy(nMessage* m,int receiver) + :nWaitForAck(m,receiver) + { + ++destroyersCount[receiver]; + } + virtual ~nWaitForAckDestroy() + { + --destroyersCount[receiver]; + } +}; + +static void sn_SendDestroyer( int client ) +{ + tASSERT( 0 <= client && client <= MAXCLIENTS+1 ); + if ( destroyers[ client ] ) + { + destroyers[ client ]->SendImmediately( client, false ); + new nWaitForAckDestroy( destroyers[ client ], client ); + destroyers[ client ] = 0; + } +} + // list of netobjects that have a sync request running static tList< nNetObject > sn_SyncRequestedObject; @@ -1056,9 +1082,9 @@ } destroyers[user]->Write(id); - if (destroyers[user]->DataLen()>100){ - destroyers[user]->Send(user); - destroyers[user]=NULL; + if (destroyers[user]->DataLen() > ( destroyersCount[user] ? 1000 : 100 ) ) + { + sn_SendDestroyer( user ); } #ifdef DEBUG @@ -1543,19 +1569,6 @@ sn_syncedUser = user; - // send the destroy messages - if (destroyers[user]) - { - // but check whether the opportunity is good (big destroyers message, or a sync packet in the pipe) first - if ( destroyers[user]->DataLen() > 75 || - sn_Connections[user].sendBuffer_.Len() > 0 || - destroyersTime[user] < tSysTimeFloat()-.5 ) - { - destroyers[user]->Send(user); - destroyers[user]=NULL; - } - } - // con << sn_SyncRequestedObject.Len() << "/" << sn_netObjects.Len() << "\n"; int currentSync = sn_SyncRequestedObject.Len()-1; @@ -1574,6 +1587,31 @@ if (// nos->knowsAbout[user].syncReq && !nos->knowsAbout[user].knowsAboutExistence) { + // look for the object ID in the current destruction message + { + if ( destroyers[user] ) + { + for( int i = destroyers[user]->DataLen()-1; i >= 0; --i ) + { + if ( destroyers[user]->Data(i) == s ) + { + // found it. Send the destruction + // message and wait for its ack. + sn_SendDestroyer( user ); + break; + } + } + } + } + + if ( destroyersCount[user] ) + { + // don't send creation messages while destruction + // messages are unacknowledged. + --currentSync; + continue; + } + if (!nos->knowsAbout[user].acksPending){ #ifdef DEBUG //con << "remotely creating object " << s << '\n'; @@ -1638,6 +1676,18 @@ currentSync--; } + // send the destroy messages + if (destroyers[user] && !destroyersCount[user] ) + { + // but check whether the opportunity is good (big destroyers message, or a sync packet in the pipe) first + if ( destroyers[user]->DataLen() > 75 || + sn_Connections[user].sendBuffer_.Len() > 0 || + destroyersTime[user] < tSysTimeFloat()-.5-2*sn_Connections[user].ping.GetPing() ) + { + sn_SendDestroyer( user ); + } + } + sn_syncedUser = -1; #ifdef DEBUG @@ -1732,10 +1782,9 @@ // send out object deletion messages for ( int i = MAXCLIENTS;i>=0;i--) { - if ( sn_Connections[i].socket && destroyers[i] ) + if ( sn_Connections[i].socket ) { - destroyers[i]->Send(i); - destroyers[i] = NULL; + sn_SendDestroyer(i); } } } @@ -1884,11 +1933,9 @@ } // send and delete the remaining destroyer message - if ( destroyers[user] ) - { - destroyers[user]->Send(user); - destroyers[user]=NULL; - } + sn_SendDestroyer(user); + + destroyersCount[user] = 0; } static nCallbackLoginLogout nlc(&login_callback); Modified: armagetronad/trunk/armagetronad/src/network/nNetwork.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-16 15:51:02 UTC (rev 9007) +++ armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-16 15:58:01 UTC (rev 9008) @@ -2825,6 +2825,13 @@ sn_DisconnectUserNoWarn(i, "$network_kill_shutdown"); } + // repeat to clear out pending stuff created during + // the last run (destruction messages, for example) + for(int i=MAXCLIENTS+1;i>=0;i--) + { + sn_DisconnectUserNoWarn(i, "$network_kill_shutdown"); + } + sn_Connections[0].socket = 0; // shutdown network system to get new socket Modified: armagetronad/trunk/armagetronad/src/tools/tSysTime.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tools/tSysTime.cpp 2009-02-16 15:51:02 UTC (rev 9007) +++ armagetronad/trunk/armagetronad/src/tools/tSysTime.cpp 2009-02-16 15:58:01 UTC (rev 9008) @@ -369,7 +369,7 @@ } -#ifdef DEBUG +#ifdef DEBUG_X { static tTime oldRelative = timeRelative; tTime timeStep = timeRelative - oldRelative; Modified: armagetronad/trunk/armagetronad/src/tron/gCycle.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-16 15:51:02 UTC (rev 9007) +++ armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-16 15:58:01 UTC (rev 9008) @@ -463,6 +463,10 @@ , turnedRecently_ ( 0 ) , owner_ ( owner ) { +#ifdef RLBOT + rlDir = 1; + rlLastTime = -100; +#endif } // describes walls we like. We like enemy walls. We like to go between them. @@ -614,9 +618,51 @@ return owner_->CanMakeTurn( ( action == &gCycle::se_turnRight ) ? 1 : -1 ); } +#ifdef RLBOT + int rlDir; + REAL rlLastTime; +#endif + // does the main thinking void Activate( REAL currentTime ) { +#ifdef RLBOT + // hack chatbot for crazy turning + { + if (!owner_->Alive() || !owner_->Vulnerable() ) + { + return; + } + if( fabs( rlLastTime - currentTime) > 1 ) + { + owner_->Act( &gCycle::se_turnRight, 1 ); + rlDir = -1; + } + else if ( rlDir > 0 ) + { + if( CanMakeTurn( &gCycle::se_turnRight ) ) + { + owner_->Act( &gCycle::se_turnRight, 1 ); + owner_->Act( &gCycle::se_turnRight, 1 ); + owner_->Act( &gCycle::se_turnRight, 1 ); + rlDir = -1; + } + } + else + { + if( CanMakeTurn( &gCycle::se_turnLeft ) ) + { + owner_->Act( &gCycle::se_turnLeft, 1 ); + owner_->Act( &gCycle::se_turnLeft, 1 ); + owner_->Act( &gCycle::se_turnLeft, 1 ); + rlDir = 1; + } + } + rlLastTime = currentTime; + return; + } +#endif + // is it already time for activation? if ( currentTime < nextChatAI_ ) return; @@ -5148,11 +5194,24 @@ if ( newTime >= lastTime ) { // simulate extrapolator until now - eGameObject::TimestepThis( lastTime, extrapolator_ ); + if( lastTime > extrapolator_->LastTime() ) + { + eGameObject::TimestepThis( lastTime, extrapolator_ ); + } // test if there are real (the check for list does that) destinations left; we cannot call it finished if there are. gDestination* unhandledDestination = extrapolator_->GetCurrentDestination(); ret = !unhandledDestination || !unhandledDestination->list; + + if( !ret ) + { + if ( unhandledDestination->gameTime < newTime - Lag() * 2 - sn_Connections[0].ping.GetPing()*2 - GetTurnDelay()*4 ) + { + // emergency reset. + extrapolator_ = 0; + resimulate_ = true; + } + } newTime = lastTime; } Modified: armagetronad/trunk/armagetronad/src/tron/gGame.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gGame.cpp 2009-02-16 15:51:02 UTC (rev 9007) +++ armagetronad/trunk/armagetronad/src/tron/gGame.cpp 2009-02-16 15:58:01 UTC (rev 9008) @@ -2951,7 +2951,7 @@ eGameObject *e=p->Object(); - if ( ( !e || !e->Alive() && e->DeathTime() < time - .5 ) && sn_GetNetState() != nCLIENT ) + if ( ( !e || ( !e->Alive() && e->DeathTime() < time - .5 ) ) && sn_GetNetState() != nCLIENT ) { sg_RespawnPlayer(time, grid, &arena, p); } @@ -3006,7 +3006,11 @@ #endif #ifdef RESPAWN_HACK - sg_Respawn(time,grid,Arena); + // no respawining while deathzone is active. + if( !winDeathZone_ ) + { + sg_Respawn(time,grid,Arena); + } #endif // chop timestep into small, managable bits This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-16 23:56:23
|
Revision: 9013 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9013&view=rev Author: z-man Date: 2009-02-16 23:56:19 +0000 (Mon, 16 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 9004 to 9012: ------------------------------------------------------------------------ r9011 | bazaarmagetron | 2009-02-16 21:53:21 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: Fixed removal of wrong delete info. ------------------------------------------------------------------------ r9010 | bazaarmagetron | 2009-02-16 21:52:31 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: Fixed deleted objects from lingering around on the client too much. ------------------------------------------------------------------------ r9009 | bazaarmagetron | 2009-02-16 21:51:26 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: Removed annoying debug breakpoints. ------------------------------------------------------------------------ r9007 | bazaarmagetron | 2009-02-16 16:51:02 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: Name lenght limit now also applies to admin renames. Silly admins. ------------------------------------------------------------------------ r9006 | bazaarmagetron | 2009-02-16 16:49:23 +0100 (Mon, 16 Feb 2009) | 2 lines Manuel Moos: Added emergency code to hopefully catch the invulnerability bug. ------------------------------------------------------------------------ r9005 | bazaarmagetron | 2009-02-16 16:47:31 +0100 (Mon, 16 Feb 2009) | 4 lines author: Manuel Moos Don't leave the cycle driving straight on on the server just because a couple of turns were missed. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9004&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp armagetronad/trunk/armagetronad/src/network/nNetObject.cpp armagetronad/trunk/armagetronad/src/network/nNetObject.h armagetronad/trunk/armagetronad/src/tron/gCycle.cpp armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-9004 + /armagetronad/branches/0.2.8:8751-8852,8855-9012 Modified: armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-02-16 23:47:15 UTC (rev 9012) +++ armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp 2009-02-16 23:56:19 UTC (rev 9013) @@ -8524,6 +8524,7 @@ this->nameFromAdmin_ = name; this->nameFromAdmin_.NetFilter(); + se_CutString( this->nameFromAdmin_, 16 ); // crappiest line ever :-/ newName << tColoredString::ColorString( r/15.0, g/15.0, b/15.0 ) << this->nameFromAdmin_ << tColoredString::ColorString( -1, -1, -1 ); Modified: armagetronad/trunk/armagetronad/src/network/nNetObject.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetObject.cpp 2009-02-16 23:47:15 UTC (rev 9012) +++ armagetronad/trunk/armagetronad/src/network/nNetObject.cpp 2009-02-16 23:56:19 UTC (rev 9013) @@ -41,6 +41,8 @@ #include <set> #include <map> +// #define DEBUG + // debug watchs #ifdef DEBUG int sn_WatchNetID = 0; @@ -1109,8 +1111,11 @@ if ( found != sn_netObjectsDeleted.end() ) { nDeletedInfo & deleted = (*found).second; - deleted.Set( NULL ); - sn_netObjectsDeleted.erase(found); + if ( this == deleted.object_ ) + { + deleted.Set( NULL ); + sn_netObjectsDeleted.erase(found); + } } } @@ -1220,6 +1225,25 @@ return NULL; } +void nNetObject::ClearDeleted( unsigned short id ) +{ + // clear object from info arrays + nDeletedInfos::iterator found = sn_netObjectsDeleted.find( id ); + if ( found != sn_netObjectsDeleted.end() ) + { +#ifdef DEBUG + sn_BreakOnObjectID( id ); +#endif + + nDeletedInfo & deleted = (*found).second; + if( deleted.object_ == sn_netObjects[id] ) + { + sn_netObjects[id] = 0; + sn_netObjectsOwner[id] = 0; + } + } +} + void nNetObject::PrintName(tString &s) const { s << "Nameless NetObject nr. " << id; @@ -1355,6 +1379,9 @@ sn_netObjectsOwner[id]=owner; sn_netObjects_AcceptClientSync[id]=false; +#ifdef DEBUG + sn_BreakOnObjectID(id); +#endif sn_netObjects[id]=this; } } Modified: armagetronad/trunk/armagetronad/src/network/nNetObject.h =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetObject.h 2009-02-16 23:47:15 UTC (rev 9012) +++ armagetronad/trunk/armagetronad/src/network/nNetObject.h 2009-02-16 23:56:19 UTC (rev 9013) @@ -113,6 +113,9 @@ static nNetObject *ObjectDangerous(int i ); // the same thin but returns NULL if the object is not yet available. + + // clears an eventually deleted object of the given ID out of the main lists + static void ClearDeleted( unsigned short ID ); virtual void AddRef(); // call this every time you add a pointer // to this nNetObject from another nNetObject, so we know when it is @@ -342,6 +345,8 @@ unsigned short id=m.Data(0); //unsigned short owner=m.data(1); + nNetObject::ClearDeleted(id); + if (sn_netObjectsOwner[id]!=m.SenderID() || bool(sn_netObjects[id])) { #ifdef DEBUG Modified: armagetronad/trunk/armagetronad/src/tron/gCycle.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-16 23:47:15 UTC (rev 9012) +++ armagetronad/trunk/armagetronad/src/tron/gCycle.cpp 2009-02-16 23:56:19 UTC (rev 9013) @@ -2805,6 +2805,17 @@ } } + // check whether simulation has fallen too far behind the requested time +#ifdef DEDICATED + if ( Alive() && currentTime > lastTime + 4 * Lag() + 10 ) + { + sn_ConsoleOut( "0xff7777Admin : 0xffff77BUG had to kill a cycle because it lagged behind in the simulation. Probably the invulnerability bug. Investigate!\n" ); + st_Breakpoint(); + KillAt( pos ); + ret = false; + } +#endif + return ret; } Modified: armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp 2009-02-16 23:47:15 UTC (rev 9012) +++ armagetronad/trunk/armagetronad/src/tron/gCycleMovement.cpp 2009-02-16 23:56:19 UTC (rev 9013) @@ -2211,7 +2211,7 @@ if ( !CanMakeTurn( turnTo ) ) { con << "Early turn!\n"; - st_Breakpoint(); + // st_Breakpoint(); } } #endif @@ -2305,6 +2305,12 @@ else used = true; } + else + { + // missed more than one turn. Drat. Ignore and hope for the best. + // st_Breakpoint(); + ++turns; + } /* con << "turning to " << currentDestination->position << "," << currentDestination->direction << "," @@ -3145,6 +3151,13 @@ lastTurnPos_ = pos; turns++; + /* + if( sn_GetNetState() != nSERVER ) + { + // simulate lost turns + turns+=2; + } + */ AccelerationDiscontinuity(); verletSpeed_ *= sg_cycleTurnSpeedFactor; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-21 15:17:24
|
Revision: 9025 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9025&view=rev Author: z-man Date: 2009-02-21 15:17:19 +0000 (Sat, 21 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 9012 to 9024: ------------------------------------------------------------------------ r9023 | bazaarmagetron | 2009-02-20 00:38:03 +0100 (Fri, 20 Feb 2009) | 2 lines Manuel Moos: Corrected competition master subculture. ------------------------------------------------------------------------ r9021 | bazaarmagetron | 2009-02-19 15:07:32 +0100 (Thu, 19 Feb 2009) | 2 lines Manuel Moos: Keyup events no longer run through doublebind protection. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9012&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/config/subcultures.srv armagetronad/trunk/armagetronad/src/ui/uInput.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-9012 + /armagetronad/branches/0.2.8:8751-8852,8855-9024 Modified: armagetronad/trunk/armagetronad/config/subcultures.srv =================================================================== --- armagetronad/trunk/armagetronad/config/subcultures.srv 2009-02-21 11:47:59 UTC (rev 9024) +++ armagetronad/trunk/armagetronad/config/subcultures.srv 2009-02-21 15:17:19 UTC (rev 9025) @@ -1,5 +1,5 @@ ServerBegin -connection master1.armagetronad.net +connection armagetron.kicks-ass.net port 4532 method 0 key 0 Modified: armagetronad/trunk/armagetronad/src/ui/uInput.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/ui/uInput.cpp 2009-02-21 11:47:59 UTC (rev 9024) +++ armagetronad/trunk/armagetronad/src/ui/uInput.cpp 2009-02-21 15:17:19 UTC (rev 9025) @@ -1323,7 +1323,7 @@ uBind * bind = info.input->GetBind(); if ( bind ) { - if ( bind->IsDoubleBind( info.input ) ) + if ( info.value > 0 && bind->IsDoubleBind( info.input ) ) { return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-25 13:22:31
|
Revision: 9045 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9045&view=rev Author: z-man Date: 2009-02-25 12:14:21 +0000 (Wed, 25 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 9041 to 9044: ------------------------------------------------------------------------ r9044 | bazaarmagetron | 2009-02-25 13:07:45 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Updated. ------------------------------------------------------------------------ r9043 | bazaarmagetron | 2009-02-25 13:06:49 +0100 (Wed, 25 Feb 2009) | 4 lines author: Manuel Moos Switched to utf8 as the encoding used for scrambling passwords and sending usernames to the authority. ( Not merging, of course. This is already done here. ) ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9041&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/NEWS armagetronad/trunk/armagetronad/batch/authentication_reference.php armagetronad/trunk/armagetronad/src/network/nKrawall.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-9041 + /armagetronad/branches/0.2.8:8751-8852,8855-9044 Modified: armagetronad/trunk/armagetronad/NEWS =================================================================== --- armagetronad/trunk/armagetronad/NEWS 2009-02-25 12:07:45 UTC (rev 9044) +++ armagetronad/trunk/armagetronad/NEWS 2009-02-25 12:14:21 UTC (rev 9045) @@ -90,6 +90,8 @@ Changes since 0.2.8.3_beta1: ============================ +- Authentication routines now use utf8 as forward- compatibility with + trunk. Previously, non-ASCII usernames simply didn't work at all. - Better lag slide protection: clients no longer get confused when the server sends their cycle back in time, and the server no longer does that for old clients. Modified: armagetronad/trunk/armagetronad/batch/authentication_reference.php =================================================================== --- armagetronad/trunk/armagetronad/batch/authentication_reference.php 2009-02-25 12:07:45 UTC (rev 9044) +++ armagetronad/trunk/armagetronad/batch/authentication_reference.php 2009-02-25 12:14:21 UTC (rev 9045) @@ -72,7 +72,8 @@ // of users, you may just get away with expanding this // array. $passwords= array ( - 'test' => 'password' // clever choice there, test + 'test' => 'password', // clever choice there, test + 'z-män' => 'passwörd' // test for utf8 usernames and passwords ); $password = $passwords[ $user ]; Modified: armagetronad/trunk/armagetronad/src/network/nKrawall.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nKrawall.cpp 2009-02-25 12:07:45 UTC (rev 9044) +++ armagetronad/trunk/armagetronad/src/network/nKrawall.cpp 2009-02-25 12:14:21 UTC (rev 9045) @@ -312,7 +312,7 @@ { } -static void sn_WriteHexByte( std::ostream & s, int c ) +static void sn_WriteHexByte( std::ostream & s, unsigned int c ) { // don't want to rely on filling type iomanip things, never learned how to use them reliably s << std::hex << std::setfill('0') << std::setw(2) << c; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-25 13:22:45
|
Revision: 9042 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9042&view=rev Author: z-man Date: 2009-02-25 12:02:11 +0000 (Wed, 25 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 9024 to 9041: ------------------------------------------------------------------------ r9041 | bazaarmagetron | 2009-02-24 20:41:19 +0100 (Tue, 24 Feb 2009) | 1 line Manuel Moos: Removed idle kick from fortess sample politics; idle remove is more than enough. ------------------------------------------------------------------------ r9040 | bazaarmagetron | 2009-02-24 20:40:35 +0100 (Tue, 24 Feb 2009) | 1 line Manuel Moos: More flexible client alpha build expiry distinguising between 0.2.8 and trunk servers. ------------------------------------------------------------------------ r9039 | bazaarmagetron | 2009-02-24 18:04:25 +0100 (Tue, 24 Feb 2009) | 2 lines Manuel Moos: Translation work. ------------------------------------------------------------------------ r9026 | bazaarmagetron | 2009-02-22 12:39:10 +0100 (Sun, 22 Feb 2009) | 2 lines Manuel Moos: Correctly encode non-ascii-characters. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9024&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/config/examples/cvs_test/fortress_politics.cfg armagetronad/trunk/armagetronad/language/deutsch.txt armagetronad/trunk/armagetronad/src/network/nKrawall.cpp armagetronad/trunk/armagetronad/src/network/nNetwork.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-9024 + /armagetronad/branches/0.2.8:8751-8852,8855-9041 Modified: armagetronad/trunk/armagetronad/config/examples/cvs_test/fortress_politics.cfg =================================================================== --- armagetronad/trunk/armagetronad/config/examples/cvs_test/fortress_politics.cfg 2009-02-24 19:41:19 UTC (rev 9041) +++ armagetronad/trunk/armagetronad/config/examples/cvs_test/fortress_politics.cfg 2009-02-25 12:02:11 UTC (rev 9042) @@ -45,8 +45,11 @@ # remove idle players and chatbots quickly CHATTER_REMOVE_TIME 30 # Time in seconds after which a permanent chatter is removed from the game IDLE_REMOVE_TIME 90 # Time in seconds after which an inactive player is removed from the game -IDLE_KICK_TIME 600 # Time in seconds after which an inactive player is kicked +# Not really fashionable any more with the better support for spectators, +# but for the record, this was active back in CVS Test days: +# IDLE_KICK_TIME 600 # Time in seconds after which an inactive player is kicked + # harsh automatic banning after a kick NETWORK_AUTOBAN_MAX_KPH 300 NETWORK_AUTOBAN_OFFSET -.05 Modified: armagetronad/trunk/armagetronad/language/deutsch.txt =================================================================== --- armagetronad/trunk/armagetronad/language/deutsch.txt 2009-02-24 19:41:19 UTC (rev 9041) +++ armagetronad/trunk/armagetronad/language/deutsch.txt 2009-02-25 12:02:11 UTC (rev 9042) @@ -425,6 +425,7 @@ lag_credit_help Gesamtzeit des Lag-Kredits in Sekunden. lag_credit_single_help Maximaler Lag-Kredits in Sekunden f\xFCr ein einzelnes Lag-Event. +lag_credit_variance_help Maximales vielfaches der gemessenen Lag-Schwankungen, die f\xFCr ein einzelnes Lag-Event an Kredit gegeben werden. lag_sweet_spot_help "Sweet Spot" des Lag-Kredits. Es wird versucht, den Lag-Kredit auf diesem F\xFCllstand zu halten. lag_credit_time_help Zeitskala, auf der Lag-Kredit verf\xE4llt. @@ -919,6 +920,17 @@ admins_help Gibt eine Liste der Administratoren. Siehe auch /admins and /listadmins chat commands. admin_list_cant_see \1: Zugriff auf Administratorenliste verweigert.\n +admin_list_authoritylevel Benutzer von Meldeamt \1 +admin_list_end \1: \2 Benutzer und \3 Melde\xE4mter auf \4 Zugriffsleveln.\n + +admin_list_colors_best_red_help Rot-Komponente des besten Zugriffslevels in der /admins-Liste +admin_list_colors_best_green_help Gr\xFCn-Komponente des besten Zugriffslevels in der /admins-Liste +admin_list_colors_best_blue_help Blau-Komponente des besten Zugriffslevels in der /admins-Liste +admin_list_colors_worst_red_help Rot-Komponente des besten Zugriffslevels in der /admins-Liste +admin_list_colors_worst_green_help Gr\xFCn-Komponente des besten Zugriffslevels in der /admins-Liste +admin_list_colors_worst_blue_help Blau-Komponente des besten Zugriffslevels in der /admins-Liste +admin_list_min_access_level_help Minimaler Zugriffslevel, ab dem jemand in /admins gelistet wird + # communication console_message_help Gibt eine Nachricht auf den Konsolen aller angeschlossenen Spieler aus. center_message_help Gibt eine Nachricht in der Bildschirmmitte aller angeschlossenen Spieler aus. @@ -1578,6 +1590,18 @@ kick_player_text Vertreibe \1 kick_player_help Dieser Menupunkt schl\xE4gt den anderen Spielern vor, besagten Spieler vom Server zu werfen. +suspend_player_details_text Wenn dieser Vorschlag akzeptiert wird, dann wird \1 f\xFCr einige Zeit aus dem Spiel entfernt und zum Zuschauen gezwungen. +suspend_player_text Entferne \1 + +vote_include_details_text Wenn dieser Vorschlag akzeptiert wird, wird die Konfigurationsdatei \1 geladen. +vote_include_text Lade \1 +vote_include_error Konnte Datei \1 nicht finden oder nicht lesen.\n +vote_include_message Binde \1 ein. Nur Benuzer auf Zugriffslevel \2 oder besser k\xF6nnen die Ausgabe lesen.\n + +vote_command_details_text Wenn dieser Vorschlag akzeptiert wird, wird das Konsolenkommando "\1" direkt ausgef\xFChrt. +vote_command_text Kommando \1 +vote_command_message F\xFChre Kommando "\1" aus.\n + #************************************* #************************************* # @@ -1630,11 +1654,18 @@ viewport_assign_text Fenster zuteilen viewport_assign_help Welcher Spieler spielt in welchem Fenster? +player_authenticate_text Authentifizierung +player_authenticate_help Falls du eine Globale ID hast, dann kannst du dich hier \xFCber sie beim Server authentifizieren. Mit dem korrekten Password, versteht sich. +player_authenticate_action Authentifizierungsgesuch abgeschickt. Bald sollte der Passwortdialog erscheinen.\n + #player setup player_name_text Name: player_name_help Das ... in "Sieger: ... ". Benutze die normalen Editiertasten. +player_global_id_text Globale ID: +player_global_id_help Falls vorhanden, kannst du deine Globale ID hier eintragen. We sie aussieht, h\xE4ngt von deinem Melteamt ab. Bist du auf forums.armagetronad.net angemeltet, ist sie z.B. dein Benutzername dort, gefolgt von "@forums". + player_input_text Spiel-Tasten player_input_help Stellt die Tastaturbelegung f\xFCr die Steuerung der Vehikel ein @@ -1662,6 +1693,12 @@ player_red_text Rot: player_red_help Stellt den Rotanteil deiner Farbe ein +player_autologin_text Automatisches Login: +player_autologin_help Falls dies aktiviert ist, wirst du automatisch mit deiner oben angegebenen Globalen ID bei Servern angemeldet, die das unterst\xFCtzen. + +player_stealth_text Verstecke Globale ID: +player_stealth_help Normalerweise wird die Globale ID allen Mitspielern bekanntgegeben. Wenn du das nicht willst, aktiviere diese Option. Administratoren und Moderatoren k\xF6nnen deine ID allerdings normalerweise immer noch sehen, und Server d\xFCrfen deinen Wunsch auch komplett ignorieren. + player_spectator_text Nur Zuschauer: player_spectator_help Wenn man nur Zuschauer ist, so steuert man kein eigenes Vehikel und kann nur den anderen zusehen. @@ -1739,6 +1776,9 @@ team_menu_create Neues Team/Beliebiges Team team_menu_create_help Gr\xFCndet ein neues Team und l\xE4sst den Spieler beitreten, oder, sollte das nicht m\xF6glich sein, tritt einem beliebigen Team bei +team_menu_spectate Schaue zu +team_menu_spectate_help Verl\xE4sst das Spiel und schaut von nun an nur noch zu. + team_owned_by \1s Team team_ai Computergegner team_empty Leeres Team @@ -2016,6 +2056,12 @@ #tweaks menu tweaks_displaylists_text Display Lists: tweaks_displaylists_help Display Lists sind ein OpenGL-Feature, um ein Objekt schnell oft rendern zu k\xF6nnen; es wird normalerweise f\xFCr die Vehikel verwendet. Manchmal funktioniert das aber nicht richtig: wenn die Vehikel unsichtbar sind, dann sollte dieses Feature ausgeschaltet werden. +tweaks_displaylists_off_text Aus +tweaks_displaylists_off_help Verwendet gar keine Display Lists. +tweaks_displaylists_cac_text Create and Call +tweaks_displaylists_cac_help Verwende Display Lists; sie werden erst erzeugt und danach direkt verwendet. Dies ist der empfohlenen Modus. +tweaks_displaylists_cae_text Create and Execute +tweaks_displaylists_cae_help Verwende Display Lists; sie werden erzeugt und gleichzeitig verwendet. Create and Call ist besser f\xFCr die Performance, sagt man. tweaks_infinity_text Unendlich: tweaks_infinity_help OpenGL unterst\xFCtzt eigentlich unendlich ferne Punkte: sie entsprechen einfach nur Richtungen. Senn dieser Menupunkt aktiviert wird, dann verwendet \g diese unendlichen Punkte, um z.B. den Boden zu zeichnen. Meistens ist dieses Feature allerdings kaputtoptimiert. @@ -2184,11 +2230,23 @@ instant_round_end_activated Die Rundenendzone wurde aktiviert! Finde sie und fahre hinein um die Runde zu beenden.\n instant_death_activated Die Todeszone wurde aktiviert! Vermeide sie!\n +player_admin_kill \1 0xRESETTwurde von einem Adminstrator zerschmettert.\n +player_admin_slap_free \1 0xRESETTwurde von einem Administrator geohrfeigt.\n +player_admin_slap_win \1 wurde von einem Administrator f\xFCr \2 Punkte umarmt.\n +player_admin_slap_lose \1 0xRESETTwurde von einem Administrator f\xFCr \2 Punkte geohrfeigt.\n +slap_help Ohrfeigt den angegebenen Spielr und zieht im die angegebene Punktzahl ab. Hmm, vielleicht kann man hiermit auch nett sein? :) player_win_instant \1 bekam \2 Punkte durch das Erreichen der Siegzone.\n player_win_conquest \1 bekam \2 Punkte f\xFCr das erobern der Basis des Feindes.\n player_win_held_fortress \1 bekam \2 Punkte f\xFCr das Halten der eigenen Basis.\n +player_lose_held_fortress \1 verliert \2 points f\xFCr zu defensives Spiel.\n player_win_conquest_specific \1 bekam \2 Punkte f\xFCr das erobern der Basis von \3.\n player_kill_collapse \1 wurde von seiner kollabierenden Zone vernichtet.\n +player_win_hole \1 erh\xE4lt \2 Punkte f\xFCr Opferbereitschaft.\n +player_lose_hole 0xffff00ZOMG! 0xff7f00HOLER!!1!!0xRESETT \1 verliert \2 Punkte. Weil er ein n00b ist, oder so.\n + +player_no_longer_suspended \1 0x77ff77darf wieder spielen.\n +player_suspended \1 0xff7777wird f\xFCr \2 Runde(n) zum Zuschauen verdammt.\n + zone_collapse_harmless \1s Zone verpufft harmlos wegen mangelden Feindkontakts.\n #******************************************** @@ -2201,6 +2259,9 @@ player_teamleave_disallowed Sorry, /teamleave funktionniert nicht, wenn automatische Teamwahl aktiv ist. player_teamchanges_disallowed Sorry, der Administrator hat Teamwechsel verboten.\n +player_teamchanges_suspended Du darfst f\xFCr die n\xE4chsten \1 Runde(s) noch nicht spielen.\n +player_teamchanges_accesslevel Du darfst hier nicht spielen. Du bist \1, minimaler Zugriffslevel w\xE4re \2.\n +player_vote_accesslevel Dein Zugriffslevel reicht nicht aus, um \xFCber das abzustimmen. Du bist \1, minimaler Zugriffslevel w\xE4re \2.\n player_pingcharity_changed Ping-Spende ist nun \2 (vorher: \1).\n spam_protection_repeat SPAM PROTECTION: du sagsest bereits: \1\n spam_protection LABER-SCHUTZ: du bist f\xFCr die n\xE4chsten \1 Sekunden geknebelt.\n @@ -2219,13 +2280,19 @@ player_left_game \1 0xff7f7fwurde mit \2 Punkten endg\xFCltig gel\xF6scht.\n player_leaving_game \1 0xff7f7fhat das Spiel verlassen.\n player_renamed \2 hat sich auf \1 umbenannt.\n +player_got_renamed \2 wurde in \1 umbenannt.\n +player_will_be_renamed \2 wird auf \2 umbenannt werden. player_rename_rejected_votekick \1 0xffffffdarf sich nicht in \2 0xffffffumbenennen, das k\xF6nnte die Abstimmenden verwirren.\n +player_rename_rejected_admin \1 0xffffffdarf sich nicht auf \20xffffff umbenennen, sein Name ist von einem Administrator gesperrt.\n +player_allowed_rename \1 0x7fff7fdarf sich wieder umbenennen.\n +player_disallowed_rename \1 0xff7f7fdarf sich nicht mehr umbenennen.\n player_welcome \n\nWilkommen \1! Auf diesem Server l\xE4uft Version \2.\n player_win_default \1 erh\xE4lt aus sehr seltsamen Gr\xFCnden \2 Punkte.\n player_lose_default \1 verliert aus sehr seltsamen Gr\xFCnden \2 Punkte.\n player_lose_suicide \1 verliert \2 Punkte wegen Selbstmord.\n player_free_suicide \1 beging Selbstmord.\n player_win_frag \1 liess \3 f\xFCr \2 Punkte in die Falle laufen.\n +player_win_survive \1 erh\xE4lt \2 Punkte f\xFCrs \xDCberleben.\n player_free_frag \1 liess \2 in die Falle laufen.\n player_teamkill \1 hat den Teampartner \2 beseitigt! Buh! Daf\xFCr gibt es keinen einzigen Punkt!\n player_win_frag_ai \1 erh\xE4lt \2 Punkte f\xFCr das glorreiche Vernichten eines Computergegners.\n @@ -2245,11 +2312,37 @@ player_nocreate_team \1 kann momentan kein neues Team gr\xFCnden.\n player_nojoin_team \1 kann sich momentan \2 nicht anschliessen.\n player_not_on_team Du bist in keinem Team.\n +player_team_message Teammitglieder +player_spectator_message Zuschauer +no_real_teams Keine Teams mit mehr als einem Spieler.\n player_topologypolice Die Topologiepolizei befiehlt: \1 team_shuffle \1 wird von Position \2 auf \3 verschoben.\n player_noshuffleup Du darfst dich hier nicht selbst bef\xF6rdern.\n player_noshuffle Dein Positions\xE4nderungswunsch hat keinen Effekt.\n +player_shuffle_error /shuffle erwartet eine Zahl als Argument; mit explizitem Vorzeichen (+/-) wird die Position um die angegebene Zahl an Pl\xE4tzen ver\xE4ndert, ohne Vorzeichen geht es and die angegebene absolute Position.\n + +add_help_topic_help F\xFCgt ein neues Hilfsthema f\xFCr /help hinzu. Verwendung: ADD_HELP_TOPIC <thema> <kurzbescheibung> <voller text> +add_help_topic_usage Verwendung: ADD_HELP_TOPIC <thema> <kurzbescheibung> <voller text>\n +add_help_topic_success Hilfsthema "\1" hinzugef\xFCgt.\n +remove_help_topic_help Entfernt ein Hilfethema. +remove_help_topic_success Hilfsthema "\1" entfernt.\n +remove_help_topic_notfound Hilfsthema "\1" existiert nicht.\n + +rtfm_announcement \2 macht \3 auf die Existenz von /help \1 aufmerksam.\n + +help_introductory_blurb_help Dieser Text wird vor der Liste der Hilfsthemen angezeigt, wenn jemand /help ohne Argumente aufruft + +help_topics_list_start Sage /help THEMA, um Hilfe bei einem der folgenden Themen zu erhalten:\n +help_topic_not_found Hilfsthema \1 nicht gefunden. /help ohne Argument kann dir eine Liste geben.\n + +help_commands_shortdesc Liste aller Chat-Kommandos +help_commands_text Direkt gibt es zu diesem Thema keine Hilfe, aber zu den folgenden Unterthemen: + +help_commands_chat_shortdesc Einfache Chat-Kommandos +help_commands_chat_text 0x88ff88/me <Nachricht>0xffff88: Simuliert eine Handlung, wie in "/me ist ein Depp.", wird als "* <dein Dame > ist ein Depp" ausgegeben.\n0x88ff88/msg <Teil eines Namens> <Nachricht>0xffff88: Schickt eine private Nachricht, die nur der angegebene Spieler lesen kann.\n0x88ff88/team <Nachricht>0xffff88: Schickt eine Nachricht an deine Teammitglieder, oder an alle Zuschauer, falls du gerade nicht spielst + +help_commands_team_shortdesc Kommandos f\xFCr Team-Management msg_toomanymatches 0xff0000Zu viele Treffer bei Suche nach \1. Bitte etwas genauer.\n msg_nomatch 0xff0000Keine Treffer bein Suche nach \1.\n @@ -2356,6 +2449,7 @@ network_login_failed Verbindungsaufbau fehlgeschlagen. network_login_failed_full Verbindungsaufbau fehlgeschlagen: Der Server ist voll belegt.\n network_login_failed_timeout Verbindungsaufbau fehlgeschlagen: Keine Antwort erhalten.\n +network_login_failed_abort Verbindungsaufbau abgebrochen.\n network_login_success Verbindungsaufbau erfolgreich. Als Benutzer \1 angemeldet.\n network_login_sync Synchronisiere mit dem Server...\n network_login_relabeling NetObjects werden neu geordnet...\n @@ -2403,6 +2497,7 @@ vote_accepted Vorschlag "\1" wurde angenommen.\n vote_rejected Vorschlag "\1" wurde abgelehnt.\n vote_timeout Abstimmung "\1" wurde ohne Ergebnis beendet.\n +vote_cancel_all Alle Abstimmungen wurden von einem Administrator abgebrochen.\n vote_new Neuer Abstimmungsvorschlag: "\1". Gib deine Stimme im Hauptmenu ab.\n vote_redundant Vorschlag abgelehnt, ein identischer Vorschlag wurde bereits vor kurzem gemacht.\n vote_maturity Vorschlag abgelehnt, du bist noch nicht alt genug, warte \1 Sekunden.\n @@ -2551,6 +2646,18 @@ nconfig_error_ignoreold Veraltete Konfigurations\xE4nderung f\xFCr Einstellung \1 wird ignoriert.\n nconfig_value_changed \1 wurde auf Befehl des Servers von \2 auf \3 ver\xE4ndert.\n +config_accesslevel_0 Besitzer +config_accesslevel_1 Administrator +config_accesslevel_2 Moderator +config_accesslevel_7 Team-Anf\xFChrer +config_accesslevel_8 Teammitglied +config_accesslevel_12 Lokaler Benutzer +config_accesslevel_15 Fremder +config_accesslevel_16 Missbilligt +config_accesslevel_17 Ausgesto\xDFen +config_accesslevel_19 Eingeloggt +config_accesslevel_20 Programm + #************************************* #************************************* # Modified: armagetronad/trunk/armagetronad/src/network/nKrawall.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nKrawall.cpp 2009-02-24 19:41:19 UTC (rev 9041) +++ armagetronad/trunk/armagetronad/src/network/nKrawall.cpp 2009-02-25 12:02:11 UTC (rev 9042) @@ -339,7 +339,7 @@ std::istringstream in( static_cast< char const * >( original ) ); std::ostringstream out; - char c = in.get(); + unsigned char c = in.get(); while ( !in.eof() ) { if ( c == ' ' ) Modified: armagetronad/trunk/armagetronad/src/network/nNetwork.cpp =================================================================== --- armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-24 19:41:19 UTC (rev 9041) +++ armagetronad/trunk/armagetronad/src/network/nNetwork.cpp 2009-02-25 12:02:11 UTC (rev 9042) @@ -1312,10 +1312,23 @@ #ifndef NOEXPIRE #ifndef DEDICATED + // last checked to be compatible with 0.3.1_pb from trunk. + // It's ulikely this branch will introduce more bugs/network code revisions, so we're fine accepting all + int lastCheckedTrunkVersion = 21; + + // start of trunk as seen from this branch + int trunkBegin = 20; + + // maximal allowed version from this branch + int maxVersionThisBranch = sn_currentProtocolVersion + 1; + // expiration for public beta versions if ( !sn_AcceptingFromMaster && ( strstr( st_programVersion.c_str(), "rc" ) || strstr( st_programVersion.c_str(), "alpha" ) || strstr( st_programVersion.c_str(), "beta" ) ) && - sn_Connections[0].version.Max() > sn_currentProtocolVersion + 1 ) + ( sn_Connections[0].version.Max() > lastCheckedTrunkVersion || + ( sn_Connections[0].version.Max() > maxVersionThisBranch && sn_Connections[0].version.Max() < trunkBegin ) + ) + ) { throw tGenericException( tOutput("$testing_version_expired"), tOutput("$testing_version_expired_title" ) ); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z-...@us...> - 2009-02-26 13:01:22
|
Revision: 9057 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9057&view=rev Author: z-man Date: 2009-02-26 11:47:45 +0000 (Thu, 26 Feb 2009) Log Message: ----------- Merging branch 0.2.8 from revision 9044 to 9056: ------------------------------------------------------------------------ r9056 | bazaarmagetron | 2009-02-25 23:40:00 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Translated new language items so no smartass reopens the 'translation not complete' bug :) ------------------------------------------------------------------------ r9055 | bazaarmagetron | 2009-02-25 23:39:17 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Added missing help entries. ------------------------------------------------------------------------ r9054 | bazaarmagetron | 2009-02-25 23:38:07 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Added items collected over the past months. ------------------------------------------------------------------------ r9053 | bazaarmagetron | 2009-02-25 21:09:50 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Softcoded command help. ------------------------------------------------------------------------ r9052 | bazaarmagetron | 2009-02-25 21:08:36 +0100 (Wed, 25 Feb 2009) | 5 lines author: Manuel Moos Applied epsy's changes from https://bugs.launchpad.net/armagetronad/0.2.8/+bug/312245/comments/3 (Please use "./update.py --scm" from now before committing changes to this file to keep redunant untranslated strings out of bzr/svn.) ------------------------------------------------------------------------ r9051 | bazaarmagetron | 2009-02-25 21:06:40 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Completed translation. ------------------------------------------------------------------------ r9050 | bazaarmagetron | 2009-02-25 21:05:11 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Updated IDs of some items. ------------------------------------------------------------------------ r9049 | bazaarmagetron | 2009-02-25 18:34:59 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Small typo. ------------------------------------------------------------------------ r9048 | bazaarmagetron | 2009-02-25 18:33:31 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Translated some more. ------------------------------------------------------------------------ r9047 | bazaarmagetron | 2009-02-25 15:56:20 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: SPAM_MAXLEN can only be modified by the owner to prevent accidents. ------------------------------------------------------------------------ r9046 | bazaarmagetron | 2009-02-25 15:55:09 +0100 (Wed, 25 Feb 2009) | 2 lines Manuel Moos: Corrected lag variance setting help ID. ------------------------------------------------------------------------ Revision Links: -------------- http://armagetronad.svn.sourceforge.net/armagetronad/?rev=9044&view=rev Modified Paths: -------------- armagetronad/trunk/armagetronad/language/american.txt armagetronad/trunk/armagetronad/language/british.txt armagetronad/trunk/armagetronad/language/deutsch.txt armagetronad/trunk/armagetronad/language/english_base.txt armagetronad/trunk/armagetronad/language/english_base_notranslate.txt armagetronad/trunk/armagetronad/language/french.txt armagetronad/trunk/armagetronad/src/engine/ePlayer.cpp armagetronad/trunk/armagetronad/src/network/nSpamProtection.cpp Property Changed: ---------------- armagetronad/trunk/ Property changes on: armagetronad/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /armagetronad/branches/0.2.8:8751-8852,8855-9044 + /armagetronad/branches/0.2.8:8751-8852,8855-9056 Modified: armagetronad/trunk/armagetronad/language/american.txt =================================================================== --- armagetronad/trunk/armagetronad/language/american.txt 2009-02-25 22:40:00 UTC (rev 9056) +++ armagetronad/trunk/armagetronad/language/american.txt 2009-02-26 11:47:45 UTC (rev 9057) @@ -36,3 +36,4 @@ detail_text_truecolor_text TrueColor Textures: detail_text_truecolor_help Stores the textures with 32 bit color depth instead of the default of 16 bit. sound_inited Sound initialized: 16 bit stereo at \1 Hz, buffer size \2 samples.\n +player_random_color_help If set to 1, each local player will receive a semi-random color every round, trying to get as far away from every other player color. Modified: armagetronad/trunk/armagetronad/language/british.txt =================================================================== --- armagetronad/trunk/armagetronad/language/british.txt 2009-02-25 22:40:00 UTC (rev 9056) +++ armagetronad/trunk/armagetronad/language/british.txt 2009-02-26 11:47:45 UTC (rev 9057) @@ -38,3 +38,4 @@ detail_text_truecolor_text TrueColour Textures: detail_text_truecolor_help Stores the textures with 32 bit colour depth instead of the default of 16 bit. sound_inited Sound initialised: 16 bit stereo at \1 Hz, buffer size \2 samples.\n +player_random_color_help If set to 1, each local player will receive a semi-random colour every round, trying to get as far away from every other player colour. Modified: armagetronad/trunk/armagetronad/language/deutsch.txt =================================================================== --- armagetronad/trunk/armagetronad/language/deutsch.txt 2009-02-25 22:40:00 UTC (rev 9056) +++ armagetronad/trunk/armagetronad/language/deutsch.txt 2009-02-26 11:47:45 UTC (rev 9057) @@ -132,6 +132,21 @@ #******************************************** #******************************************** # +# Chatbot settings +# +#******************************************** +#******************************************** + +chatbot_always_active_help Wenn dies auf 1 gesetzt wird, ist der Chatbot immer aktiv. +chatbot_new_wall_blindness_help Der Chatbot sieht keine W\xE4nde, die j\xFCnger als diese Zeit in Sekunden sind +chatbot_min_timestep_help K\xFCrzestes Interval zwischen Denkvorg\xE4ngen des Chatbots +chatbot_delay_help Zeit zwischen dem Begin des Chatmodus und der ersten Aktion des Chatbots +chatbot_range_help Zeit in Sekunden, die der Chatbot vorausplant +chatbot_decay_help Rate, mit der die Qualit\xE4t des Chatbots mit der Zeit abnimmt + +#******************************************** +#******************************************** +# # Score rules configuration items # #******************************************** @@ -335,6 +350,7 @@ player_name_confitem_help Spielername player_user_confitem_help Golbale Spieler-ID auto_login_confitem_help Soll sich dieser Spieler automatisch am Server einloggen? +hide_identity_confitem_help Soll die Globale ID dieses Spielers versteckt werden? camcenter_help Zentriere die interne Kamera in Fahrtrichtung start_cam_help Lieblingskameramodus start_fov_help Anf\xE4nglicher Sichtwinkel @@ -433,6 +449,8 @@ lag_offset_server_help Auf dem Server w\xE4hlbar: Zusatzkompensation f\xFCr Lag. F\xFCr sehr schlechte Verbindungen. lag_offset_legacy_help Auf dem Server w\xE4hlbar: Zusatzkompensation f\xFCr Lag f\xFCr Clients, die den Lag-Kredit-Automatismus noch nicht beherrschen. F\xFCr sehr schlechte Verbindungen. +lag_threshold_help Lag in Sekunden, der bei jedem Event nicht korrigiert wird. + #******************************************** #******************************************** # @@ -716,8 +734,8 @@ zone_alpha_toggle_help Dieser wert wird mit ALPHA_BLEND geXORed, um den Rendermodus der Zonen zu bestimmen zone_segments_help Mit wievelen Segmenten Zonen dargestellt werden. Default: 11 zone_seg_length_help Der Anteil jedes Zonensegents, der tats\xE4chlich dargestellt wird. Default: .5 -zone_bottom Unterer Rand der Zonen. Default: 0.0 -zone_height H\xF6he der Zonen: Default: 5.0 +zone_bottom_help Unterer Rand der Zonen. Default: 0.0 +zone_height_help H\xF6he der Zonen: Default: 5.0 smooth_shading_help Aktiviert "Rundes Licht" text_out_help Aktiviert Textausgabe console_columns_help Anzahl der Spalten der Textausgabe @@ -755,7 +773,7 @@ ladderlog_write_round_winner_help Schreibt in ladderlog.txt: ROUND_WINNER <Gewinner> ladderlog_write_sacrifice_help Schreibt in ladderlog.txt: SACRIFICE <Spieler, der das Loch benutzt hat> <Spieler, der das Loch gemacht hat> <Spieler, dessen Wand durchl\xF6chert wurde> ladderlog_write_wait_for_external_script_help Schreibt in ladderlog.txt: WAIT_FOR_EXTERNAL_SCRIPT (beachte ebenfalls: WAIT_FOR_EXTERNAL_SCRIPT und WAIT_FOR_EXTERNAL_SCRIPT_TIMEOUT) -ladderlog_game_time_interval Wenn dies auf einen positiven Wert gesetz wird, so wird alle n Sekunden eine Statusmeldung ins Ladder-Log geschrieben. +ladderlog_game_time_interval_help Wenn dies auf einen positiven Wert gesetz wird, so wird alle n Sekunden eine Statusmeldung ins Ladder-Log geschrieben. chat_log_help Schreibt maschinenlesbares Chatlog in var/chatlog.txt show_fps_help Aktiviert Performance-Anzeige floor_mirror_help Spiegelung des Bodens @@ -773,6 +791,7 @@ lag_o_meter_use_old_help Soll das alte, nicht wirklich korrekte Lag-O-Meter angezeigt werden? axes_indicator_help Sollen Richtungshinweise gezeigt werden? predict_objects_help Vorhersage der Vehikelbewegungen im Netzwerkspiel +predict_walls_help Vorhersage der Vehikelw\xE4nde. N\xFCtzlich, um die gef\xFCrchteten Instakills etwas einzud\xE4mmen. textures_hi_help Verwende 32-Bit-Texturen sparks_help L\xE4sst die Funken fliegen explosion_help Schaltet Explosionen ein @@ -890,6 +909,7 @@ teams_help Gibt eine Liste aller Teams mit einer rudiment\xE4ren Darstellung der Formation aus. Analog zum Chat-Kommando /teams. kill_help T\xF6tet den angegebenen Spieler (als Warnung vor einem Rausschmiss) silence_help Verbietet einem bestimmten Spieler, \xF6ffentlich zu Reden +unsilence_help Gegenteil von SILENCE suspend_help Suspendiert einen Spieler f\xFCr die n\xE4chsten N Runden (Defaultwert f\xFCr N ist SUSPEND_DEFAULT_ROUNDS) unsuspend_help Hebt eine Suspendierung auf. suspend_default_rounds_help Wieviele Runden soll eine Suspendierung normalerweise dauern? @@ -901,10 +921,11 @@ kick_to_help Wirft den angegebenen Spieler vom Server, und, falls m\xF6glich, leitet ihn auf einen anderen Server weiter. move_to_help Wirft den angegebenen Spieler vom Server, und, falls m\xF6glich, leitet ihn auf einen anderen Server weiter. Hat keine sch\xE4dlichen Nebenwirkungen. default_kick_to_reason_help Standardgrund f\xFCr ein KICK_TO/MOVE_TO-Kommando. -default_kick_to_server Standard-IP bzw. Name des Servers, auf den per KICK_TO oder MOVE_TO weitergeleitet wird. -default_kick_to_port Standard-Port des Servers, auf den per KICK_TO oder MOVE_TO weitergeleitet wird. -vote_kick_to_server IP bzw. Name des Servers, auf den per Abstimmungs-Rausschmiss weitergeleitet wird. -vote_kick_to_port Port des Servers, auf den per Abstimmungs-Rausschmiss weitergeleitet wird. +default_kick_to_server_help Standard-IP bzw. Name des Servers, auf den per KICK_TO oder MOVE_TO weitergeleitet wird. +default_kick_to_port_help Standard-Port des Servers, auf den per KICK_TO oder MOVE_TO weitergeleitet wird. +vote_kick_to_server_help IP bzw. Name des Servers, auf den per Abstimmungs-Rausschmiss weitergeleitet wird. +vote_kick_to_port_help Port des Servers, auf den per Abstimmungs-Rausschmiss weitergeleitet wird. +vote_kick_reason_help Standartgrund, der Spielern f\xFCr einen Abstimmungs-Rausschmiss gegeben wird. ban_help Wirft den angegebenen Spieler vom Server und verbannt ihn f\xFCr eine variable Zeit in Minuten. ban_ip_help Verbannt spieler von der angegebenen IP-Adresse f\xFCr die angegebene Zeit in Minuten vom Server. @@ -1519,6 +1540,7 @@ friends_menu_help Trage hier deine Freude ein. friends_enable Meine Freude friends_enable_help Schaltet den Freunde-Filter an oder aus. +enable_friends_help Schaltet den Freunde-Filter an oder aus. friend_word Freund friend_help Server mit diesem Spieler werden angezeigt, wenn der Freunde-Filter aktiv ist. @@ -2322,6 +2344,12 @@ player_noshuffle Dein Positions\xE4nderungswunsch hat keinen Effekt.\n player_shuffle_error /shuffle erwartet eine Zahl als Argument; mit explizitem Vorzeichen (+/-) wird die Position um die angegebene Zahl an Pl\xE4tzen ver\xE4ndert, ohne Vorzeichen geht es and die angegebene absolute Position.\n +player_message_help Schickt eine Nachricht an einen Spieler. +player_message_usage Verwendung: PLAYER_MESSAGE <ID oder Name> "<Nachricht>"\n +kick_usage Verwendung: KICK <ID oder Name> <Grund>\n +ban_usage Verwendung: BAN <ID oder Name> <Zeit in Minuten(default: 60)> <Grund>\n +kickmove_usage Verwendung: \1 <ID oder Name> <IP des Zielservers>:<Port des Zielservers>\n + add_help_topic_help F\xFCgt ein neues Hilfsthema f\xFCr /help hinzu. Verwendung: ADD_HELP_TOPIC <thema> <kurzbescheibung> <voller text> add_help_topic_usage Verwendung: ADD_HELP_TOPIC <thema> <kurzbescheibung> <voller text>\n add_help_topic_success Hilfsthema "\1" hinzugef\xFCgt.\n @@ -2343,6 +2371,35 @@ help_commands_chat_text 0x88ff88/me <Nachricht>0xffff88: Simuliert eine Handlung, wie in "/me ist ein Depp.", wird als "* <dein Dame > ist ein Depp" ausgegeben.\n0x88ff88/msg <Teil eines Namens> <Nachricht>0xffff88: Schickt eine private Nachricht, die nur der angegebene Spieler lesen kann.\n0x88ff88/team <Nachricht>0xffff88: Schickt eine Nachricht an deine Teammitglieder, oder an alle Zuschauer, falls du gerade nicht spielst help_commands_team_shortdesc Kommandos f\xFCr Team-Management +help_commands_team_text 0x88ff88/teamshuffle0xffff88: Bewegt dich in der Teamformation nach aussen\n0x88ff88/teamshuffle <Position>0xffff88: Bewegt tich in der Teamformation an eine bestimmte position\n0x88ff88/teamshuffle [+|-]<Offset>0xffff88: Bewegt dich in der Teamformation eine gewisse Zahl von Pl\xE4tzen nach aussen/innen.\n0x88ff88/teamleave0xffff88: Verl\xE4sst das aktuelle team. Nicht \xFCberall m\xF6glich.\n0x88ff88/teams0xffff88: Gibt eine Liste der aktuellen Teams und ihrer Formationen aus.\n0x88ff88/myteam0xffff88: Gibt die Formation des eigenen Teams aus + +help_commands_pp_shortdesc Polizeikommandos +help_commands_pp_text 0x88ff88/players [<Suchmuster>]0xffff88: Gibt dir eine Liste aller Spieler und Zusatzinfos. Das optionale Suchmuster schr\xE4nkt die Liste auf die Spieler ein, deren Name das Suchmuster enth\xE4lt.\n0x88ff88/admins [<Zugriffslevel> [<Zugriffslevel>]]0xffff88: Gibt dir eine Liste aller Administratoren. Wenn nur das erste Argument gegeben wird, werden nur Administratoren auf genau diesem Level gelistet. Mit beiden Argumenten werden alle Administratoren mit Zugriffslevel in diesem Bereich gelistet.\n0x88ff88/vote kick|suspend <Spieler>0xffff88: Regt eine Abstimmung zum Rauswurf oder zur Suspendierung eines Spielers an. + +help_commands_auth_shortdesc Authentifizierungskommandos +help_commands_auth_text 0x88ff88/login [<Benutzer>]@<Meldeamt>0xffff88: Authentfiziert dich \xFCber das angegebene Meldeamt. Mit einem Account auf http://forums.armagetronad.net/ ist 'forums' dein Meldeamt.\n0x88ff88/logout0xffff88: Hebt die Authentifizierung auf.\n0x88ff88/vote include <Datei>0xffff88: Regt eine Abstimmung zum Einbinden einer Konfigurationsdatei an.\n0x88ff88/vote command <Kommando>0xffff88: Regt eine Abstimmung zum ausf\xFChren eines Kommandos an.\n0x88ff88/admin <Kommando>0xffff88: F\xFChrt ein Kommando aus, falls dein Zugriffslevel hoch genug ist.\n0x88ff88/op <Spieler> [+|-]<Zugriffslevel>0xffff88: Gibt einem anderen Spieler einen h\xF6heren oder niedrigeren Zugriffslevel; standardm\xE4ssig wird der Level eins under deinem Level genommen, was auch der maximale Level ist.\n0x88ff88/deop <Spieler>0xffff88: Kehrt /op um. +help_commands_auth_levels_shortdesc Liste aller Zugriffslevel +help_commands_auth_levels_text 0x88ff880 (Besitzer)0xffff88: Der Serverbesitzer. Konsolenkommandos laufen mit diesen Rechten.\n0x88ff881 (Administrator)0xffff88: Ein Serveradministrator. Kann fast alles, was auch der Besitzer kann.\n0x88ff882 (Moderator)0xffff88: Ein Moderator. Kann normalerweise nur Spielermanagement-Kommandos ausf\xFChren.\n0x88ff887 (Team-Anf\xFChrer)0xffff88: Anf\xFChrer eines Teams. Hat normalerweise keine Sonderrechte, kann auf Turnierservern aber f\xFCr Teammanagement verantwortlich gemacht werden.\n0x88ff888 (Teammitglied)0xffff88: Mitglied eines Teams. Locale Team-Accounts begommen diesen Zugriffslevel.\n0x88ff8812 (Localer Benutzer)0xffff88: Spieler mit einem lokalen Account auf diesem Server bekommen diesen Level.\n0x88ff8815 (Frember)0xffff88: Spieler mit Accounts von Melde\xE4mtern bekommen diesen Level.\n0x88ff8816 (Missbilligt)0xffff88: In Ungnade gefallene Spieler.\n0x88ff8817 (Ausgesto\xDFen)0xffff88: Genauso, nur noch schlimmer :)\n0x88ff8819 (Eingeloggt)0xffff88: Minimaler Level f\xFCr authentifizierte Spieler.\n0x88ff8820 (Programm)0xffff88: Nicht eingeloggter Spieler. + +help_commands_ra_shortdesc Administrationskommandos +help_commands_ra_text 0x88ff88/login <Passwort>0xffff88: Logt dich als Serveradministrator mit dem Server-Passwort ein\n0x88ff88/logout0xffff88: Gegenteil von /login.\n0x88ff88/admin <Kommando>0xffff88: f\xFChrt das angegebene Kommando aus + +help_commands_misc_shortdesc Verschiedenes +help_commands_misc_text 0x88ff88/help0xffff88: Hast schon rausgefunden, wozu das gut ist :-)\n0x88ff88/teach <Spieler> <Thema>0xffff88: Wie /help, nur dass die Ausgabe an einen anderen Spieler weitergeleitet wird.\n0x88ff88/rtfm0xffff88: Anderer Name f\xFCr /teach\n0x88ff88/command <Kommando>0xffff88: F\xFCrt das angegebene Kommando auf dem eigenen Client aus. + +help_commands_tourney_shortdesc Turnierkommandos +help_commands_tourney_text 0x88ff88/lock0xffff88: Sperrt das aktuelle Team. Niemand kann mehr einfach so beitreten. Das geht erst nach\n0x88ff88/invite <Spieler>0xffff88: Erlaubt dem angegebenen Spieler, deinem Team beizutreten. Der Spieler kann ab dann auch /team-Chatnachrichten lesen und das Team frei verlassen und wieder betreten, bis /uninvite aufgerufen wird.\n0x88ff88/uninvite <Spieler>0xffff88: Hebt /invite auf. Die Einladung wird r\xFCckg\xE4ngig gemacht, und falls der Spieler noch im Team ist, wird er rausgeworfen.\n0x88ff88/unlock0xffff88: Hebt /lock auf und erlaubt wieder jedem, dem Team frei beizutreten. + +invite_no_team \1 funktionniert nur, wenn du in einem Team bist.\n +invite_team_locked \1 gesperrt, ein Team-Anf\xFChrer oder jemand mit entsprechenden Rechten muss dich erst mit /invite einladen.\n +invite_team_unlocked \1 entsperrt, man darf wieder beitreten.\n +unlock_all_teams_help Entsperrt alle Teams. +invite_team_can_join \10xRESETT darf nun \2 beitreten.\n +invite_team_invite \10xRESETT wurde in \2 eingeladen.\n +invite_team_kick \10xRESETT wurde aus \2 geschmissen.\n +invite_team_uninvite \10xRESETT wurde von \2 ausgeladen.\n +invite_team_locked_list (gesperrt) + msg_toomanymatches 0xff0000Zu viele Treffer bei Suche nach \1. Bitte etwas genauer.\n msg_nomatch 0xff0000Keine Treffer bein Suche nach \1.\n @@ -2434,6 +2491,7 @@ network_login_denial Verbindungsabbruch best\xE4tigt...\n network_server_login Empfange Verbindungsaufbau von \1.\n +network_unknown_version unbekannt network_server_login_success Neuer Benutzer: \1\n @@ -2508,6 +2566,9 @@ vote_submitted Vorschlag "\2" wurde von \1 eingebracht.\n vote_vote_for \1 hat f\xFCr Vorschlag "\2" gestimmt.\n vote_vote_against \1 hat gegen Vorschlag "\2" gestimmt.\n +vote_unknown_command Unbekanntes /vote-Kommando \1, zur Verf\xFCgung stehen: \2\n +vote_kick_local Lokale Spieler und Computergegner wie \1 lassen sich nicht rauswerfen.\n + #******************************************** #******************************************** # @@ -2546,6 +2607,7 @@ resource_not_cached Datei \1 befindet sich nicht im lokalen Speicher. Bitte etwas Geduld, sie wird heruntergeladen...\n resource_downloading Lade \1 herunter ...\n +resource_fetcherror_noconnect FEHLER: Der host von URI \1 ist nicht erreichbar. Das kann ein DNS Namensaufl\xF6sungsfehler sein. Falls es sich um das Hauptlager f\xFCr Resourcen (http://resource.armagetronad.net/resource/) handelt, melde dies bitte auf http://forums.armagetronad.net/.\n resource_fetcherror_404 FEHLER 404 : Datei nicht gefunden.\n resource_fetcherror FEHLER \1 != 200.\n resource_no_filename FEHLER: Leerer Dateiname.\n @@ -2576,6 +2638,7 @@ #******************************************** # printed on loading a map +map_file_loading Lade Karte \1 ...\n # title of map error message map_file_load_failure_title Fehler mit Arena @@ -2593,6 +2656,8 @@ resource_file_wrong_place_title Datei am falschen Ort resource_file_wrong_place Die Datei, die von "\1" geladen wurde, sollte bei "\2" liegen. Korrekturm\xF6glichkeiten:\na) Wenn Du nicht der Autor der Datei bist, solltest Du sie dahin verschieben, wo sie sein will.\nb) Wenn du der Autor bist und die Datei bleiben soll, wo sie ist, kannst Du auch den <Resource> tag in der Datei anpassen. Wie genau, sagt die Dokumentation. +map_file_reverting Reaktiviere letzte als funktionnierend bekannte Karte \1.\n + #******************************************** #******************************************** # @@ -2640,6 +2705,9 @@ config_value_changed \1 wurde von \2 auf \3 ver\xE4ndert.\n config_error_read Eingabefehler beim Lesen von \1: Ung\xFCltiges Format.\n config_message_info \1 steht momentan auf \2.\n +config_sighup SIGHUP erhalten, Konfigurationsdateien werden neu gelesen.\n +config_abort Laden bon Konfigurationsdatei/strom abgebrochen.\n + nconfig_errror_protected Nix da. Nur der Server darf \1 \xE4ndern.\n nconfig_error_unknown Konfigurations\xE4nderung f\xFCr die unbekannte Variable \1 erhalten.\n\n\n\nWAHRSCHEINLICH SOLLTE EINE NEUE VERSION VON ARMAGETRON INSTALLIERT WERDEN!!!!\n nconfig_error_nonet Konfigurations\xE4nderung \xFCber das Netwzerk f\xFCr die Variable \1 erhalten, die jedoch keinen Netzwerksupport hat.\n\n\n\nWAHRSCHEINLICH SOLLTE EINE NEUE VERSION VON ARMAGETRON INSTALLIERT WERDEN!!!!\n @@ -2658,6 +2726,26 @@ config_accesslevel_19 Eingeloggt config_accesslevel_20 Programm +access_level_help \xC4ndert den Zugriffslevel einer Einstellung, um sie z.B. Benutzern mit niedrigeren Rechten zug\xE4nglich zu machen. +access_level_usage Verwendung: ACCESS_LEVEL <Kommando> <minimaler n\xF6tiger Zugriffslevel (numerisch)>\n +access_level_change Zugriffslevel von Kommando \1 auf "\2" ge\xE4ndert.\n +access_level_error Erforderlicher Zugriffslevel von Kommando \1 ist "\2", du hast aber nur "\3".\n + +casacl_help Erh\xF6ht f\xFCr den Rest der Datei, in der das Kommando auftaucht, den Zugriffslevel. +casacl_usage Verwendung: CASACL <erforderlicher Zugriffslevel> <erh\xF6hter Zugriffslevel nach Ausf\xFCrhung> +casacl_not_allowed CASACL ist in diesem Zusammenhang nicht erlaubt.\n + +abort_loading_name Abbruch +abort_loading_description Aktueller Ladeprozess wurde vom Kommando \1 abgebrochen. + +user_level_help \xC4ndert den Zugriffslevel eines Benutzers. +user_level_usage Verwendung: USER_LEVEL <Voller, authentifizierter Benutzername> <Zugriffslevel (numerisch)>\n +user_level_change Zugriffslevel von \1 auf "\2" ge\xE4ndert.\n + +authority_level_help \xC4ndert den Zugriffslevel aller Benutzer von einem Meldeamt. +authority_level_usage Verwendung: AUTHORITY_LEVEL <Meldeamt> <Zugriffslevel (numerisch)>\n +authority_level_change Zugriffslevel von Benutzern von Meldeamt \1 auf "\2" ge\xE4ndert.\n + #************************************* #************************************* # @@ -2690,7 +2778,12 @@ password_help Passwort-Einstellung +login_request_redundant Bereits eingeloggt.\n login_request_failed Login fehlgeschlagen. Neuer Versuch! +login_request_failed_dup Zwei Logins von verschiedenen Spielern \xFCber denselben Account sind nicht erlaubt.\n +login_not_supported Der Server unterst\xFCtzt die gew\xFCnschte Authentifizierung leider nicht.\n +login_request Einloggen bei Meldeamt \1 +login_request_local Einloggen mit lokalem Account login_request_namechange Neues Login nach Namens\xE4nderung erforderlich. login_request_master Der Master-Server erfordert ein Login. @@ -2704,9 +2797,136 @@ hud_rubber Rubber # access level messages +access_level_hide_of_help Minimaler Zugriffslevel, um eigene Identit\xE4t vor anderen zu verstecken. +access_level_hide_to_help Minimaler Zugriffslevel, um alle Identit\xE4ten zu sehen. +access_level_team_help Minimaler Zugriffslevel f\xFCr die Team-Management-Kommandos /lock, /unlock, /invite und /uninvite. +access_level_op_help Minimaler Zugriffslevel f\xFCr die /op und /deop Hilfsadministrator-Rekrutierungs-Kommandos. +access_level_op_max_help Maximaler Zugriffslevel, den man mit /op erhalten kann. +access_level_admin_help Minimaler Zugriffslevel f\xFCr das /admin-Kommando. +access_level_rtfm_help Minimaler Zugriffslevel f\xFCr /teach und /rtfm. +access_level_chat_help Minimaler Zugriffslevel, um Reden zu d\xFCrfen. +access_level_ips_help Minimaler Zugriffslevel, um IPs anderer Spieler in der Ausgabe von /players zu sehen. +access_level_nver_help Minimaler Zugriffslevel, um die Netzwerkversionen von anderen Spielern in /players zu sehen. +access_level_spy_console_help Minimaler Zugriffslevel, um die Konsoleneingabe anderer Administratoren zu sehen. +access_level_spy_team_help Minimaler Zugriffslevel, um als Zuschauer /team-Nachrichten lesen zu k\xF6nnen. +access_level_spy_msg_help Minimaler Zugriffslevel, um private Nachrichten anderer Spieler (/msg) lesen zu k\xF6nnen. +access_level_play_help Minimaler Zugriffslevel, um Spielen zu d\xFCrfen +access_level_shuffle_up_help Minimaler Zugriffslevel, um sich via /shuffle nach innen bewegen zu d\xFCrfen +access_level_play_sliding_help Variabler minimaler Zugriffslevel zum Spielen. Wenn genug Spieler mit Zugriffslevel ACCESS_LEVEL_PLAY oder h\xF6her online sind, dann wird deren Zugriffslevel der minimale Level zum Spielen. Allerdings wird er niemals h\xF6her als ACCESS_LEVEL_PLAY_SLIDING. +access_level_play_sliders_help Der Zugriffslevel, der zum Spielen n\xF6tig ist, wird nur nach oben verschoben, wenn mindestens so viele Spieler mit dem h\xF6heren Level noch spielen k\xF6nnen. +access_level_play_changed Zum Spielen ben\xF6tigter Zugriffslevel von \1 auf \2 verschoben.\n +access_level_vote_suspend_help Minimaler Zugriffslevel, um Suspendierungsabstimmungen starten zu d\xFCrfen. +access_level_vote_kick_help Minimaler Zugriffslevel, um Rauschmissabstimmungen starten zu d\xFCrfen. +access_level_vote_include_help Minimaler Zugriffslevel, um Konfigurationseinbindungsabstimmungen starten zu d\xFCrfen. +access_level_vote_include_execute_help Minimaler Zugriffslevel, auf dem erfolgreiche Konfigurationseinbindungsabstimmungen ausgef\xFChrt werden. +access_level_vote_command_help Minimaler Zugriffslevel, um Kommandoabstimmungen starten zu d\xFCrfen. +access_level_vote_command_execute_help Minimaler Zugriffslevel, auf dem erfolgreiche Kommandoabstimmungen ausgef\xFChrt werden. + +access_level_chat_timeout_help Zeit in Sekunden zwischen \xF6ffentlichen Nachrichten, dass jemand gerne etwas sagen w\xFCrde, aber nicht darf. Ein Wert von 0 schaltet die Nachrichten ab. +access_level_chat_request \10xRESETT w\xFCrde gerne Reden, aber darf nicht. W\xE4re jemand so nett, "/op \2" zu sagen?\n +access_level_chat_denied 0xff7f7fRede verweigert,0xffffff ungen\xFCgender Zugriffslevel.\n +access_level_op_denied 0xff7f7f\1 verweigert,0xffffff ungen\xFCgender Zugriffslevel.\n +access_level_op_overpowered 0xff7f7f\1 verweigert,0xffffff du brauchst einen h\xF6heren Zugriffslevel als dein Opfer.\n +access_level_op_self 0xff7f7f\1 verweigert,0xffffff du kannst dir das nicht selbst antun :).\n +access_level_op_denied_max 0xff7f7f\1 verweigert,0xffffff dein Opfer hat bereits maximalen Level.\n +access_level_op_denied_ai 0xff7f7f\1 verweigert,0xffffff dein Opfer ist ein Computergegner.\n +access_level_op_same \1: Das w\xE4re wirkungslos.\n +access_level_op_unclear \1: Spieler ist bereits eingeloggt, bitte einen Zugriffslevel spezifizieren.\n + +access_level_demote \1 wurde von \3 zum "\2" degradiert.\n +access_level_promote \1 wurde von \3 zum "\2" bef\xF6rdert.\n + +access_level_admin_denied 0xff7f7f/admin verweigert,0xffffff ungen\xFCgender Zugriffslevel.\n +access_level_shuffle_up_denied Erforderlicher Zugriffslevel zum Positionswechsel nach innen ist "\1", du bist nur "\2".\n +access_level_rtfm_denied Erforderlicher Zugriffslevel zum Belehren ist "\1", du bist nur "\2".\n +rtfm_denied Um andere zu belehren, ist es erforderlich, eingeloggt zu sein.\n + +access_level_list_admins_help Minimaler Zugriffslevel, um das /admins-Kommando benutzen zu d\xFCrfen. +access_level_list_admins_see_everyone_help Benutzer mit diesem oder besserem Zugriffslevel d\xFCrfen unabh\xE4ngig von ADMIN_LIST_MIN_ACCESS_LEVEL jeden Administrator sehen. + +intercept_commands_help Liste von Chat-Kommandos, die angenommen und in der Standardausgabe geloggt werden sollen. +intercept_unknown_commands_help Wenn dies 1 ist, so werden alle unbekannten Chat-Kommandos angenommen und geloggt. + +chat_command_unknown Unbekanntes Chat-Kommando "\1".\n +chat_command_accesslevel Dein Zugriffslevel reicht leider nicht aus, um "\1" auszuf\xFChren. Du bist \2, erforderlich w\xE4re \3.\n + +authority_blacklist_help Komma-unterteilte Liste von Melde\xE4mtern, die vom Server nicht anerkannt werden. +authority_whitelist_help Falls diese Komma-unterteilte Liste nicht leer ist, interpretiert sie der Server als einzigen zu akzeptierenden Melde\xE4mter. +trust_lan_help Wenn dies auf 1 gesetzt wird, nimmt der Server an, dass es in diesem LAN keine b\xF6sartigen Benutzer gibt. +hash_method_blacklist_help Liste nicht zugelassener Authentifizierungsmethoden. + +legacy_log_names_help Wenn dies auf 1 gesetzt wird, dann werden die Log-Namen von nicht eingeloggten Spielern genau so wie in fr\xFCheren Versionen ohne Authentifizierung generiert. Wenn dies auf 0 gesetzt ist, dann werden die Log-Namen von eingeloggten Spielern m\xF6glichts "sch\xF6n" gebildet. + +login_message_requested Spieler \1 bittet um Authentifizierung als "\2@\3".\n +login_message_delayed Dein Login-Prozess wird leider erst versp\xE4tet beendet werden k\xF6nnen, die Server-Konfiguration erlaubt nichts anderes. Wir bitten, diese unannehmlichkeit zu entschuldigen.\n +login_message_responded Passwortanfrage an Benutzer \1 geschickt, Bentzername "\2", Methode \3, Nachricht "\4".\n +login_message \3\1 wurde als \2 Authentifiziert.\n +login_message_byorder Anordnung von \1: +login_message_special \4\1 wurde als \2 auf Zugriffslevel "\3" eingeloggt.\n +logout_message \1 wurde als \2 ausgeloggt.\n +logout_message_deop \1 wurde als \2 auf Anordnung von \3 ausgeloggt.\n +login_failed_message 0xff7f7fLogin fehlgeschlagen,0xffffff Grund: \1\n + # various reasons for logins to fail +login_error_aborted Abgebrochen. +login_error_invalidurl_illegal_hostname Authentifizierungs-URL \1 ung\xFCltig, nicht erlaubte Zeichen im Rechnernamensteil (mur ASCII ist erlaubt, und auch da nur Buchstaben, Zahlen und wenige andere). +login_error_invalidurl_illegal_path Authentifizierungs-URL \1 ung\xFCltig, nicht erlaubte Zeichen im Dateipfad (mur ASCII ist erlaubt, und auch da nur Buchstaben, Zahlen, Punkt, Schr\xE4gstrich und wenige andere). +login_error_invalidurl_illegal_port Authentifizierungs-URL \1 ung\xFCltig, nicht erlaubte Zeichen im Port (mur Zahlen sind erlaubt). +login_error_invalidurl_defaultport Authentifizierungs-URL \1 ung\xFCltig, Standardport angegeben. Der ist \xFCberfl\xFCssig. +login_error_invalidurl_slash Authentifizierungs-URL \1 ung\xFCltig, doppelder Schr\xE4gstrich oder Schr\xE4gstrich am Ende. +login_error_invalidurl_rawip Authentifizierungs-URL \1 ung\xFCltig, enh\xE4lt nackte IP-Adresse. +login_error_invalidurl_notfound Authentifizierungs-URL \1 ung\xFCltig, wurde nicht gefunden. +login_error_noremote Authentifizierung via Globaler ID ist auf diesem Server nicht aktiviert. +login_error_blacklist Meldeamt \1 ist auf der schwarzen Liste dieses Servers. +login_error_whitelist Meldeamt \1 ist nicht auf der weissen Liste dieses Servers. +login_error_pharm Server-Adresse passt nicht, \1 (vom Client) != \2 (Serveraddresse). Pharming m\xF6glich. Wenn du dich gerade vom LAN mit deinem eigenen Server verbindest, kannst du "TRUST_LAN" aktivieren (nur wenn sich im LAN keine B\xF6sewichte verstecken, nat\xFCrlich), oder setze "SERVER_IP", um dem Server seine korrekte Adresse mitzuteilen. +login_error_pharm_cheap \xC4rger mit Server-Adresse. Der Client schickt eine unspeziefische Adresse. +login_error_methodmismatch Die lokale Methode zum Passworttest wurde zwischen dem Setzen des Passworts und jetzt ver\xE4ndert. In der Serverkonfiguration m\xFCssen alle zur Authentifizierungsmethode relevanten Einstellungen VOR den Passw\xF6rtern lokaler Accounts stehen. +login_error_nomethod Keine geeignete Authentifizierungsmethode gefunden. Der Client unterst\xFCtzt \1, der Server \2, und das Meldeamt \3. +login_error_nomethodlist Authentifizierungs-URL \1 gibt nicht die Liste der Authentifizierungsmethoden zur\xFCck. Statdessen erhalten: Fehlercode \2, Ihhalt "\3". +login_error_nomethodproperties Authentifizierungs-URL \1 gibt nicht die Liste der Einstellungen zur\xFCck. Statdessen erhalten: Fehlercode \2, Ihhalt "\3". +login_error_nouser Benutzer existiert nicht, Meldeamt sagt "\1". +login_error_password Falsches Passwort, Meldeamt sagt "\2". +login_error_unknown Unbekannter Fehlercode \1 erhalten, Inhalt "\2". +login_error_invalidclaim Meldeamt "\1" Versucht vergeblich, dich als "\2" auszugeben. +login_error_unexpected_answer Antwort "\2" vom Server erwartet, stattdessen \2 erhalten. +login_error_local_nouser Lokalen Benutzer \1 nicht gefunden. +login_error_local_password Passwort f\xFCr lokalen Benutzer \1 falsch. + +chatcommand_requires_player \1 ben\xF6tigt einen Benutzernamen als zus\xE4tzliches Argument.\n + +local_user_help F\xFCgt einen lokalen Benutzer als Name/Paswort-Paar hinzu. +local_user_syntax Verwendung: LOCAL_USER <Benutzername> <Password>\n + +local_team_help F\xFCgt einen lokalen Account f\xFCr ein ganzes Team hinzu (Team-Tags werden verglichen). +local_team_syntax Verwendung: LOCAL_TEAM <Team-Tag> <Password>\n + +user_remove_help Entfernt den lokalen Account eines Benutzers oder Teams. +password_remove_syntax Verwendung: USER_REMOVE <Benutzername/Team Tag>\n +md5_password_removed Benutzer/Team \1 entfernt.\n +md5_password_remove_notfound Benutzer/Team \1 nicht gefunden.\n + +reserve_screen_name_help Reserviert einen Spitznamen f\xFCr einen registrierten Benutzer +reserve_screen_namne_usage Verwendung: RESERVE_SCREEN_NAME <Spitzname (in Anf\xFCrungszeichen)> <Benutzername> +reserve_screen_name_change Der Spitzname "\1" ist f\xFCr \2 reserviert.\n + +user_alias_help Erlaubt es, Authentifizierungs-IDs umzubiegen: ein Spieler, der eigentlich als X authentifiziert ist, kann als Y erscheinen. +alias_usage Verwendung: USER_ALIAS <eigentlicher Benutzername> <Benutzername, wie er erscheinen soll> +alias_change Benutzer \1 wird als \2 erscheinen.\n + +ban_user_help Verbannt Spieler mit bestimmter Authentifizierungs-ID +ban_user_message Benutzer \1 wurde verbannt.\n +unban_user_help Macht BAN_USER r\xFCckg\xE4ngig. +unban_user_message Benutzer \1 ist nicht mehr verbannt.\n +ban_user_list_help Gibt die Liste der verbannten Authentifizierungs-IDs aus. + +md5_prefix_help Prefix, der bei lokalen Accounts zum Versch\xFCsseln des Passworts verwendet wird +md5_suffix_help Suffix, der bei lokalen Accounts zum Versch\xFCsseln des Passworts verwendet wird + +global_id_help Wenn dies auf 1 gesetzt wird, dann wird die Unterst\xFCtzung von Globalen IDs aktiviert. + # items that should not be translated # Room for lost settings in translation files: Modified: armagetronad/trunk/armagetronad/language/english_base.txt =================================================================== --- armagetronad/trunk/armagetronad/language/english_base.txt 2009-02-25 22:40:00 UTC (rev 9056) +++ armagetronad/trunk/armagetronad/language/english_base.txt 2009-02-26 11:47:45 UTC (rev 9057) @@ -133,6 +133,21 @@ #******************************************** #******************************************** # +# Chatbot settings +# +#******************************************** +#******************************************** + +chatbot_always_active_help if set to 1, the chatbot is active all of the time +chatbot_new_wall_blindness_help the chatbot won't see walls that were bult less than this many seconds ago +chatbot_min_timestep_help minimal time in seconds between chatbot thoughts +chatbot_delay_help time between entering chat and chatbot activation +chatbot_range_help time in seconds the bot is capable of planning ahead +chatbot_decay_help rate at which the quality of the chatbot decays over time + +#******************************************** +#******************************************** +# # Score rules configuration items # #******************************************** @@ -339,6 +354,7 @@ player_teamname_confitem_help Team name player_user_confitem_help Global player ID auto_login_confitem_help Should this player automatically request authentication? +hide_identity_confitem_help Should this player hide his ID? camcenter_help Center internal camera on driving direction start_cam_help Initial Camera start_fov_help Initial field of vision @@ -430,13 +446,15 @@ lag_credit_help Maximal seconds of total lag credit. lag_credit_single_help Maximal seconds of lag credit for a single lag credit event. -lag_credit_single_help Maximal multiple of the lag variance for a single lag credit event. +lag_credit_variance_help Maximal multiple of the lag variance for a single lag credit event. lag_sweet_spot_help Sweet spot, the fill ratio of lag credit the server tries to keep the client at. lag_credit_time_help Timescale lag credit is restored on. lag_offset_client_help Extra amount of lag compensation, determined by the client. lag_offset_server_help Extra amount of lag compensation, determined by the server. +lag_threshold_help Amount of lag not compensated for on each lag event. + #******************************************** #******************************************** # @@ -702,9 +720,9 @@ zone_alpha_toggle_help This is XORd with ALPHA_BLEND to determine the way to draw zones zone_segments_help How many segments the zone is formed with. Default is 11 zone_seg_length_help The rendered percentual of every segment. Default is .5 -zone_bottom Where to put the zone along the Z axis. Default is 0.0 -zone_height The zone segments' height. Default is 5.0 -smooth_shading_help Enable smooth shading +zone_bottom_help Where to put the zone along the Z axis. Default is 0.0 +zone_height_help The zone segments' height. Default is 5.0 +smooth_shading_help Enable smooth shading text_out_help Enable console text output console_columns_help Number of characters in each line of console output console_rows_help Number of lines of console output without user intervention @@ -741,7 +759,7 @@ ladderlog_write_round_winner_help Write to ladderlog: ROUND_WINNER <winner> ladderlog_write_sacrifice_help Write to ladderlog: SACRIFICE <player who used the hole> <player who created the hole> <player owning the wall the hole was made into> ladderlog_write_wait_for_external_script_help Write to ladderlog: WAIT_FOR_EXTERNAL_SCRIPT (see also: WAIT_FOR_EXTERNAL_SCRIPT and WAIT_FOR_EXTERNAL_SCRIPT_TIMEOUT) -ladderlog_game_time_interval If nonnegative, write a line with the current game time to the ladder log every n seconds. +ladderlog_game_time_interval_help If nonnegative, write a line with the current game time to the ladder log every n seconds. chat_log_help Write machine parsable chat messages to var/chatlog.txt show_fps_help Enable fps display floor_mirror_help Floor mirror mode @@ -759,6 +777,7 @@ lag_o_meter_use_old_help Should we use the old buggy Lag-O-Meter? This functionality will go away soon. axes_indicator_help Should the Axis Indicator be rendered? predict_objects_help Predict cycle movement in network play +predict_walls_help Predict cycle walls. Useful for avoiding instant kills textures_hi_help Use high colour textures sparks_help Draw sparks when going too close to a wall explosion_help Enable explosions? @@ -879,6 +898,7 @@ teams_help Get a list of all teams with a somewhat graphic representation of their formation. Same as saying /teams kill_help Kill a specific player (as warning before a kick) silence_help Silence a specific player so he can't use public chat any more (/msg and /team still work) +unsilence_help Reverts a SILENCE command suspend_help Suspend a player from playing for the following N rounds (default is set by SUSPEND_DEFAULT_ROUNDS) unsuspend_help Removes a player suspension. suspend_default_rounds_help Sets default round timeout for SUSPEND. @@ -890,10 +910,11 @@ kick_to_help Kicks the specified player from the server and, if the client supports it, redirects him to a different server. move_to_help Kicks the specified player from the server and, if the client supports it, redirects him to a different server. Does not imply an autoban penalty. default_kick_to_reason_help The reason given to a player kicked by KICK_TO or MOVE_TO if none is specified. -default_kick_to_server Default server IP/name a player is redirected to by KICK_TO and MOVE_TO. -default_kick_to_port Default server port a player is redirected to by KICK_TO and MOVE_TO. -vote_kick_to_server Server IP/name a player is redirected to by vote kicks. -vote_kick_to_port Default server port a player is redirected to by vote kicks. +default_kick_to_server_help Default server IP/name a player is redirected to by KICK_TO and MOVE_TO. +default_kick_to_port_help Default server port a player is redirected to by KICK_TO and MOVE_TO. +vote_kick_to_server_help Server IP/name a player is redirected to by vote kicks. +vote_kick_to_port_help Default server port a player is redirected to by vote kicks. +vote_kick_reason_help Default reason given to players when they're vote-kicked. ban_help Bans the specified player from the server (kicks him first) for a variable time in minutes. ban_ip_help Bans the spedified IP address from the server for a variable time. @@ -1543,7 +1564,8 @@ friends_menu Mates friends_menu_help Edit your mates. friends_enable Mates Enabled -friends_enable_help Turn on/off friends mates filtering. +friends_enable_help Turn on/off mates filtering. +enable_friends_help Turn on/off mates filtering. friend_word Mate friend_help If a server has this name on its players list, it will show when filtering is on. @@ -2388,6 +2410,12 @@ player_noshuffle Your shuffling wish has no effect.\n player_shuffle_error /shuffle expects a number as argument; an explicit sign (+/-) will change your position by the indicated number of steps, no sign will shuffle you to the given position.\n +player_message_help Sends a message to a specified player. +player_message_usage Usage: PLAYER_MESSAGE <user ID or name> "<Message>"\n +kick_usage Usage: KICK <user ID or name> <Reason>\n +ban_usage Usage: BAN <user ID or name> <time in minutes(defaults to 60)> <Reason>\n +kickmove_usage Usage: \1 <user ID or name> <server IP to kick to>:<server port to kick to> <Reason>\n + add_help_topic_help Add a new help topic to be used with /help. Usage: ADD_HELP_TOPIC <topic> <short description> <text> add_help_topic_usage Usage: ADD_HELP_TOPIC <topic> <short description> <text>\n add_help_topic_success Added help topic "\1".\n @@ -2409,7 +2437,7 @@ help_commands_chat_text 0x88ff88/me <message>0xffff88: Transmit an action, as in "/me is a noob."\n0x88ff88/msg <part of a nickname> <message>0xffff88: Send a private message that only a specific player can see\n0x88ff88/team <message>0xffff88: Send a message to your teammates, or to all spectators if you're not on a team help_commands_team_shortdesc Basic team management commands -help_commands_team_text 0x88ff88/teamshuffle0xffff88: Shuffle yourself to be at the outside of your team's wingmen formation\n0x88ff88/teamshuffle <position>0xffff88: Shuffle yourself to be at a specific position\n0x88ff88/teamshuffle [+|-]<offset>0xffff88: Shuffle yourself up/down by a certain number of ranks\n0x88ff88/teamleave0xffff88: Leave your current team. Only works on some servers\n0x88ff88/teams0xffff88: Get a list of all teams with a somewhat graphic representation of their formation +help_commands_team_text 0x88ff88/teamshuffle0xffff88: Shuffle yourself to be at the outside of your team's wingmen formation\n0x88ff88/teamshuffle <position>0xffff88: Shuffle yourself to be at a specific position\n0x88ff88/teamshuffle [+|-]<offset>0xffff88: Shuffle yourself up/down by a certain number of ranks\n0x88ff88/teamleave0xffff88: Leave your current team. Only works on some servers\n0x88ff88/teams0xffff88: Get a list of all teams with a somewhat graphic representation of their formation.\n0x88ff88/myteam0xffff88: Get the formation and memberlist of your current team help_commands_pp_shortdesc Player police commands help_commands_pp_text 0x88ff88/players [<search>]0xffff88: Get a list of all players, along with some other information. You can also match specific users with the search argument.\n0x88ff88/admins [<access level> [<access level>]]0xffff88: Gets the list of admins. If first parameter is specified, only admins who have this exact level will be shown. If both arguments are set, all the admins in that range of access levels will be listed.\n0x88ff88/vote kick|suspend <player>0xffff88: Start a poll to kick or suspend a player @@ -2775,7 +2803,7 @@ access_level_change Required access level of command \1 changed to "\2".\n access_level_error Required access level of command \1 is "\2", you only have "\3".\n -casacl_help For the duratioon of the rest of the configuration file thiss directive appears in, elevate the access level. +casacl_help For the duration of the rest of the configuration file thiss directive appears in, elevate the access level. casacl_usage Usage: CASACL <required access level> <elevated access level>\n casacl_not_allowed CASACL usage not allowed in this context.\n @@ -2889,6 +2917,9 @@ access_level_list_admins_help Access level required to be able to use the "/admins" command. access_level_list_admins_see_everyone_help Users with this access level or better will be able to list any configured admin, regardless of ADMIN_LIST_MIN_ACCESS_LEVEL. +intercept_commands_help List of chat commands to accept and log to stdout. +intercept_unknown_commands_help If 1, accept and log all unknown chat commands. + chat_command_unknown Unknown chat command "\1".\n chat_command_accesslevel Sorry, your access level is not high enough to use the "\1" command. You're \2, required would be \3.\n @@ -2897,6 +2928,8 @@ trust_lan_help If set to 1, the server assumes that your LAN is safe and that nobody can run a pharming server on it. hash_method_blacklist_help List of hash authentication methods to disable support for. +legacy_log_names_help If 1, the log names of unauthenticated players are kept like they were before authentication was implemented. If 0, log names are escaped so that authenticated player names look best. + login_message_requested User \1 requests authentication as "\2@\3".\n login_message_delayed Your login process will be delayed because the server configuration makes it impossible to be processed immedeately in the background. We're sorry for the inconvenience.\n login_message_responded Password request sent to user \1, username "\2", method \3, message "\4".\n @@ -2942,11 +2975,8 @@ local_team_help Adds a local account for an entire team (team tags are compared). local_team_syntax Usage: LOCAL_TEAM <team tag> <password>\n -md5_password_teamleader_help Adds an account over the md5-hash based login system for a team leader. Team leaders can pick up players into the game. -md5_password_teamleader_syntax Usage: MD5_PASSWORD_TEAMLEADER <user name> <password>\n - -md5_user_remove_help Removes an password account for a user or team. -md5_password_remove_syntax Usage: USER_REMOVE <user name/team tag>\n +user_remove_help Removes an password account for a user or team. +password_remove_syntax Usage: USER_REMOVE <user name/team tag>\n md5_password_removed User name/team tag \1 removed.\n md5_password_remove_notfound User name/team tag \1 to remove not found.\n Modified: armagetronad/trunk/armagetronad/language/english_base_notranslate.txt =================================================================== --- armagetronad/trunk/armagetronad/language/english_base_notranslate.txt 2009-02-25 22:40:00 UTC (rev 9056) +++ armagetronad/trunk/armagetronad/language/english_base_notranslate.txt 2009-02-26 11:47:45 UTC (rev 9057) @@ -60,6 +60,8 @@ font_min_total_help UNDOCUMENTED font_big_threshold_width_help UNDOCUMENTED font_big_threshold_height_help UNDOCUMENTED +font_small_threshold_width_help Minimal pixel size of small font +font_small_threshold_height_help Minimal pixel size of small font camera_smart_distance_help UNDOCUMENTED camera_smart_height_help UNDOCUMENTED @@ -106,8 +108,9 @@ fortress_conquest_decay_rate_help Rate a fortress zone "recovers" from being conquered fortress_conquest_rate_help Rate a fortress zone gets conquered with for each enemy in it fortress_defend_rate_help Rate a fortress zone "recovers" for each defending player +fortress_collapse_speed_help Speed a fortress zone collapses with +fortress_conquest_timeout_help time without enemy contact that makes a fortress zone collapse harmlessly - # should not actually be documented, rather hidden bookmark_0_address_help Server adress of the 1st server bookmark bookmark_0_name_help Name of the 1st server bookmark @@ -143,6 +146,69 @@ bookmark_9_name_help Name of the 10th server bookmark bookmark_9_port_help Server port of the 10th server bookmark +bookmark__master0_address_help Address of the first subculture master +bookmark__master0_name_help Name of the first subculture +bookmark__master0_port_help Port of the first subculture master +bookmark__master1_address_help Address of the second subculture master +bookmark__master1_name_help Name of the second subculture +bookmark__master1_port_help Port of the second subculture master +bookmark__master2_address_help Address of the 3rd subculture master +bookmark__master2_name_help Name of the 3rd subculture +bookmark__master2_port_help Port of the 3rd subculture master +bookmark__master3_address_help Address of the 4th subculture master +bookmark__master3_name_help Name of the 4th subculture +bookmark__master3_port_help Port of the 4th subculture master +bookmark__master4_address_help Address of the 5th subculture master +bookmark__master4_name_help Name of the 5th subculture +bookmark__master4_port_help Port of the 5th subculture master +bookmark__master5_address_help Address of the 6th subculture master +bookmark__master5_name_help Name of the 6th subculture +bookmark__master5_port_help Port of the 6th subculture master +bookmark__master6_address_help Address of the 7th subculture master +bookmark__master6_name_help Name of the 7th subculture +bookmark__master6_port_help Port of the 7th subculture master +bookmark__master7_address_help Address of the 8th subculture master +bookmark__master7_name_help Name of the 8th subculture +bookmark__master7_port_help Port of the 8th subculture master +bookmark__master8_address_help Address of the 9th subculture master +bookmark__master8_name_help Name of the 9th subculture +bookmark__master8_port_help Port of the 9th subculture master +bookmark__master9_address_help Address of the 10th subculture master +bookmark__master9_name_help Name of the 10th subculture +bookmark__master9_port_help Port of the 10th subculture master +# ???? +bookmark__master10_address_help Address of the 11th subculture master +bookmark__master10_name_help Name of the 11th subculture +bookmark__master10_port_help Port of the 11th subculture master + +friend_1_help A friend +friend_2_help A friend +friend_3_help A friend +friend_4_help A friend +friend_5_help A friend +friend_6_help A friend +friend_7_help A friend +friend_8_help A friend +friend_9_help A friend +friend_10_help A friend + +cycle_accel_tunnel_override_help Block out older clients if CYCLE_ACCEL_TUNNEL differs from its default? +cycle_boostfactor_enemy_override_help Block out older clients if CYCLE_BOOSTFACTOR_ENEMY differs from its default? +cycle_boostfactor_rim_override_help Block out older clients if CYCLE_BOOSTFACTOR_RIM differs from its default? +cycle_boostfactor_self_override_help Block out older clients if CYCLE_BOOSTFACTOR_SELF differs from its default? +cycle_boostfactor_team_override_help Block out older clients if CYCLE_BOOSTFACTOR_TEAM differs from its default? +cycle_boost_enemy_override_help Block out older clients if CYCLE_BOOST_ENEMY differs from its default? +cycle_boost_rim_override_help Block out older clients if CYCLE_BOOST_RIM differs from its default? +cycle_boost_self_override_help Block out older clients if CYCLE_BOOST_SELF differs from its default? +cycle_boost_team_override_help Block out older clients if CYCLE_BOOST_TEAM differs from its default? +cycle_delay_doublebind_bonus_override_help Block out older clients if CYCLE_DELAY_DOUBLEBIND_BONUS differs from its default? +cycle_rubber_mindistance_gap_override_help Block out older clients if CYCLE_RUBBER_MINDISTANCE_GAP differs from its default? +cycle_speed_max_override_help Block out older clients if CYCLE_SPEED_MAX differs from its default? +cycle_width_override_help Block out older clients if CYCLE_WIDTH differs from its default? +cycle_width_rubber_max_override_help Block out older clients if CYCLE_WIDTH_RUBBER_MAX differs from its default? +cycle_width_rubber_min_override_help Block out older clients if CYCLE_WIDTH_RUBBER_MIN differs from its default? +cycle_width_side_override_help Block out older clients if CYCLE_WIDTH_SIDE differs from its default? + vote_use_server_controlled_kick_override_help Block out older clients when VOTE_USE_SERVER_CONTROLLED_KICK differs from its default? spam_maxlen_override_help Block out older clients when SPAM_MAXLEN differs from its default? cycle_accel_enemy_override_help Block out older clients when CYCLE_ACCEL_ENEMY differs from its default? @@ -180,6 +246,8 @@ cycle_invulnerable_time_override_help UNDOCUMENTED cycle_wall_time_override_help UNDOCUMENTED +authority_no_check_help UNDOCUMENTED + # yet undefined access levels, reserved for future use (we only want them to pop up for # translators then) Modified: armagetronad/trunk/armagetronad/language/french.txt =================================================================== --- armagetronad/trunk/armagetronad/language/french.txt 2009-02-25 22:40:00 UTC (rev 9056) +++ armagetronad/trunk/armagetronad/language/french.txt 2009-02-26 11:47:45 UTC (rev 9057) @@ -18,8 +18,9 @@ #***************************************** first_use_help Est-ce la premiere fois que vous jouez a \g? -include_help Inclus ce fichier -new_team_allowed_help Est-ce possible de creer une nouvelle team? +include_help Inclus un fichier. +sinclude_help Inclus un fichier silencieusement, sans message d'erreur s'il n'est pas trouv\xE9. +new_team_allowed_help Est-ce possible de creer une nouvelle \xE9quipe? #******************************************** #******************************************** @@ -39,8 +40,7 @@ #******************************************** #******************************************** -#ORIGINAL TEXT: Time in seconds during which no two different keyboard events can trigger the same action -#doublebind_time_help UNTRANSLATED +doublebind_time_help Temps en secondes pendant lequel deux touches diff\xE9rentes peuvent effectuer la m\xEAme action. #******************************************** #******************************************** @@ -51,32 +51,48 @@ #******************************************** cycle_speed_help Vitesse basique de votre moto si vous roulez en ligne droite. -cycle_start_speed_help Vitesse initiale de votre moto +cycle_speed_min_help Vitesse minimum de votre moto, relativement \xE0 CYCLE_SPEED. +cycle_speed_max_help Vitesse maximum de votre moto, relativement \xE0 CYCLE_SPEED. +cycle_speed_decay_below_help Vitesse de retour \xE0 CYCLE_SPEED quand la vitesse est en dessous de ceci. +cycle_speed_decay_above_help Vitesse de retour \xE0 CYCLE_SPEED quand la vitesse est en dessous de ceci. +cycle_start_speed_help Vitesse initiale de votre moto. +cycle_sound_speed_help Facteur appliqu\xE9 \xE0 la vitesse currente pour obtenir la vitesse du son du moteur. + +cycle_accel_help Facteur d'acceleration des murs. +cycle_accel_self_help Multiplicateur de... [truncated message content] |