Commit Graph

4105 Commits (0.7.0)

Author SHA1 Message Date
Koncord 23684489da [General] Fix clang-tidy warning
Converting integer literal to bool, use bool literal instead
6 years ago
Koncord 7639db02f3 [General] RW functions return true on success 6 years ago
Koncord 45c7c3a0b6 [General] Add integrity checks to PacketPreInit 6 years ago
Koncord d999cc0d55 [General] Add packetValid flag to packets 6 years ago
Koncord 695fb7d4a7 [General] Reorder RW(string) arguments
Change limit of default max string size to 64 KiB
6 years ago
Koncord d162f6fd3a [General] Explicitly use limitations of the master server 6 years ago
Koncord a48d5b48ef [General] Add maxSize parameter to RW(std::string)
Minor type changes
6 years ago
David Cernat bef53749ed [General] Replace BaseObject's hasMaster variable with isSummon
Additionally, add a GetObjectSummonState() script function to the server.
6 years ago
David Cernat 958b220835 [General] Send summon duration to server in ObjectSpawn packets 6 years ago
David Cernat 9102df7fde [General] Make WorldCollisionOverride also work with specific refIds
For now, this only makes it possible to enforce collision for specific refIds for placed objects.
6 years ago
David Cernat c7f10892a9 [General] Add vectorContains util for checking strings in vectors 6 years ago
David Cernat 7ffdb18bf9 [General] Implement ActorDeath packet, part 1
ActorDeath packets are sent for dead actors before their StatsDynamic packets. They contain the actor's deathReason in a manner similar to that of PlayerDeath packets.

A future commit will replace the deathReason with a variable named killer which will be an mwmp::Target.
6 years ago
David Cernat 914b79fcc9 [General] Make it possible to check which placed objects have containers 6 years ago
Andrei Kortunov 359e748c28 Initialize some missing fields in constructors 6 years ago
David Cernat d53bd05424 [General] Use slightly larger maximum imageData size in WorldMap packets 6 years ago
David Cernat 5bb2ba1e9e [General] Limit maximum imageData size in WorldMap packets 6 years ago
Bret Curtis 6655b7e512
Merge pull request #1740 from nikolaykasyanov/software-cursor-decompression
Decompress cursors using SDL software renderer on Mac or if OSG >= 3.5.8 or if OPENMW_DECOMPRESS_TEXTURES is set
6 years ago
Bret Curtis 3ebebdf3c1
Merge pull request #1751 from wareya/terrainbleeding
Fix #4452
6 years ago
Bret Curtis c1eb9042b3
Merge branch 'master' into terrainbleeding 6 years ago
Andrei Kortunov 5fd3ec1035 Implement unlockable locks with 'lock 0' console command 6 years ago
Nikolay Kasyanov 75d79e98b9 Force software decompression if OPENMW_DECOMPRESS_TEXTURES is set 6 years ago
Nikolay Kasyanov 359f87ab9f Change imageToSurface to return a unique_ptr to avoid manual surface cleanup 6 years ago
Miloslav Číž 2a23b53515 Merge branch 'drummyfish/openmw-toggleborders' 6 years ago
Miloslav Číž 477e1437d2 Resolve conflicts 6 years ago
Miloslav Číž 34f8eca7bd Fix indent 6 years ago
Miloslav Číž ab8de9fa14 Set node mask to cell borders 6 years ago
Miloslav Číž 414e6caafe Make tb work with distant terrain 6 years ago
Miloslav Číž f18d57429e Move cell border management to World 6 years ago
Miloslav Číž 1b8d500c07 Make tb command work again 6 years ago
Miloslav Číž 1fd5ad3e56 Use REAL_SIZE constant 6 years ago
Miloslav Číž d629c30fdb
Merge branch 'master' into screenshot360 6 years ago
Bret Curtis a747318c90
Merge branch 'master' into terrainbleeding 6 years ago
Marc Zinnschlag 48711bbdde Merged pull request #1592 6 years ago
Miloslav Číž c3d7ee5a9e Resolve merge conflicts 6 years ago
wareya 94f695cffc Fix #4452 and remove dead code 6 years ago
Miloslav Číž db8aaa74d6 Start cell border debug drawing 6 years ago
Nikolay Kasyanov 224b94c0ce Decompress cursors using SDL software renderer on Mac or if OSG >= 3.5.8 6 years ago
Marc Zinnschlag 565922f9ad naked expressions beginning with the member operator were allowed erroneously outside of the console (Fixes issue #2971) 6 years ago
Marc Zinnschlag 8d0f717e72 Merged pull request #1739 6 years ago
Marc Zinnschlag 90febde783 Merged pull request #1742 6 years ago
Marc Zinnschlag 816a1733dc Allow comma after Begin and End script instruction (Fixes #4451) 6 years ago
Andrei Kortunov acd3cba5fa Store previous items in the savegame 6 years ago
wareya 7344323b9e remove indentation from blank lines 6 years ago
wareya 8f45b0d53a remove unnecessary conditions 6 years ago
Andrei Kortunov fba0c155df Fix assertion fail related to NiLookAtController 6 years ago
Marc Zinnschlag 7d9de93fd3 Merged pull request #1477 6 years ago
Marc Zinnschlag 551a69f1b1 Merged pull request #1559 6 years ago
Marc Zinnschlag efb4abbb7f Merged pull request #1623 6 years ago
wareya 6277f5511c fix #3876 and #3993 6 years ago
Andrei Kortunov 3d0631cfcc Store last AI package in savegame 6 years ago
Andrei Kortunov 3a0ee78d2b AiTravel: store mHidden flag in savegame 6 years ago
Andrei Kortunov fed10e87aa Store integer actor ID in AI packages (bug #4036) 6 years ago
Andrei Kortunov 2fada94879 Improve MRK NiStringExtraData handling (bug #4419) 6 years ago
David Cernat 72862dc255 [General] Turn PlayerMap into WorldMap, now a Worldstate packet 6 years ago
David Cernat a28b27f5d9 Merge pull request #443 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
6 years ago
David Cernat 494edbe5cb [General] Add REPLY_TO_REQUEST container sub-action 6 years ago
David Cernat c24157f6f9 [General] Fix CMakeLists in components for BaseObject 6 years ago
David Cernat c20a0c72c5 Merge pull request #442 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
6 years ago
Marc Zinnschlag 13f7b53b1c Revert "Don't force DDS file usage (fixes #1392)"
This reverts commit 90f3ff2da4.
6 years ago
Bret Curtis 4a2b973052
Merge pull request #1726 from elsid/fix_catch_warnings
Fix warnings: catching polymorphic type by value
6 years ago
Capostrophic eecde340cf Make weapon health short unsigned (fixes #4435) 6 years ago
elsid dba79f4d4d
Fix warnings: catching polymorphic type by value
openmw/apps/openmw/mwworld/worldimp.cpp: In member function ‘virtual bool MWWorld::World::findExteriorPosition(const string&, ESM::Position&)’:
openmw/apps/openmw/mwworld/worldimp.cpp:2650:25: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=]
             catch (std::invalid_argument)
                         ^~~~~~~~~~~~~~~~
openmw/apps/openmw/mwworld/worldimp.cpp:2654:25: warning: catching polymorphic type ‘class std::out_of_range’ by value [-Wcatch-value=]
             catch (std::out_of_range)
                         ^~~~~~~~~~~~

openmw/components/widgets/numericeditbox.cpp: In member function ‘void Gui::NumericEditBox::onEditTextChange(MyGUI::EditBox*)’:
openmw/components/widgets/numericeditbox.cpp:41:21: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=]
         catch (std::invalid_argument)
                     ^~~~~~~~~~~~~~~~
openmw/components/widgets/numericeditbox.cpp:45:21: warning: catching polymorphic type ‘class std::out_of_range’ by value [-Wcatch-value=]
         catch (std::out_of_range)
                     ^~~~~~~~~~~~
6 years ago
David Cernat 669d4d3d7e
Merge pull request #440 from OpenMW/master
Add OpenMW commits up to 27 May 2018
6 years ago
David Cernat 3efe05a88e [General] Implement WorldCollisionOverride packet 6 years ago
Thunderforge c2fff61ccd Changing so that data changes happen only after the addon is checked 6 years ago
David Cernat 416ee77639 [General] Add placeholder for WorldCollisionOverride packet 6 years ago
David Cernat 49ea76aa9d [General] Add notes for InputDialogs in GUIBoxes packet 6 years ago
David Cernat 3b5fb9cd6b [General] Make it possible to set year via WorldTime 6 years ago
David Cernat 4acf93b7db [General] Make it possible to set days passed via WorldTime 6 years ago
David Cernat 74c2a0b311
Merge pull request #438 from OpenMW/master
Add OpenMW commits up to 24 May 2018
6 years ago
Andrei Kortunov afae398b5c Use utf8 lowercase function for journal index to avoid code duplication 6 years ago
Andrei Kortunov b5374029e5 Implement case-insensitive search in spell window 6 years ago
David Cernat 46744ee90f [General] Make WorldTime script functions more consistent with others 6 years ago
Marc Zinnschlag 810e4416f6 Merged pull request #1691 6 years ago
Marc Zinnschlag d92d754834 Merged pull request #1697 6 years ago
David Cernat 8d36d0d945 [General] Make it possible to change world's time scale via WorldTime 6 years ago
David Cernat f01c761cb1 [General] Use correct orderChannel for WorldTime packets 6 years ago
David Cernat 0be6de6607 [General] Turn RecordDynamic into a Worldstate packet 6 years ago
Thunderforge d58cce9c72 Adding WIP code to dynamically change the autocomplete fields 6 years ago
David Cernat da66face25 [General] Rename GameTime packet into WorldTime 6 years ago
David Cernat 296c69d788
Merge pull request #436 from OpenMW/master
Add OpenMW commits up to 22 May 2018
6 years ago
Andrei Kortunov 888c2d9a33 Render default land texture for Wilderness cells with distant terrain 6 years ago
David Cernat 5af1150ab2 [General] Turn GameTime into a Worldstate packet 6 years ago
David Cernat 43a944ddaf [General] Add and implement new Worldstate packet type 6 years ago
David Cernat 049d0d9ba7 [General] Fix remaining references to world packets/events 6 years ago
David Cernat 78234f9071 [General] Rename Event into ObjectList & WorldObject into BaseObject 6 years ago
David Cernat 6bf3a0be1e [General] Rename WorldPackets into ObjectPackets for clarity 6 years ago
David Cernat 5458e09c8a
Merge pull request #420 from OpenMW/master
Add OpenMW commits up to 11 May 2018
6 years ago
David Cernat 77389538e8 [General] Implement ActorAI packet, part 1
The server can now make actors become followers of players or other actors.
6 years ago
Marc Zinnschlag b7cce1a665 Merged pull request #1702 6 years ago
Alf Henrik Sauge d4f278a113 Replacing tab with spaces 6 years ago
Alf Henrik Sauge feeee50a88 Dropping a separate NPDTstruct12 object and instead use NPDTstruct52
NPDTstruct12 is now only used when loading and saving. Turning auto calc
on and off now no longer switches between to different set of values
6 years ago
Marc Zinnschlag 3197ebd8e7 Merged pull request #1694 6 years ago
David Cernat 715012f087 [General] Implement sending of image data for map tiles in PlayerMap 6 years ago
Andrei Kortunov 1dd36329a3 Load default markers definitions (bug #4410) 6 years ago
tri4ng1e f5b7a230fc
ESMReader::close now clears mHeader 6 years ago
Marc Zinnschlag 69c659852d Merge pull request #1689) 6 years ago
Andrei Kortunov 6cc7405194 Remove unnecessary command from QuadTreeWorld destructor (bug #4408) 6 years ago
David Cernat 099f85be0a [General] Implement PlayerMomentum packet & associated script functions 6 years ago
David Cernat 273179fd5a
Merge pull request #414 from OpenMW/master
Add OpenMW commits up to 29 Apr 2018
6 years ago
David Cernat 4b501a39f4 [General] Implement DoorDestination packet & associated script functions 6 years ago
scrawl f4cd7ff5b2
Merge pull request #1690 6 years ago
Capostrophic d967983f5c Assume Morrowind.esm dependency for dependency-less content addons (fixes #2829) 6 years ago
Andrei Kortunov 5afcc56860 Handle NiLookAtController (feature #4407) 6 years ago
David Cernat 66d5109509 [General] Fix information exchange for players sharing a cell
Previously, two players entering the same cell only sent and received their latest changes for dynamic stats, attributes, skills and equipment when they started sharing that cell.
6 years ago
David Cernat 7db74509e0 Merge pull request #412 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwscript/transformationextensions.cpp
6 years ago
scrawl 55a6344fb0
Revert log spam 6 years ago
David Cernat 02eef933fd
Merge pull request #411 from OpenMW/master
Add OpenMW commits up to 19 Apr 2018
6 years ago
Evgeny Kurnevsky 48fb6bb9e8
Fix crash when rollDice is called with 0. 6 years ago
David Cernat a541d7df3c [General] Rework PlayerStatsDynamic packets so they are of minimal size
(cherry picked from commit fc5e883160)
6 years ago
David Cernat b9520c11da [General] Rework PlayerEquipment packets so they are of minimal size
Moreover, rename BaseNetCreature's equipedItems into equipmentItems.

(cherry picked from commit d1ad0c91f8)
6 years ago
David Cernat c5b08d6109 [General] Simplify storing of attribute and skill index changes
(cherry picked from commit bd9e8bd10f)
6 years ago
David Cernat 2c77d5f498 [General] Set enforcedLogLevel to -1 when initializing BasePlayer 6 years ago
David Cernat 7b702bf8c2 [General] Add and use utility function for int value checks in vectors
(cherry picked from commit a796f81444)
6 years ago
David Cernat b6099024df [General] Rework PlayerAttribute packets so they are of minimal size
Previously, whenever a single attribute value changed for a player, that player then sent a PlayerAttribute packet with all values for all 8 attributes.

This did not cause anywhere as much packet spam as PlayerSkill used to, but there was no good reason not to fix it as well.

(cherry picked from commit b0965f094a)
6 years ago
scrawl 1f1f47431f
Merge pull request #1672 6 years ago
Capostrophic 48467814d4 Improve random number generation 6 years ago
David Cernat 78441c769a [General] Rework PlayerSkill packets so they are of minimal size
Previously, whenever a single skill value changed for a player, that player then sent a PlayerSkill packet with all values for all 27 skills, plus the player's progress towards the next level and the bonuses to each attribute on the next level up as the result of sklll increases thus far.

This commit makes PlayerSkill contain only the values of specific skills, moves the player's progress towards the next level to PlayerLevel packets, and moves the bonuses to each attribute on the next level up to PlayerAttribute packets.

Players now also send a PlayerSkill packet whenever their progress towards a new point in a skill changes. This was previously avoided so as to not have massive packet spam.

(cherry picked from commit ef79a98544)
6 years ago
David Cernat 28f1c1b0d3 [General] Rework CharGen slightly for clarity purposes
Previously, charGenStage.end was doing double duty as both the variable indicating the number of CharGen stages and – when set to 0 – the variable indicating that CharGen was over. The latter role is now filled by a new boolean.

(cherry picked from commit 926106cf8c)
6 years ago
scrawl ce1b2a612c
Merge pull request #1674 6 years ago
David Cernat 9e5ddeac50
Merge pull request #408 from OpenMW/master
Add OpenMW commits up to 18 Apr 2018
6 years ago
Capostrophic 90f3ff2da4 Don't force DDS file usage (fixes #1392)
Fallback to a DDS file if the requested texture path doesn't point to an existing file, not vice versa
6 years ago
tri4ng1e d310d36ea3
[Fix] Some PVS-Studio and cppcheck fixes 6 years ago
tri4ng1e d4d1703bcf
Some PVS-Studio and cppcheck fixes
cppcheck:
[apps/esmtool/record.cpp:697]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[apps/esmtool/record.cpp:1126]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[apps/esmtool/record.cpp:1138]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[apps/niftest/niftest.cpp:36]: (performance) Function parameter 'filename' should be passed by reference.
[apps/niftest/niftest.cpp:41]: (performance) Function parameter 'filename' should be passed by reference.
[apps/opencs/model/prefs/boolsetting.cpp:25]: (warning) Possible leak in public function. The pointer 'mWidget' is not deallocated before it is allocated.
[apps/opencs/model/prefs/shortcuteventhandler.cpp:52]: (warning) Return value of std::remove() ignored. Elements remain in container.
[apps/openmw/mwstate/quicksavemanager.cpp:5]: (performance) Variable 'mSaveName' is assigned in constructor body. Consider performing initialization in initialization list.

PVS-Studio:
apps/opencs/model/filter/parser.cpp  582  warn  V560 A part of conditional expression is always true: allowPredefined.
apps/opencs/view/world/referencecreator.cpp  67  warn  V547 Expression '!errors.empty()' is always false.
apps/opencs/view/world/referencecreator.cpp  74  warn  V547 Expression '!errors.empty()' is always false.
apps/opencs/view/doc/loader.cpp  170  warn  V560 A part of conditional expression is always true: !completed.
apps/opencs/view/doc/loader.cpp  170  warn  V560 A part of conditional expression is always true: !error.empty().
apps/opencs/model/tools/pathgridcheck.cpp  32  err  V517 The use of 'if (A) {...} else if (A) {...}' pattern was detected. There is a probability of logical error presence. Check lines: 32, 34.
apps/opencs/model/world/refidadapterimp.cpp  1376  err  V547 Expression 'subColIndex < 3' is always true.

apps/openmw/mwgui/widgets.hpp  318  warn  V703 It is odd that the 'mEnableRepeat' field in derived class 'MWScrollBar' overwrites field in base class 'ScrollBar'. Check lines: widgets.hpp:318, MyGUI_ScrollBar.h:179.
apps/openmw/mwgui/widgets.hpp  319  warn  V703 It is odd that the 'mRepeatTriggerTime' field in derived class 'MWScrollBar' overwrites field in base class 'ScrollBar'. Check lines: widgets.hpp:319, MyGUI_ScrollBar.h:180.
apps/openmw/mwgui/widgets.hpp  320  warn  V703 It is odd that the 'mRepeatStepTime' field in derived class 'MWScrollBar' overwrites field in base class 'ScrollBar'. Check lines: widgets.hpp:320, MyGUI_ScrollBar.h:181
apps/openmw/mwmechanics/actors.cpp  1425  warn  V547 Expression '!detected' is always true.
apps/openmw/mwmechanics/character.cpp  2155  err  V547 Expression 'mode == 0' is always true.
apps/openmw/mwmechanics/character.cpp  1192  warn  V592 The expression was enclosed by parentheses twice: ((expression)). One pair of parentheses is unnecessary or misprint is present.
apps/openmw/mwmechanics/character.cpp  521  warn  V560 A part of conditional expression is always true: (idle == mIdleState).
apps/openmw/mwmechanics/pathfinding.cpp  317  err  V547 Expression 'mPath.size() >= 2' is always true.
apps/openmw/mwscript/interpretercontext.cpp  409  warn  V560 A part of conditional expression is always false: rank > 9.
apps/openmw/mwgui/windowbase.cpp  28  warn  V560 A part of conditional expression is always true: !visible.
apps/openmw/mwgui/journalwindow.cpp  561  warn  V547 Expression '!mAllQuests' is always false.
apps/openmw/mwgui/referenceinterface.cpp  18  warn  V571 Recurring check. The '!mPtr.isEmpty()' condition was already verified in line 16.
apps/openmw/mwworld/scene.cpp  463  warn  V547 Expression 'adjustPlayerPos' is always true.
apps/openmw/mwworld/worldimp.cpp  409  err  V766 An item with the same key '"sCompanionShare"' has already been added.
apps/openmw/mwworld/cellstore.cpp  691  warn  V519 The 'state.mWaterLevel' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 689, 691.
apps/openmw/mwworld/weather.cpp  1125  warn  V519 The 'mResult.mParticleEffect' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1123, 1125.
apps/openmw/mwworld/weather.cpp  1137  warn  V519 The 'mResult.mParticleEffect' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1135, 1137.

apps/wizard/unshield/unshieldworker.cpp  475  warn  V728 An excessive check can be simplified. The '(A && B) || (!A && !B)' expression is equivalent to the 'bool(A) == bool(B)' expression.
apps/wizard/installationpage.cpp  163  warn  V735 Possibly an incorrect HTML. The "</p" closing tag was encountered, while the "</span" tag was expected.

components/fontloader/fontloader.cpp  427  err  V547 Expression 'i == 1' is always true.
components/nifosg/nifloader.cpp  282  warn  V519 The 'created' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 278, 282.
components/esm/loadregn.cpp  119  err  V586 The 'clear' function is called twice for deallocation of the same resource. Check lines: 112, 119.
components/esm/cellref.cpp  178  warn  V581 The conditional expressions of the 'if' statements situated alongside each other are identical. Check lines: 175, 178.
components/esmterrain/storage.cpp  235  warn  V560 A part of conditional expression is always true: colStart == 0.
components/esmterrain/storage.cpp  237  warn  V560 A part of conditional expression is always true: rowStart == 0.
6 years ago
scrawl 6c79c0fb35
Add an empty compileGLObjects implementation to Rig/MorphGeometry to avoid unnecessary creation of display list done by osg 6 years ago
Andreas Sturmlechner 2c9d46a60b
Fix build with Qt 5.11_beta3 (dropping qt5_use_modules) 6 years ago
David Cernat 70f9cb535e [General] Use RecordHelper methods to create and update DedicatedPlayers 6 years ago
David Cernat fa652964fd
Merge pull request #403 from OpenMW/master
Add OpenMW commits up to 9 Apr 2018
6 years ago
scrawl ef050d7869
Merge pull request #1660 6 years ago
David Cernat bdc9132e7c [General] Add SetResetStats server script function
Add reading and writing of resetStats variable to PlayerBaseInfo Packet

Fix typos in various server script function descriptions
6 years ago
David Cernat 73dea494c4 [General] Allow changes from PlayerBaseInfo without player stat reset 6 years ago
David Cernat c8abd11f5d [General] Move creature disguises for players to PlayerShapeshift packet
Additionally, make associated variables clearer, and move associated server script functions next to other shapeshifting functions.
6 years ago
David Cernat 34be9383e5 [General] Add isPlayer boolean to targets in packets 6 years ago
David Cernat a86c68c5a1 [General] Add sync for ranged weapon & projectile strike enchantments 6 years ago
David Cernat 3f8d94b030 [General] Synchronize strike enchantments in combat 6 years ago
David Cernat e3c43c6af7 Merge pull request #400 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/spellcasting.cpp
6 years ago
scrawl e73af18824
Merge pull request #1653 6 years ago
elsid 14daadded7
Add virtual destructors
To fix warnings:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/shared_ptr_base.h:588:8: warning: delete called on non-final 'NifOsg::ControllerFunction' that has virtual functions but non-virtual destructor
      [-Wdelete-non-virtual-dtor]
              delete __p;
              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/shared_ptr_base.h:595:4: note: in instantiation of function template specialization
      'std::__shared_count<__gnu_cxx::_S_atomic>::__shared_count<NifOsg::ControllerFunction *>' requested here
        : __shared_count(__p)
          ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/shared_ptr_base.h:1079:17: note: in instantiation of function template specialization
      'std::__shared_count<__gnu_cxx::_S_atomic>::__shared_count<NifOsg::ControllerFunction *>' requested here
        : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type())
                       ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/shared_ptr.h:129:25: note: in instantiation of function template specialization 'std::__shared_ptr<NifOsg::ControllerFunction,
      __gnu_cxx::_S_atomic>::__shared_ptr<NifOsg::ControllerFunction, void>' requested here
        shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { }
                               ^
/home/elsid/dev/openmw/components/nifosg/nifloader.cpp:242:39: note: in instantiation of function template specialization 'std::shared_ptr<NifOsg::ControllerFunction>::shared_ptr<NifOsg::ControllerFunction, void>' requested here
                callback->setFunction(std::shared_ptr<NifOsg::ControllerFunction>(new NifOsg::ControllerFunction(key)));
                                      ^

/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/unique_ptr.h:78:2: warning: delete called on non-final 'MWGui::ResponseCallback' that has virtual functions but non-virtual destructor
      [-Wdelete-non-virtual-dtor]
        delete __ptr;
        ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/unique_ptr.h:268:4: note: in instantiation of member function 'std::default_delete<MWGui::ResponseCallback>::operator()' requested here
          get_deleter()(__ptr);
          ^
/home/elsid/dev/openmw/apps/openmw/mwgui/dialogue.cpp:58:23: note: in instantiation of member function 'std::unique_ptr<MWGui::ResponseCallback, std::default_delete<MWGui::ResponseCallback> >::~unique_ptr' requested here
    PersuasionDialog::PersuasionDialog(ResponseCallback* callback)
                      ^
6 years ago
Capostrophic 1aa3ed0c18 Font loader fallback character reorganization (fixes #1987) 6 years ago
David Cernat 365f485e8d Merge pull request #397 from OpenMW/master while resolving conflicts
Conflicts:
	components/CMakeLists.txt
6 years ago
David Cernat ac82124a5d Merge pull request #395 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/actors.cpp
6 years ago
Capostrophic be542507f8
Make hasMaster() behavior consistent with isGameFile() (fixes #3618) 6 years ago
bret curtis 4890ecd357 remove native GLESv* support, as it never worked; make things less complicated as result, fixed lighting.glsl to work with gl2es thanks to ptitSeb 6 years ago
David Cernat 5f6ddcfc59 [General] Rework container sync to prevent item duping
A main priority in TES3MP development is to avoid making major changes to OpenMW code, so as to avoid merge conflicts in the future. Whenever avoiding potential conflicts seems especially difficult for the proper implementation of a particular multiplayer feature, that multiplayer feature is often put off until later or partially implemented with the intent of being revisited in the future.

Container sync is the perfect example. Previously, the OpenMW code for container actions was kept exactly as it was, with clients unilaterally accepting their own container changes as per singleplayer-specific code, with only the addition that clients sent container packets every time they made a change in a container, packets which were then forwarded unquestioningly by the server to other players. This meant that two players clicking on the same item in a container at the same time both managed to take it, thus duplicating the item.

Immediately after the packets were already forwarded, server scripts were able to check for incorrect changes, such as the removal of more items than should have existed in a container, but they had to send their own packets that attempted to fix what had already been accepted on the initial client and then forwarded to all clients, which was quite onerous in some scenarios, such as when a player on a slow connection immediately dropped items in the world after taking them from a container (which is why the default TES3MP serverside scripts made no attempt at sending corrective packets at all, preferring to expect the matter to be solved in a later C++ implementation).

This commit fixes item duping in containers by preventing container actions from initially running on clients and by ending the automatic forwarding of container packets by the server. Instead, clients now send container packets that act as requests for container actions, and serverside scripts have to forward these requests themselves. In other words, without a matching Container event in the server's Lua scripts, players are completely unable to affect containers for themselves or for others.

To forward a received Container packet, the following line must be used in a Container event in the Lua scripts:

tes3mp.SendContainer(true, true)

When an invalid action count is used in a container request, the serverside scripts can amend it using the following new function:

tes3mp.SetReceivedContainerItemActionCount(objectIndex, itemIndex, actionCount)

Thus, the serverside scripts are able to allow only container actions that are correct based on their own recorded contents for that container.

The OpenMW code allowing unilateral container actions in mwgui/container.cpp is now prevented from executing. When a player's container request is returned to them, code in mwmp/WorldEvent.cpp simulates those container actions instead.
6 years ago
scrawl eb723f5ae6
Merge pull request #1629 6 years ago
Capostrophic 002ad9ae1b Print a warning in case a fallback value wasn't found 6 years ago
Capostrophic e4531a6910 Use middle gray instead of pure black as default fallback color (Fixes #2841) 6 years ago
David Cernat b249162ca1 [General] Implement setting of enforced client log level in GameSettings
Certain servers do not want the players to have debug information about the locations and actions of other players, so a client's log level can now be enforced by the server via the GameSettings packet.
6 years ago
David Cernat b7c6261e16 Merge pull request #392 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
6 years ago
scrawl e81faf5f2f
Add an option to disable GUI keyboard navigation (Bug #4333) 6 years ago