Commit Graph

11713 Commits (9029533ec1fca0016b786181837f7218b5bbf031)

Author SHA1 Message Date
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)
7 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)
7 years ago
scrawl 5d1b40c5ea
Merge pull request #1678 7 years ago
David Cernat af4fcb7261 [Client] Don't force skill update on cell change
Previously, an attempt by the server to simultaneously change a player's cell and skills (as you'd expect when a player file is loaded) led to:

1) The server sending the cell packet first and the skill packet afterwards

2) The player receiving the cell packet and sending their own skill packet as part of the client's forced skill update

3) The player receiving the skill packet from the server

4) The server receiving the skill packet from the player

The result was that, if the player then left the server without sending another skill packet, the server's memory retained the skills the player had sent instead of the skills it had sent to the player.

This is the first step in a solution to that situation and similar ones.

(cherry picked from commit cac4684986)

Note: In 0.6.x, this was only a problem if a player's cell was set by the server first and their skills were set next, i.e. this was not a problem in the default CoreScripts because the opposite order used there masked the problem. It was a more significant problem in 0.7 because all packets were queued for a player and sent in a specific hardcoded order.
7 years ago
David Cernat 57070b7f5c [Client] Disable automatic transition to other chargen menus from OpenMW
Previously, after finishing the TES3MP chargen once, mCreationStage was set to 4 in OpenMW, which in turn made it impossible to go through only specific chargen menus again as the result of the relevant TES3MP script function (tes3mp.SetCharGenStage(pid, startStage, endStage) in 0.6.3, player:setCharGenStages(startStage, endStage) in 0.7). In other words, trying to allow a player to just choose their class again made it so the player started at that menu and went through all the other subsequent menus as well, i.e. the player went through the class, birthsign and review menus.
7 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)
7 years ago
David Cernat 9d46de88e0 [Client] Send cell states correctly after inputting name
Previously, initial cell states were sent in LocalPlayer::processCharGen() and were ignored by the server because the player was not yet regarded as loaded. The result was that existing players logging in could not see each other until they went through at least one cell change.

(cherry picked from commit b4e8560698)

# Conflicts:
#	apps/openmw/mwmp/LocalPlayer.cpp
7 years ago
Capostrophic 8617d0603b Display a message if a spell the player tries to use via a quick key is missing (fixes #4391) 7 years ago
David Cernat e355dca4dd Merge pull request #409 from TES3MP/0.6.3 while resolving conflicts
Conflicts:
	apps/openmw-mp/CMakeLists.txt
	apps/openmw-mp/Script/Functions/GUI.cpp
	apps/openmw-mp/Script/Functions/GUI.hpp
	apps/openmw-mp/Script/Functions/Items.hpp
	apps/openmw-mp/Script/Functions/Mechanics.cpp
	apps/openmw-mp/Script/Functions/Mechanics.hpp
	apps/openmw-mp/Script/Functions/Stats.cpp
	apps/openmw-mp/Script/Functions/Stats.hpp
	apps/openmw-mp/Script/ScriptFunctions.cpp
	apps/openmw-mp/Script/ScriptFunctions.hpp
7 years ago
David Cernat 9e5ddeac50
Merge pull request #408 from OpenMW/master
Add OpenMW commits up to 18 Apr 2018
7 years ago
tri4ng1e d310d36ea3
[Fix] Some PVS-Studio and cppcheck fixes 7 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.
7 years ago
David Cernat 17678ee60f
Merge pull request #407 from OpenMW/master
Add OpenMW commits up to 17 Apr 2018
7 years ago
David Cernat 50fe54af5d [Client] Update DedicatedPlayer creature if displayCreatureName changes 7 years ago
David Cernat ed15d9ebf5 Merge pull request #406 from TES3MP/0.6.3 while resolving conflicts
Conflicts:
	apps/openmw-mp/Script/Functions/Mechanics.cpp
	apps/openmw-mp/Script/Functions/Mechanics.hpp
	components/openmw-mp/Base/BasePlayer.hpp
7 years ago
David Cernat a01fc577f1 [Client] Add setAttributes() and setSkills() methods to DedicatedPlayer 7 years ago
David Cernat 716809f2db [Client] Prevent errors from NPC-only packets for DedicatedPlayers 7 years ago
David Cernat 68ee64902d [Client] Track & use previous race & creatureRefId for DedicatedPlayers 7 years ago
David Cernat acb1335d78 [Client] Make creature disguises update correctly 7 years ago
David Cernat 70f9cb535e [General] Use RecordHelper methods to create and update DedicatedPlayers 7 years ago
Andrei Kortunov 174b3d2249 Reset an inventory filter after reload or a new game start (bug #4392) 7 years ago
David Cernat 49e94725aa [Client] Prevent MechanicsManager::playerLoaded() from enabling AI 7 years ago
David Cernat 9d27f5f154 [Client] Create RecordHelper class with initial NPC and creature methods 7 years ago
David Cernat 9697595857 [Client] Don't equip already equipped items in local setEquipment()
This avoids the following error when receiving repeated PlayerBaseInfo packets: "Error in frame: Invalid slot, make sure you are not calling RefData::setCount for a container object"

Additionally, only re-equip items as the result of a PlayerBaseInfo packet if resetStats is true (because of its side effect of auto-equipping items for the player).
7 years ago
David Cernat 72463cfdb6 [Client] Refresh equipment for DedicatedPlayers when setting base info
Additionally, move default fatigue value to DedicatedPlayer initialization.
7 years ago
David Cernat 2390744b45 Merge pull request #404 from TES3MP/0.6.3 while resolving conflicts
Conflicts:
	apps/openmw-mp/Player.hpp
	apps/openmw-mp/Script/Functions/Mechanics.cpp
	apps/openmw-mp/Script/Functions/Mechanics.hpp
	apps/openmw-mp/Script/Functions/Settings.hpp
	apps/openmw-mp/Script/Functions/Stats.cpp
	apps/openmw-mp/Script/Functions/Stats.hpp
	components/openmw-mp/Base/BasePlayer.hpp
7 years ago
David Cernat fa652964fd
Merge pull request #403 from OpenMW/master
Add OpenMW commits up to 9 Apr 2018
7 years ago
Capostrophic d9acd19dc0
Merge branch 'master' into illusion 7 years ago
scrawl 0982d2175a
Merge pull request #1473 7 years ago
scrawl 92d0fb2981
Merge pull request #1667 7 years ago
scrawl 35300c04cd
Merge pull request #1671 7 years ago
scrawl 308551ad49
Merge pull request #1644 7 years ago
scrawl cbddb4a0a9
Merge pull request #1638 7 years ago
David Cernat 73dea494c4 [General] Allow changes from PlayerBaseInfo without player stat reset 7 years ago
Capostrophic cddc0914c8 Option to charge for all companions travelling (fixes #4064) 7 years ago
David Cernat c132dc70d2 [Client] Make PlayerShapeshift turn DedicatedPlayers into creatures 7 years ago
David Cernat 141eb8b7c2 [Client] Streamline creation of references for DedicatedPlayers
Additionally, delete DedicatedPlayers who disconnect.

Previously, all disconnected DedicatedPlayers were still kept in memory, but never used again. There was code that suggested they were meant to be reused upon reconnecting, but that reuse had never actually been implemented, and would probably not be that useful anyway.
7 years ago
David Cernat 14f90e773d [Client] Split up creation of DedicatedPlayers into multiple methods
Additionally, print player guids using their string representations for consistency.

The creation and updating of DedicatedPlayer references remains very inelegant, but this commit is the first step towards fixing that.
7 years ago
Capostrophic 77467f17c9
Fix a typo 7 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.
7 years ago
David Cernat c3b44e11fb
Merge pull request #402 from TES3MP/0.6.3
Add 0.6.3 commits up to 5 Apr 2018
7 years ago
David Cernat 34be9383e5 [General] Add isPlayer boolean to targets in packets 7 years ago
David Cernat 0eed05610b [Client] Fix autoequipping for creatures in WorldEvent::editContainers() 7 years ago
David Cernat a86c68c5a1 [General] Add sync for ranged weapon & projectile strike enchantments 7 years ago
David Cernat 3f8d94b030 [General] Synchronize strike enchantments in combat 7 years ago
Andrei Kortunov 27c831959e Handle OnPCHitMe variable (bug #2703) 7 years ago
David Cernat f50637bdd4 Merge pull request #401 from TES3MP/0.6.3 while resolving conflicts
# Conflicts:
#	apps/openmw-mp/processors/world/ProcessorContainer.hpp
#	apps/openmw/mwmp/WorldEvent.cpp
7 years ago
David Cernat e3c43c6af7 Merge pull request #400 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/spellcasting.cpp
7 years ago
Capostrophic 4f64ba7b7f Implement sBookSkillMessage GMST 7 years ago
scrawl c6abec1e51
Merge pull request #1641 7 years ago
scrawl d935e78f93
Merge pull request #1645 7 years ago
scrawl c610b8acc8
Merge pull request #1649 7 years ago
scrawl cd9f767e29
Merge pull request #1650 7 years ago
scrawl 8e37f6bf3e
Merge pull request #1656 7 years ago
scrawl f36adfec5f
Merge pull request #1657 7 years ago
scrawl 80a8ef6d49
Merge pull request #1661 7 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)
                      ^
7 years ago
David Cernat 26a56d6a02 [Client] Include NPC/creature containers when adding all cell containers 7 years ago
David Cernat 5bb09d3bed Merge pull request #399 from TES3MP/0.6.3 while resolving conflicts
Conflicts:
	apps/openmw/mwmp/WorldEvent.cpp
	apps/openmw/mwmp/WorldEvent.hpp
	apps/openmw/mwmp/processors/world/ProcessorContainer.hpp
7 years ago
David Cernat 1e3c4fd488 [Client] Fix ProcessorContainer typos caused by careless copy-pasting 7 years ago
David Cernat 7b97e8671d
Merge pull request #398 from OpenMW/master
Add OpenMW commits up to 30 March 2018
7 years ago
David Cernat f80f3bd484 [Client] Make it possible to reply to requests about specific containers
Previously, a Container packet with a REQUEST action always made the client respond with the contents of all the containers in that cell.

The previous behavior now only happens for requests that have no WorldObjects attached, while requests that have WorldObjects attached get a reply with the contents of those specific containers.
7 years ago
David Cernat ec1311fcb7 [Client] Make it possible to check whether a class has a ContainerStore 7 years ago
David Cernat 258e319acb [Client] Require InventoryStore for autoequipping actors 7 years ago
David Cernat afe8c97cb9 [Client] Require InventoryStore for unequipping actors in editContainers 7 years ago
David Cernat d8b48f6cf4 [Client] Remove redundant container methods from CellController 7 years ago
Capostrophic baaf65bc2c Add vanilla enchanted weaponry behavior option, on by default (fixes #4136) 7 years ago
Capostrophic 2dca389a3b Extend magic resistance/weakness to all effects that can be resisted (fixes #4309) 7 years ago
Ilya Zhuravlev fdcfbdbdd1 android: Update for sdl 2.0.8 7 years ago
Capostrophic e6d9bce519 Implement fWerewolfHealth GMST (fixes #4142) 7 years ago
David Cernat 365f485e8d Merge pull request #397 from OpenMW/master while resolving conflicts
Conflicts:
	components/CMakeLists.txt
7 years ago
David Cernat 3d5860d6f4 Merge pull request #396 from TES3MP/0.6.3 while resolving conflicts
Conflicts:
	apps/openmw-mp/Player.cpp
	apps/openmw-mp/Script/Functions/Settings.cpp
	apps/openmw-mp/Script/Functions/Settings.hpp
	apps/openmw-mp/Script/Functions/World.cpp
	apps/openmw-mp/Script/Functions/World.hpp
	apps/openmw/mwgui/container.cpp
	apps/openmw/mwmp/LocalActor.cpp
	apps/openmw/mwmp/LocalPlayer.cpp
	apps/openmw/mwmp/WorldEvent.cpp
	apps/openmw/mwmp/processors/world/ProcessorContainer.hpp
	components/openmw-mp/Base/BaseEvent.hpp
	components/openmw-mp/Log.cpp
	components/openmw-mp/Log.hpp
7 years ago
Capostrophic 76f50312f2
Remove a redundant check 7 years ago
David Cernat ac82124a5d Merge pull request #395 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/actors.cpp
7 years ago
David Cernat 1c340568d2 [Client] Disallow resting if player has not finished chargen
Previously, players pressing T rapidly before logging in had the Wait screen show up for them.
7 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 7 years ago
Capostrophic 2d119e834a Add vanilla absorb attribute behavior option, on by default (Fixes #4135) 7 years ago
Capostrophic b6a2589e7b Don't apply harmful spell effects on the player in god mode (fixes #4264) 7 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.
7 years ago
David Cernat 9165b12d78 [Client] Update inventory views when receiving inventory or equipment 7 years ago
Capostrophic 41f89c84f8 Don't move the player if opposite direction keys are held down at the same time (Fixes #4233) 7 years ago
David Cernat bb15ee9215 [Client] Make it possible to get ContainerWindow from elsewhere in code 7 years ago
Capostrophic 42b7846f81 Replace a redundant playerAllies check with a boolean (Fixes #4229) 7 years ago
Nelsson Huotari 63e34a5575 Typofix: updateCrimePersuit -> ...Pursuit 7 years ago
David Cernat bbdc30628b [Client] Use the correct guid for a received WorldEvent or ActorList 7 years ago
scrawl c02920bcd1
Merge pull request #1634
Conflicts:
	apps/openmw/mwworld/worldimp.hpp
7 years ago
scrawl f47429d575
Merge pull request #1635 7 years ago
scrawl ff7f964643
Merge pull request #1636 7 years ago
David Cernat 14f0299322 [Client] Don't log InputBox inputs for client 7 years ago
Andrei Kortunov fed3e56fc1 Weather manager: get rid of World dependency 7 years ago
Andrei Kortunov 53ef345680 Update magic effect particles after building new animation (bug #2254) 7 years ago
Andrei Kortunov a0a30cdbf5 AI: hide torches during bad weather (bug #4334) 7 years ago
Andrei Kortunov bd6c7de579 Do not unequip two-handed weapon when equipping torch 7 years ago
Capostrophic 5b49248d6e
Restrict opening doors to bipedal actors (Fixes #4313) 7 years ago
scrawl edb57306b6
Merge pull request #1628 7 years ago
scrawl 7a5748a9f1
Merge pull request #1632 7 years ago
elsid a26483ab26 Fix memory leak
There is no delete for TextFormat objects in PageDisplay destructor.
7 years ago
elsid 26df0e6ebd Remove duplicated include 7 years ago
David Cernat 20caea083a [Client] Use correct count for items in equipment packets
Previously, throwing weapon sync was completely broken for players, as the count for their equipped throwing weapons was never set and – as a result – defaulted to a count of 1 on other clients. As a result, any time a player threw a dart, they would then appear as having switched to hand-to-hand for other players.

Moreover, the count of equipped items was mistakenly based on the total count of items with that refId in the inventory. As a result, if – for example – I equipped 1 Daedric Longsword and had 4 others in my inventory, my DedicatedPlayer on other clients would equip a Daedric Longsword with a count of 5. If I was overencumbered by having that many Daedric Longswords on me and then dropped 4 of them, allowing myself to move again, my DedicatedPlayer would still walk around with 5 Daedric Longswords and lack animations due to still being overencumbered on the other clients.

These problems were less prevalent for actors, but their equipment updating code has also been changed to match that of players.
7 years ago
Andrei Kortunov e0aa5e8e79 Prevent overlapping for journal and books scrolling 7 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.
7 years ago
David Cernat a3a341fee6 [Server] Reimplement 4ebfcc4a21 for 0.6 7 years ago
David Cernat 7ec08e125b Merge pull request #394 from TES3MP/0.6.3 while resolving conflicts
Conflicts:
	apps/openmw-mp/Script/Functions/Settings.cpp
	apps/openmw-mp/Script/Functions/Settings.hpp
7 years ago
David Cernat bf906b3f0a
Merge pull request #393 from OpenMW/master
Add OpenMW commits up to 10 March 2018
7 years ago
David Cernat b7c6261e16 Merge pull request #392 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
7 years ago
Andrei Kortunov 62c04c6758 Unstack soulgem, added via AddSoulGem console command (bug #4351) 7 years ago
scrawl e81faf5f2f
Add an option to disable GUI keyboard navigation (Bug #4333) 7 years ago
scrawl 870c658500
Remove missing souls, remove some runaway exceptions (Fixes #4111) 7 years ago
scrawl 7f39dbb129
Merge pull request #1626 7 years ago
Harald H d3b623b5d3 http to https for supported urls (#1625)
* http to https for supported urls

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* http tp https

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* some url fixes

* http to https
7 years ago
Thunderforge dfcd243150 Remove the word "interior" from cell not found message 7 years ago
scrawl bf78c18296
Merge pull request #1624 7 years ago
scrawl 148cda254d
Merge pull request #1617 7 years ago
Capostrophic 3b922d810a Don't use floating point arithmetics for formatted count (Bug #4346) 7 years ago
Capostrophic 60a663ef58 Account for all possible count values in getCountString (Bug #4346) 7 years ago
Chris Robinson 01dbac7b15 Don't use a different setting for distant viewing distance 7 years ago
Chris Robinson 41669467ae Make settings for distant fog parameters 7 years ago
Chris Robinson 4caa7c9674 Workaround older MSVC quirk 7 years ago
Chris Robinson 154cc8c659 Use alternate fog parameters when distant land is enabled
This allows the distant land to actually be seen when the user enables it. The
values used are replicated from MGE XE's default settings and should probably
be exposed somewhere.
7 years ago
Chris Robinson 6d557fec8e Increase the far clip plane when distant terrain is enabled 7 years ago
Capostrophic d371bebb33 Prevent items in a container owned by a dead actor from being counted as stolen (Bug #4328) 7 years ago
Capostrophic cc0c6ddaa6 Account for empty victimRef (Bug #4328) 7 years ago
scrawl 839196e4fa
Force normal polygon mode for the map camera (Fixes #4235) 7 years ago
David Cernat c18d07827d [Client] Hide difficulty widget because it has no use in multiplayer 7 years ago
David Cernat 37b349c2f6
Merge pull request #390 from OpenMW/master
Add OpenMW commits up to 28 Feb 2018
7 years ago
scrawl 9e9c278527
Merge pull request #1597 7 years ago
Capostrophic 929fc68160
Consider items with dead owner not stolen (fixes bug #4328) 7 years ago
David Cernat 9e10eb9c84
Merge pull request #389 from OpenMW/master
Add OpenMW commits up to 24 Feb 2018
7 years ago
David Cernat 03266d7648 [Client] Prevent guards from arresting players who are currently jailed 7 years ago
scrawl 31d7e6af32
Merge pull request #1608 7 years ago
Capostrophic 089666dd68
Round up displayed encumbrance 7 years ago
Capostrophic 99360e132f
Only display "new journal entry" message in dialogue if there *is* a new entry 7 years ago
David Cernat 60f686ee43 [General] Implement setting of physics framerate as part of GameSettings 7 years ago
Daniel Vukelich 3bdd989a50 Remove numeric quicksave slot IDs
When multiple quicksaves occurred in quick succession, the numeric order
of the saves could not be guaranteed.  To prevent players from getting
confused as to why their saves appear out of order, don't number them.
7 years ago
David Cernat 886b3431bc [Client] When resurrecting players, set pcknownwerewolf to 0
This makes it so players are no longer known werewolves and are no longer attacked infinitely by guards.
7 years ago
David Cernat 53d758ba16
Merge pull request #385 from OpenMW/master
Add OpenMW commits up to 13 Feb 2018
7 years ago
scrawl 123f7b83d5
Make the CompositeMapRenderer use available time and add related setting 7 years ago
scrawl a708ac488e
Don't call Store::setUp() unnecessarily
Fixes a threading issue with ESM::Land store caused by calling setUp() while it's being used.
7 years ago
David Cernat ac374a8ef9 Merge pull request #384 from TES3MP/0.6.3 while resolving conflicts
Conflicts:
 	apps/openmw-mp/Player.cpp
	apps/openmw-mp/Script/Functions/Mechanics.cpp
	apps/openmw-mp/Script/Functions/Mechanics.hpp
	apps/openmw-mp/Script/Functions/Quests.cpp
	apps/openmw-mp/Script/Functions/Quests.hpp
	apps/openmw-mp/Script/ScriptFunctions.hpp
	apps/openmw-mp/processors/player/ProcessorRecordDynamic.hpp
	apps/openmw/mwmp/LocalPlayer.hpp
	apps/openmw/mwmp/WorldEvent.cpp
	apps/openmw/mwworld/worldimp.cpp
	components/openmw-mp/Base/BasePlayer.hpp
7 years ago
David Cernat a7e3261b0b
Merge pull request #383 from OpenMW/master
Add OpenMW commits up to 11 Feb 2018
7 years ago
scrawl 5bb7d76913
Merge pull request #1605 7 years ago
scrawl 899d464b0d
Cap the rain emitter's frame time (Fixes #4314) 7 years ago
scrawl f28024b541
Don't use Activate and Move keys for GUI navigation if bound to mouse buttons (Fixes #4225, Fixes #4320) 7 years ago
Andrei Kortunov f626a7fcc7 Take in account PC rank during disposition calculation (bug #4322) 7 years ago
David Cernat 74765b3ace [General] Implement selected spell sync as part of PlayerMiscellaneous 7 years ago
David Cernat 029dfc56ba [General] Implement player scale as part of PlayerShapeshift 7 years ago
David Cernat aa448523f8 [Client] Clean up WorldEvent::runConsoleCommands() slightly 7 years ago
David Cernat ce5670e57e [Client] Ignore invalid object refIds from ObjectPlace packets 7 years ago
David Cernat 4496625154
Merge pull request #381 from OpenMW/master
Add OpenMW commits up to 31 Jan 2018
7 years ago
David Cernat 66078bfea7 [General] Implement Mark location sync as part of PlayerMiscellaneous 7 years ago
scrawl b1b8e31562
Use unique_ptr over new/delete (Fixes #4305) 7 years ago
David Cernat 989f6e6b51 [General] Implement PlayerReputation packet 7 years ago
David Cernat bdafa8e9ab
Merge pull request #380 from TES3MP/0.6.3
Add 0.6.3 commits up to 30 Jan 2018
7 years ago
David Cernat 3d80e2db62 [General] Add placeholders for new packet types, part 2 7 years ago
David Cernat f1ba9253b0 [Client] Fix build 7 years ago
David Cernat 5858e05362 Merge pull request #378 from TES3MP/0.6.3 while resolving conflicts
Conflicts:
	apps/openmw-mp/CMakeLists.txt
	apps/openmw-mp/Script/ScriptFunctions.hpp
	components/CMakeLists.txt
7 years ago
David Cernat 02af7f6ba1 [General] Add placeholders for new packet types 7 years ago
David Cernat 1a8a518897 Merge pull request #376 from TES3MP/0.6.3 while resolving conflicts
Conflicts:
	README.md
	apps/openmw-mp/Script/Functions/World.cpp
	apps/openmw/mwmp/LocalPlayer.cpp
	apps/openmw/mwmp/LocalPlayer.hpp
	apps/openmw/mwworld/scene.cpp
	components/openmw-mp/Version.hpp
7 years ago
David Cernat 78df8c5ebe
Merge pull request #375 from OpenMW/master
Add OpenMW commits up to 29 Jan 2018
7 years ago
scrawl 89c6b59c30
Merge pull request #1602 7 years ago
David Cernat ce11a1dfa9 [Client] Fix potential invalid pointer when storing cell unloads
Notably, builds of the client done with Clang were crashing on startup before this.
7 years ago
David Cernat 420dab10e1 [General] Track objects directly placed by players in ObjectPlace
This allows the OnPCDrop variable to get set correctly even when object placements have to go through the server first in order to gain a unique multiplayer index (mpNum).

Among other things, this makes it possible to roll marijuana joints in the popular mod "Tribunal Code Patch".
7 years ago
David Cernat 595bc5a152 [Client] Only send ObjectScale packets when scale actually changes 7 years ago
David Cernat 5d4b97645d Merge pull request #374 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/CMakeLists.txt
7 years ago
David Cernat 569911121d [Client] Fix build 7 years ago
David Cernat 5cf71a4e67 Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 7 years ago
David Cernat d70b93e095 Merge pull request #373 from TES3MP/0.6.2 while resolving conflicts
# Conflicts:
#	apps/openmw/mwmp/DedicatedActor.cpp
#	apps/openmw/mwmp/processors/player/ProcessorPlayerResurrect.hpp
7 years ago
David Cernat d7e29f1f61 [Client] Unequip items with constant effect damage when resurrected 7 years ago
David Cernat d19d8b0a34 [Client] Add and use enchantmentType argument for unequipItemsByEffect() 7 years ago
David Cernat 6c4bb8c423 [Client] Move resurrection code for local player to LocalPlayer 7 years ago
David Cernat 6b75a82777 [Client] Ignore equipment items for DedicatedActors with count below 0 7 years ago
David Cernat e3bc11d9eb [Client] Fix ListBox overlap crashes by removing ListBoxes properly 7 years ago
David Cernat c6a85ee8f9 [Client] Add doesEffectListContainEffect() method to MechanicsHelper 7 years ago
David Cernat aa392ebf20 [Client] Unequip items if necessary when attr/skill modifier is set to 0 7 years ago
David Cernat ace825b99c [Client] Ignore invalid player class IDs from packets
Additionally, clean up variables names in related code.
7 years ago
David Cernat c6874509b6 [Client] Ignore invalid faction IDs from packets 7 years ago
Koncord 0e97b769f9 [General] Change type of Object::enchantmentCharge 7 years ago
Koncord 7e5b929ea2 [General] Rework PacketPlayerFaction 7 years ago
Koncord 29ba07fe8c [General] Rework PacketPlayerInventory
Save the Action for each item. Now you can add or remove multiple items
7 years ago
Koncord de0bb3cdab [General] Change type of Item::enchantmentCharge to float 7 years ago
Koncord 1f1cbf53f9 [Client] Mark trivial destructor as default, remove "virtual" keyword
Mark constructor as explicit
7 years ago
Koncord b63bf258ff [Client] Remove "virtual" keyword for getLocalActor & getDedicatedActor 7 years ago
Koncord c2578918f2 [Client] Do not copy strings in getLocalActor and getDedicatedActor 7 years ago
Koncord e2e197d84a [Client] Fix getting element of shared_ptr by reference 7 years ago
Koncord f1e2bc01f6 [General] Use floats instead of doubles for enchantmentCharge 7 years ago
Ilya Zhuravlev 8d44d3124e Android: Add callbacks for basic cursor handling. 7 years ago
David Cernat a037193e79 Merge pull request #372 from TES3MP/0.6.2 while resolving conflicts
Conflicts:
	apps/openmw-mp/Script/Functions/Actors.cpp
	apps/openmw-mp/Script/Functions/Actors.hpp
	apps/openmw-mp/Script/Functions/Items.cpp
	apps/openmw-mp/Script/Functions/Items.hpp
	apps/openmw-mp/Script/Functions/World.cpp
	apps/openmw-mp/Script/Functions/World.hpp
	apps/openmw/mwmp/WorldEvent.cpp
	components/openmw-mp/Packets/Player/PacketPlayerEquipment.cpp
	components/openmw-mp/Version.hpp
7 years ago
Ilya Zhuravlev 455f718394 Android: register a virtual controller definition 7 years ago
Daniel Vukelich 3af8f63895 Use unsigned integer types for QuickSave indices 7 years ago
David Cernat 5894ffae7d [Client] Ignore dynamic object placements or spawns in packets 7 years ago
David Cernat f746958afa [Client] Send enchantmentCharge for items added or removed in containers 7 years ago
David Cernat bce3d0eb4c [Client] Use more descriptive message for version mismatch 7 years ago
Bret Curtis 588c1df0f0
Merge pull request #1599 from xyzz/android
Update android port.
7 years ago
Ilya Zhuravlev d2121ccd62 Update android port. 7 years ago
Daniel Vukelich f09fd6795c Follow openmw style guide 7 years ago
scrawl 2caaa48b91
Workaround to make sure message box remains on top (Fixes #4298) 7 years ago
scrawl e2e48e0a50
Add default value for 'sAnd' GMST (Fixes #4269) 7 years ago
scrawl d9d8de3061
Catch exceptions in updateWindowManager (Bug #4269) 7 years ago
Daniel Vukelich 97924d97c7 Add the option for multiple quicksave slots
With more than 1 quicksave slot, slots will be created each time you
quicksave until the maximum number (configured in settings) of
quicksaves has been reached.  After that, the oldest quicksave slot will
be replaced each time you quicksave.  Saves are numbered sequentially,
unless the maximum number of slots is 1, in which case it is not numbered.
7 years ago
Andrei Kortunov eccb49da18 Do not summon the bound bow if there is no suitable ammo 7 years ago