From 7b5c91a3da3fc41908aea8a31726253ddf8afdb5 Mon Sep 17 00:00:00 2001 From: ac-stef Date: Sat, 25 Nov 2017 19:43:23 +0100 Subject: [PATCH] temporary win10 hotfix changes Some changes to allow the current experimental branch to be used for a hotfix release for win10 users. The latest win10-update broke compatibility with SDL1.2 - and apparently MS is not going to fix it. This hotfix allows win10 users to use our experimental SDL2-based client. It is quite incompatible with the 1.2.0.2 release - but it's good enough to be played in pubs. Coopedit will not work and quite a few custom maps won't work properly. This is due to lots of changes in the map file format and does not mean, that those custom maps can not be played in future game releases - they just need to be reworked. See akimbo2 to check out the reworked maps, btw. The old official maps and most conservative custom maps should be fine. Due to some physics changes, players of the hotfix client will have some advantages and some disadvantages compared to the regular clients, so DO NOT USE THE HOTFIX CLIENT TO PLAY COMPETITIVELY. By default, if an incompatible map is loaded in multiplayer, the client will disconnect automatically. This can be disabled (disconnectonmaperror), but will probably get you marked as cheater, because on incompatible maps, model clipping may not work properly. Just stick to compatible maps... --- README.md | 4 ++++ assaultcube.bat | 2 +- config/autostart/checkaccount.cfg | 10 +++++++++- source/src/clients2c.cpp | 5 +++++ source/src/entity.h | 2 +- source/src/main.cpp | 2 +- source/src/worldio.cpp | 5 ++++- source/vcpp/buildEnv/ac.nsi | 6 +++--- source/vcpp/buildEnv/build_1_exportACdev.bat | 4 ++-- 9 files changed, 30 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ae703eba..0529718f 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,10 @@ connection. It's tiny too, weighing in at a lightweight about 50 MB package available for [Windows](https://github.com/assaultcube/AC/releases/download/v1.2.0.2/AssaultCube_v1.2.0.2.exe), [Mac](https://github.com/assaultcube/AC/releases/download/v1.2.0.2/AssaultCube_v1.2.0.2.dmg) and [Linux](https://github.com/assaultcube/AC/releases/download/v1.2.0.2/AssaultCube_v1.2.0.2.tar.bz2). On the correct settings, it can even run on old hardware (Pentium III and above). +**Important information for Windows 10 users:** +if you experience a mouse glitch (random camera movement), you can use the experimental [hotfix for AssaultCube 1.2.0.2 on Windows 10](https://github.com/assaultcube/AC/releases/download/v1.2.0.2/AssaultCube_v1.2.0.2_experimental_win10_hotfix_1.exe). +Note: the hotfix **SHOULD NOT** be used to competitive play and mapping - see [known issues](https://assault.cubers.net/docs/knownissues.html). + ## Features in a nutshell: * It's **FREE**. diff --git a/assaultcube.bat b/assaultcube.bat index 1bb850a8..7bcce679 100644 --- a/assaultcube.bat +++ b/assaultcube.bat @@ -1 +1 @@ -start bin_win32\ac_client.exe "--home=?MYDOCUMENTS?\My Games\AssaultCube\v1.2next" --init %1 %2 %3 %4 %5 +start bin_win32\ac_client.exe "--home=?MYDOCUMENTS?\My Games\AssaultCube\v1.2" --init %1 %2 %3 %4 %5 diff --git a/config/autostart/checkaccount.cfg b/config/autostart/checkaccount.cfg index 6c39634f..e0d85537 100644 --- a/config/autostart/checkaccount.cfg +++ b/config/autostart/checkaccount.cfg @@ -2,4 +2,12 @@ // * ask for password, if required // * offer to create new account, if none exists -sleep 1000 checkaccount 1 +//sleep 1000 checkaccount 1 +sleep 1000 [ +echo "\fs\f3Beware:\fr this is a hotfix release, intended to allow Win10 users to play despite Win10 being buggy." +echo " Although this hotfix can be played on regular 1.2.0.2 servers, it is not fully compatible." +echo " Coopedit will not work. Some maps will not work. Maps edited here will not work on old clients." +echo " There are slight changes in physics, so don't use this client to play competitively." +echo " Since this is based on the latest game development, you may notice other changes :)" +] 1 + diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index 821abc54..62e3d267 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -27,6 +27,10 @@ void neterr(const char *s) VARP(autogetmap, 0, 1, 1); // only if the client doesn't have that map VARP(autogetnewmaprevisions, 0, 1, 1); +VAR(disconnectonmaperror, 0, 1, 1); + +extern bool incompatiblemap; +extern void trydisconnect(); bool localwrongmap = false; int MA = 0, Hhits = 0; // flowtron: moved here @@ -42,6 +46,7 @@ bool changemapserv(char *name, int mode, int download, int revision) // f } else if(player1->state==CS_EDITING) { /*conoutf("SANITY drop from EDITING");*/ toggleedit(true); } // fix stuck-in-editmode bug bool loaded = load_world(name) >= 0; + if(disconnectonmaperror && incompatiblemap && multiplayer(NULL)) trydisconnect(); if(download > 0) { bool revmatch = hdr.maprevision == revision || revision == 0; diff --git a/source/src/entity.h b/source/src/entity.h index 45438574..5172c609 100644 --- a/source/src/entity.h +++ b/source/src/entity.h @@ -412,7 +412,7 @@ public: #define ROLLMOVMAX 20 #define ROLLMOVDEF 0 #define ROLLEFFMAX 30 -#define ROLLEFFDEF 10 +#define ROLLEFFDEF 0 class playerent : public dynent, public playerstate { diff --git a/source/src/main.cpp b/source/src/main.cpp index bdb2c9f8..4e94c947 100644 --- a/source/src/main.cpp +++ b/source/src/main.cpp @@ -790,7 +790,7 @@ static void checkmousemotion(int &dx, int &dy) int ignoremouse = 5, bootstrapentropy = 2; #define EVENTDEBUG(x) x //#define EVENTDEBUG(x) -EVENTDEBUG(VAR(debugevents, 0, 1, 2)); +EVENTDEBUG(VAR(debugevents, 0, 0, 2)); void checkinput() { diff --git a/source/src/worldio.cpp b/source/src/worldio.cpp index 47cf343b..75d09a0f 100644 --- a/source/src/worldio.cpp +++ b/source/src/worldio.cpp @@ -819,8 +819,11 @@ extern float Mh; static string lastloadedconfigfile; +bool incompatiblemap = false; + int load_world(char *mname) // still supports all map formats that have existed since the earliest cube betas! { + incompatiblemap = false; const int sizeof_header = sizeof(header), sizeof_baseheader = sizeof_header - sizeof(int) * 16; stopwatch watch; watch.start(); @@ -922,7 +925,7 @@ int load_world(char *mname) // still supports all map formats that have e e.attr##x = ov = e.attr##x * entscale[e.type][x - 1]; \ if(ov != e.attr##x) { conoutf("overflow during conversion of attr%d of entity #%d (%s): value %d can no longer be represented - pls fix manually before saving the map",\ x, i, entnames[e.type], oe.attr##x); e.attr##x = oe.attr##x; res |= LWW_ENTATTROVERFLOW; \ - defformatstring(desc)("%s: attr%d was %d, value can no longer be represented", entnames[e.type], x, oe.attr##x); addtodoentity(i, desc); } + defformatstring(desc)("%s: attr%d was %d, value can no longer be represented", entnames[e.type], x, oe.attr##x); addtodoentity(i, desc); incompatiblemap = true; } SCALEATTR(1); SCALEATTR(2); SCALEATTR(3); diff --git a/source/vcpp/buildEnv/ac.nsi b/source/vcpp/buildEnv/ac.nsi index 75138b5f..b3ea5f4a 100644 --- a/source/vcpp/buildEnv/ac.nsi +++ b/source/vcpp/buildEnv/ac.nsi @@ -52,9 +52,9 @@ SetCompressor /SOLID lzma !define CURPATH ".\" ; must include the installer graphics and the AC_NEWVERSIONDIR directory -!define AC_FULLVERSIONINT "1.2.0.2" +!define AC_FULLVERSIONINT "1.2.0.2_hotfix1" !define AC_FULLVERSION "v${AC_FULLVERSIONINT}" -!define AC_SHORTNAME "AssaultCube" +!define AC_SHORTNAME "AssaultCube ${AC_FULLVERSIONINT}" !define AC_FULLNAME "AssaultCube ${AC_FULLVERSION}" !define AC_URLPROTOCOL "assaultcube" !define AC_MAJORVERSIONINT 1 @@ -66,7 +66,7 @@ SetCompressor /SOLID lzma Name "${AC_SHORTNAME}" VAR StartMenuFolder !define AC_STARTMENUFOLDER "$SMPROGRAMS\$StartMenuFolder" -OutFile "AssaultCube_${AC_FULLVERSION}.exe" +OutFile "AssaultCube_v1.2.0.2_experimental_win10_hotfix_1.exe" InstallDir "$PROGRAMFILES\${AC_SHORTNAME}" InstallDirRegKey HKLM "Software\${AC_SHORTNAME}" "" RequestExecutionLevel admin ; require admin in Vista/7 diff --git a/source/vcpp/buildEnv/build_1_exportACdev.bat b/source/vcpp/buildEnv/build_1_exportACdev.bat index de7146ed..3b2fd6e9 100644 --- a/source/vcpp/buildEnv/build_1_exportACdev.bat +++ b/source/vcpp/buildEnv/build_1_exportACdev.bat @@ -13,7 +13,7 @@ del tmpFile rem get AC files from latest local release tag cd ..\..\..\ -git archive --format zip --output source\vcpp\buildEnv\%ACDIR%\%NEWACTAG%.zip %NEWACTAG% +git archive --format zip --output source\vcpp\buildEnv\%ACDIR%\%NEWACTAG%.zip experimental cd source\vcpp\buildEnv\%ACDIR% 7z x %NEWACTAG%.zip 7z x %NEWACTAG%.zip -o..\%ACDIRTESTING% @@ -21,6 +21,6 @@ del ..\%ACDIRTESTING%\assaultcube.bat del %NEWACTAG%.zip rem get documentation files from latest remote release tag -svn export --force https://github.com/assaultcube/assaultcube.github.io/tags/%NEWACTAG%/htdocs/docs/ docs +svn export --force https://github.com/assaultcube/assaultcube.github.io/trunk/htdocs/docs/ docs pause