Commit Graph

2754 Commits (ffi-server-rewrite)

Author SHA1 Message Date
David Cernat fa652964fd
Merge pull request #403 from OpenMW/master
Add OpenMW commits up to 9 Apr 2018
7 years ago
scrawl 35300c04cd
Merge pull request #1671 7 years ago
Capostrophic cddc0914c8 Option to charge for all companions travelling (fixes #4064) 7 years ago
David Cernat d8b48f6cf4 [Client] Remove redundant container methods from CellController 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 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 bb15ee9215 [Client] Make it possible to get ContainerWindow from elsewhere in code 7 years ago
scrawl edb57306b6
Merge pull request #1628 7 years ago
elsid a26483ab26 Fix memory leak
There is no delete for TextFormat objects in PageDisplay destructor.
7 years ago
Andrei Kortunov e0aa5e8e79 Prevent overlapping for journal and books scrolling 7 years ago
David Cernat b7c6261e16 Merge pull request #392 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
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 bf78c18296
Merge pull request #1624 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
David Cernat c18d07827d [Client] Hide difficulty widget because it has no use in multiplayer 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
Miloslav Číž db6107f12f
Merge branch 'master' into screenshot360 7 years ago
Capostrophic 089666dd68
Round up displayed encumbrance 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
David Cernat 74765b3ace [General] Implement selected spell sync as part of PlayerMiscellaneous 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 5d4b97645d Merge pull request #374 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/CMakeLists.txt
7 years ago
David Cernat e3bc11d9eb [Client] Fix ListBox overlap crashes by removing ListBoxes properly 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
scrawl 2caaa48b91
Workaround to make sure message box remains on top (Fixes #4298) 7 years ago
David Cernat 4caf7ca30a [Client] Add temporary fix for crashes caused by custom GUI elements 7 years ago
David Cernat db0e0d376e [Client] Use new code to set the console's Ptrs from server scripts
Previously, reusing the console's object selection code made it so using the same Ptr twice in a row was akin to clicking on the same object twice in the console window, i.e. the object was deselected the second time around. Additionally, that same code was setting key focus to the hidden console window, preventing players from moving until they activated another window (such as their inventory or chat window).
7 years ago
David Cernat cac2c6c1e8 Merge pull request #360 from TES3MP/0.6.1-openmw-updates while resolving conflicts 7 years ago
David Cernat ecb0ad0d77 Merge pull request #359 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
7 years ago
David Cernat 535fba0cb3 [Client] Finish drag and drops when arrested or teleported by server 7 years ago
David Cernat ebf88d12a3 [Client] Send PlayerInventory packet after buying skill training 7 years ago
David Cernat 0ad9c99cf4 [Client] Send PlayerInventory packet after completing a vendor trade 7 years ago
Andrei Kortunov 29b2308b2c Do not display cyrillic soft/hard signs in the journal index 7 years ago
David Cernat 07f0cc2b0e
Merge pull request #353 from OpenMW/master
Add OpenMW commits up to 4 Dec 2017
7 years ago
scrawl ff1226c96b
Merge pull request #1575 7 years ago
Andrei Kortunov 8decd35607 Fixes crash on quickload from the container menu (bug #4239) 7 years ago
David Cernat e7f20e7daf Merge pull request #351 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
#	README.md
7 years ago
scrawl 47a5229eed
Merge pull request #1564 7 years ago
David Cernat 22521578eb
Merge pull request #349 from OpenMW/master
Add OpenMW commits up to 28 Nov 2017
7 years ago
Grigorii Latyshev 2abb1a2ec2 Added checkMagicka parameter 7 years ago
Grigorii Latyshev ce32462358 Move code to apps/openmw/mwmechanics/spellcasting.cpp, move reduce mana code to CastSpell::cast(const ESM::Spell*) 7 years ago
scrawl 88ec6179ff
Merge pull request #1566 from akortunov/guifixes
Set default values for class and birthsign select menus
7 years ago
Andrei Kortunov 55db3c2712 Set default values for class and birthsign select menus (bug #4226) 7 years ago
David Cernat d06817a356
Merge pull request #347 from OpenMW/master
Add OpenMW commits up to 25 Nov 2017
7 years ago
Grigorii Latyshev 32096ae0cc Fix displayed spell success chance in God Mode 7 years ago
scrawl 665ca5b2d5
Merge pull request #1558 from akortunov/rusjournal
Cyrillic journal index (bug #2485)
7 years ago
scrawl 8226c8dc92
Merge pull request #1560 from akortunov/guifixes
Fix the Topics button position if the Tribunal is not installed
7 years ago
Grigorii Latyshev a7c953b318 Display 0 chance for spell if player does not have enought magic energy 7 years ago
David Cernat 2373be9735
Merge pull request #345 from OpenMW/master
Add OpenMW commits up to 23 Nov 2017
7 years ago
Andrei Kortunov 94c0e3ed10 Move toUpper() from StringUtils to the JournalViewModel 7 years ago
Andrei Kortunov 4f190bf7f4 Do not show carriage return characters (bug #3696) 7 years ago
Andrei Kortunov 4d384889af Fix the Topics button position if the Tribunal is not installed 7 years ago
David Cernat 656453725b
Merge pull request #343 from OpenMW/master
Add OpenMW commits up to 23 Nov 2017
7 years ago
David Cernat 6668b9ab42 [General] Implement ConsoleCommand packet 7 years ago
Andrei Kortunov 86a17b1e3e Get rid of the redundant Utf8Stream when during journal index creation 7 years ago
Andrei Kortunov 3571f7f413 Remove getEncoding() from WindowManager 7 years ago
Andrei Kortunov 5f41f7c48d Clean code up a bit 7 years ago
Andrei Kortunov ba91cd658b Convert topic name to Unicode 7 years ago
Andrei Kortunov f0ca3eabd3 Merge from upstream master 7 years ago
Andrei Kortunov a83a43e376 Determine when need to use the Cyrillic journal index 7 years ago
scrawl 719255c5c6
Merge pull request #1557 from akortunov/journalfix
[Feedback needed] Handle 128px Tx_menubook_topics textures
7 years ago
Andrei Kortunov ce5bdd6361 Split the JournalBooks::createTopicIndexBook() 7 years ago
Andrei Kortunov a391990f2a Provide multibyte toLower() and single chars comparator 7 years ago
Andrei Kortunov 4dcaf040e6 A Russian journal index 7 years ago
Andrei Kortunov 60d0c83cca Handle 128px Tx_menubook_topics textures 7 years ago
Miloslav Číž ea2bbce68a Fix memory leak in WindowManager 7 years ago
Miloslav Číž 3ae5310567 use loading screen to freeze the screen 7 years ago
David Cernat 5aff515d3f
Merge pull request #337 from OpenMW/master
Add OpenMW commits up to 15 Nov 2017
7 years ago
scrawl 7c5d2a1ac4 Update dialogue topics list after result script is run
Regression from 0.42.
7 years ago
David Cernat 2ba1c84cf7 Merge pull request #335 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwgui/container.cpp
7 years ago
scrawl 98b4f9c596
Merge pull request #1549 from akortunov/itemmodels
Item models reworking
7 years ago
Andrei Kortunov 03f129b53c remove redundant allowedToInsertItems() function from ItemModel 7 years ago
Andrei Kortunov 99517d83ea Bound items detection refactoring 7 years ago
Andrei Kortunov a02124f884 Handle item owners during pickpocketing 7 years ago
Andrei Kortunov 3694b6ec90 Move onClose() check to item models 7 years ago
Andrei Kortunov ac33ff9482 Move onDropItem() check to item models 7 years ago
Andrei Kortunov 3604b73d60 Move onTakeItem() to item models 7 years ago
David Cernat f2a6957e16 Merge pull request #331 from OpenMW/master while resolving conflicts 7 years ago
scrawl e42bd71081 Add missing WaitDialog::clear() (Fixes #4196) 7 years ago
scrawl e6303c578c
Merge pull request #1530 from rexelion/curseitemfix
Trigger OnActivate when item is picked up through the inventory (Issue #3726)
7 years ago
rexelion 8c2cc0f42f break invisibility first 7 years ago
rexelion bcbfa5fe1e prevent activation, leave the rest to the script 7 years ago
rexelion a9e5e19482 OnActivate is triggered when the item is picked up 7 years ago
David Cernat a31d43965f
Merge pull request #328 from OpenMW/master
Add OpenMW commits up to 31 Oct 2017
7 years ago
rexelion e8743f3f79 check the presence of OnActivate using the SuppressActivate flag instead of looking for keywords 7 years ago
Miloslav Číž 3c65bdaf14 weapon cycle fix 7 years ago
rexelion 4e6f53d6f1 item added to the player and OnActivate is triggered when the inventory is closed 7 years ago
David Cernat 50d5fffb7f [General] Add and implement PlayerQuickKeys packet 7 years ago
David Cernat dd25c7db4e Merge pull request #324 from OpenMW/master
Add OpenMW commits up to 24 Oct 2017
7 years ago
scrawl e564dd842e Refactor dialogue responses to make sure messages from scripts are printer afterwards, not before the dialogue response (Fixes #4166)
Don't delete Link objects prematurely (Fixes #4171)
7 years ago
scrawl 2a0b2c4e24 Hide modal window before deleting it (Fixes #4168) 7 years ago
David Cernat 360cf2ead7 Merge pull request #321 from OpenMW/master
Add OpenMW commits up to 22 Oct 2017
7 years ago
scrawl 8b19a8b7f6 Merge pull request #1513 from lukago/feature4082b
Feature #4082: use many ingredients/potions instantly
7 years ago
David Cernat 3a9e5e3a7b Merge pull request #319 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwworld/worldimp.hpp
7 years ago
lukago b6cb3b445c use getIndex to handle other windows, nullsafe fixes 7 years ago
Andrei Kortunov eaff7e30aa Fix a 'Good Beast' companion window 7 years ago
lukago a3225364ff refactor, use dragItem method 7 years ago
lukago 43f94a8890 simplify drag and drop on avatar for potions and ingredients 7 years ago
David Cernat e164e6305e Merge pull request #313 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
#	CMakeLists.txt
#	apps/openmw/mwgui/jailscreen.cpp
#	apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
7 years ago
scrawl 03554b2f4b Fix some style issues flagged by cppcheck 7 years ago
scrawl 624046c558 Fix unused event handler 7 years ago
scrawl 548af6dbfb Fix jail screen fading 7 years ago
David Cernat 41ff3fee89 Merge pull request #310 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
7 years ago
scrawl 479f9535b4 Allow training window exit() 7 years ago
scrawl 9cde3e4408 Merge pull request #1495 from akortunov/regressions
Add showsInInventory() check to the ContainerItemModel
7 years ago
Andrei Kortunov ea3729790f Add showsInInventory() check to the ContainerItemModel 7 years ago
David Cernat 711c4d83da [Client] Fix build after recent OpenMW changes to GUI 7 years ago
David Cernat 3e8d7c8416 Merge pull request #306 from OpenMW/master
Add OpenMW commits up to 7 Oct 2017
7 years ago
scrawl 7021d354c6 Merge pull request #1493 from akortunov/regressions
Regression fixes
7 years ago
scrawl 2805781542 Fix a crash when exit() already hides the window (Fixes #4148) 7 years ago
Andrei Kortunov ad27e0f945 Fix owned tooltip in the spellwindow 7 years ago
David Cernat 38247ff086 Merge pull request #303 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwbase/dialoguemanager.hpp
#	apps/openmw/mwdialogue/dialoguemanagerimp.hpp
#	apps/openmw/mwgui/container.cpp
#	apps/openmw/mwgui/windowmanagerimp.cpp
#	apps/openmw/mwscript/dialogueextensions.cpp
7 years ago
scrawl 842a42ee66 Fix non-top level Windows accepting key focus 7 years ago
scrawl cd437f094d Fix exiting savegamedialog with 'esc' when no game is running 7 years ago
scrawl d94235e3a7 Update the saves list/preview image when character selection changes to make it more convenient to flip through characters with the keyboard 7 years ago
scrawl 12510efab7 Fade screen out during loading screen (when travelling) 7 years ago
scrawl a4737d8417 Use MyGUI frame events for ScreenFader 7 years ago
scrawl e4f0f7157a Fix pinned windows not being updated 7 years ago
scrawl 49a0922f1b Remove 'visibility mask' gui feature which did not end up being useful 7 years ago
scrawl 7c68ed04b2 Don't require modal windows to be removed in the same order they were added 7 years ago
scrawl b5c9977a7b Merge pull request #1489 from akortunov/guifixes
Use an "owned crosshair" feature for items in containers
7 years ago
Andrei Kortunov 1cb7ed5db1 Use owned tooltips for items in containers correctly 7 years ago
scrawl 433028e8d7 Fix GUI regressions 7 years ago
scrawl 302e3c8b3d Merge pull request #1486 from akortunov/pickpocketfix
Fix some issues with pickpocketing (bug #4131)
7 years ago
Andrei Kortunov 34895157f9 Consider taking items from unconscious NPC as a theft 7 years ago
Andrei Kortunov 04452b0949 Use a pickpocket crime instead of theft when pickpocketing was failed 7 years ago
scrawl 3c62a8c5c2 Fix console selected object persisting on a new game 7 years ago
scrawl 097b9d90bc Fix travel service not showing 7 years ago
scrawl 5b10e3128e Use first resolution in fullscreen if current is not supported (Fixes #4113) 7 years ago
scrawl 64e27c032b Merge pull request #1481 from scrawl/keyfocus
WindowManager overhaul & improved keyboard support
7 years ago
scrawl 7bb0a76df2 Fix tooltips showing when cursor isn't visible 7 years ago
scrawl 14c9e858c8 Check to make sure button is enabled 7 years ago
scrawl 6ec66fa95f Restore keyfocus to goodbye when selecting a topic 7 years ago
scrawl 0ae009eb21 Hide message box before deleting it
Fixes a crash when closing the game window during the 'plugin mismatch' dialog. Modal windows have to be hidden before they are deleted to prevent a dangling pointer in WindowManager.
7 years ago
scrawl d53e7f8a3c Remove redundant code
Already worked around in WindowBase::setVisible
7 years ago
scrawl 0deda69a27 Fix wrong skin for levelup attribute values 7 years ago
scrawl e9d81fdf5a Fix being able to escape interactive messageboxes 7 years ago
scrawl db650df416 Fix 'blocking' messageboxes not handling key focus properly 7 years ago
scrawl a0f5e32113 Fix 'new game' from the main menu not removing menu afterwards 7 years ago
scrawl 0ee57effcc Make 'Delete game' button not accept keyfocus, to prevent accidents 7 years ago
scrawl c7a82704c6 Fix key focus resets in SaveGameDialog 7 years ago
scrawl 3d2ad2d339 Include cleanup 7 years ago
scrawl 87311d86b5 Fix what looks like a copy/paste error 7 years ago
scrawl 7a3fbfb34a Slightly improve journal window keyboard navigation 7 years ago
scrawl 05814c0929 Add key focus handling for WaitDialog
Default is 'until healed'. Up/Down arrows change the hour slider and implicitely change the button to 'Wait'.
7 years ago