1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-20 05:53:50 +00:00
Commit graph

2752 commits

Author SHA1 Message Date
Capostrophic
cddc0914c8 Option to charge for all companions travelling (fixes #4064) 2018-04-09 19:19:50 +03:00
David Cernat
d8b48f6cf4 [Client] Remove redundant container methods from CellController 2018-04-01 07:11:43 +03:00
David Cernat
ac82124a5d Merge pull request #395 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/actors.cpp
2018-03-29 07:28:30 +03:00
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.
2018-03-26 19:27:36 +03:00
David Cernat
bb15ee9215 [Client] Make it possible to get ContainerWindow from elsewhere in code 2018-03-24 09:00:15 +02:00
scrawl
edb57306b6
Merge pull request #1628 2018-03-16 23:25:29 +00:00
elsid
a26483ab26 Fix memory leak
There is no delete for TextFormat objects in PageDisplay destructor.
2018-03-13 21:32:59 +03:00
Andrei Kortunov
e0aa5e8e79 Prevent overlapping for journal and books scrolling 2018-03-11 16:19:37 +04:00
David Cernat
b7c6261e16 Merge pull request #392 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
2018-03-09 21:07:46 +02:00
scrawl
e81faf5f2f
Add an option to disable GUI keyboard navigation (Bug #4333) 2018-03-08 23:39:35 +00:00
scrawl
870c658500
Remove missing souls, remove some runaway exceptions (Fixes #4111) 2018-03-08 23:38:04 +00:00
scrawl
bf78c18296
Merge pull request #1624 2018-03-07 18:12:32 +00:00
Capostrophic
3b922d810a Don't use floating point arithmetics for formatted count (Bug #4346) 2018-03-07 15:36:10 +03:00
Capostrophic
60a663ef58 Account for all possible count values in getCountString (Bug #4346) 2018-03-06 16:50:38 +03:00
David Cernat
c18d07827d [Client] Hide difficulty widget because it has no use in multiplayer 2018-03-01 09:31:21 +02:00
David Cernat
9e10eb9c84
Merge pull request #389 from OpenMW/master
Add OpenMW commits up to 24 Feb 2018
2018-02-25 22:05:32 +02:00
David Cernat
03266d7648 [Client] Prevent guards from arresting players who are currently jailed 2018-02-25 21:33:04 +02:00
Miloslav Číž
db6107f12f
Merge branch 'master' into screenshot360 2018-02-25 11:25:19 +01:00
Capostrophic
089666dd68
Round up displayed encumbrance 2018-02-24 15:13:14 +03:00
David Cernat
53d758ba16
Merge pull request #385 from OpenMW/master
Add OpenMW commits up to 13 Feb 2018
2018-02-13 05:22:41 +02:00
scrawl
123f7b83d5
Make the CompositeMapRenderer use available time and add related setting 2018-02-13 00:40:41 +00:00
David Cernat
74765b3ace [General] Implement selected spell sync as part of PlayerMiscellaneous 2018-02-06 06:36:46 +02:00
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".
2018-01-28 17:46:51 +02:00
David Cernat
5d4b97645d Merge pull request #374 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/CMakeLists.txt
2018-01-27 22:52:59 +02:00
David Cernat
e3bc11d9eb [Client] Fix ListBox overlap crashes by removing ListBoxes properly 2018-01-27 15:41:11 +02:00
David Cernat
5894ffae7d [Client] Ignore dynamic object placements or spawns in packets 2018-01-17 11:01:31 +02:00
David Cernat
f746958afa [Client] Send enchantmentCharge for items added or removed in containers 2018-01-17 08:10:49 +02:00
scrawl
2caaa48b91
Workaround to make sure message box remains on top (Fixes #4298) 2018-01-14 00:27:53 +00:00
David Cernat
4caf7ca30a [Client] Add temporary fix for crashes caused by custom GUI elements 2018-01-06 20:16:32 +02:00
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).
2017-12-26 15:04:28 +02:00
David Cernat
cac2c6c1e8 Merge pull request #360 from TES3MP/0.6.1-openmw-updates while resolving conflicts 2017-12-25 02:25:01 +02:00
David Cernat
ecb0ad0d77 Merge pull request #359 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
2017-12-25 02:03:02 +02:00
David Cernat
535fba0cb3 [Client] Finish drag and drops when arrested or teleported by server 2017-12-16 07:21:02 +02:00
David Cernat
ebf88d12a3 [Client] Send PlayerInventory packet after buying skill training 2017-12-13 05:46:48 +02:00
David Cernat
0ad9c99cf4 [Client] Send PlayerInventory packet after completing a vendor trade 2017-12-12 15:18:56 +02:00
Andrei Kortunov
29b2308b2c Do not display cyrillic soft/hard signs in the journal index 2017-12-04 22:42:17 +04:00
David Cernat
07f0cc2b0e
Merge pull request #353 from OpenMW/master
Add OpenMW commits up to 4 Dec 2017
2017-12-04 04:38:38 +02:00
scrawl
ff1226c96b
Merge pull request #1575 2017-12-03 22:22:29 +00:00
Andrei Kortunov
8decd35607 Fixes crash on quickload from the container menu (bug #4239) 2017-12-03 21:49:13 +04:00
David Cernat
e7f20e7daf Merge pull request #351 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
#	README.md
2017-11-30 10:06:38 +02:00
scrawl
47a5229eed
Merge pull request #1564 2017-11-29 22:10:36 +00:00
David Cernat
22521578eb
Merge pull request #349 from OpenMW/master
Add OpenMW commits up to 28 Nov 2017
2017-11-29 03:52:15 +02:00
Grigorii Latyshev
2abb1a2ec2 Added checkMagicka parameter 2017-11-28 23:35:54 +01:00
Grigorii Latyshev
ce32462358 Move code to apps/openmw/mwmechanics/spellcasting.cpp, move reduce mana code to CastSpell::cast(const ESM::Spell*) 2017-11-26 13:58:04 +01:00
scrawl
88ec6179ff
Merge pull request #1566 from akortunov/guifixes
Set default values for class and birthsign select menus
2017-11-25 22:58:40 +00:00
Andrei Kortunov
55db3c2712 Set default values for class and birthsign select menus (bug #4226) 2017-11-25 11:35:29 +04:00
David Cernat
d06817a356
Merge pull request #347 from OpenMW/master
Add OpenMW commits up to 25 Nov 2017
2017-11-25 08:54:22 +02:00
Grigorii Latyshev
32096ae0cc Fix displayed spell success chance in God Mode 2017-11-25 01:47:18 +01:00
scrawl
665ca5b2d5
Merge pull request #1558 from akortunov/rusjournal
Cyrillic journal index (bug #2485)
2017-11-24 23:17:28 +00:00
scrawl
8226c8dc92
Merge pull request #1560 from akortunov/guifixes
Fix the Topics button position if the Tribunal is not installed
2017-11-24 23:16:33 +00:00
Grigorii Latyshev
a7c953b318 Display 0 chance for spell if player does not have enought magic energy 2017-11-24 15:06:07 +01:00
David Cernat
2373be9735
Merge pull request #345 from OpenMW/master
Add OpenMW commits up to 23 Nov 2017
2017-11-24 05:46:53 +02:00
Andrei Kortunov
94c0e3ed10 Move toUpper() from StringUtils to the JournalViewModel 2017-11-23 19:37:45 +04:00
Andrei Kortunov
4f190bf7f4 Do not show carriage return characters (bug #3696) 2017-11-23 14:58:20 +04:00
Andrei Kortunov
4d384889af Fix the Topics button position if the Tribunal is not installed 2017-11-23 10:14:45 +04:00
David Cernat
656453725b
Merge pull request #343 from OpenMW/master
Add OpenMW commits up to 23 Nov 2017
2017-11-23 04:51:13 +02:00
David Cernat
6668b9ab42 [General] Implement ConsoleCommand packet 2017-11-23 00:21:47 +02:00
Andrei Kortunov
86a17b1e3e Get rid of the redundant Utf8Stream when during journal index creation 2017-11-22 09:06:54 +04:00
Andrei Kortunov
3571f7f413 Remove getEncoding() from WindowManager 2017-11-22 08:32:38 +04:00
Andrei Kortunov
5f41f7c48d Clean code up a bit 2017-11-21 13:03:38 +04:00
Andrei Kortunov
ba91cd658b Convert topic name to Unicode 2017-11-21 12:31:23 +04:00
Andrei Kortunov
f0ca3eabd3 Merge from upstream master 2017-11-21 09:39:54 +04:00
Andrei Kortunov
a83a43e376 Determine when need to use the Cyrillic journal index 2017-11-21 09:32:35 +04:00
scrawl
719255c5c6
Merge pull request #1557 from akortunov/journalfix
[Feedback needed] Handle 128px Tx_menubook_topics textures
2017-11-20 23:07:18 +00:00
Andrei Kortunov
ce5bdd6361 Split the JournalBooks::createTopicIndexBook() 2017-11-20 22:25:53 +04:00
Andrei Kortunov
a391990f2a Provide multibyte toLower() and single chars comparator 2017-11-20 21:30:46 +04:00
Andrei Kortunov
4dcaf040e6 A Russian journal index 2017-11-20 19:37:24 +04:00
Andrei Kortunov
60d0c83cca Handle 128px Tx_menubook_topics textures 2017-11-20 17:39:28 +04:00
Miloslav Číž
ea2bbce68a Fix memory leak in WindowManager 2017-11-18 19:27:09 +01:00
Miloslav Číž
3ae5310567 use loading screen to freeze the screen 2017-11-16 22:08:33 +01:00
David Cernat
5aff515d3f
Merge pull request #337 from OpenMW/master
Add OpenMW commits up to 15 Nov 2017
2017-11-16 08:49:56 +02:00
scrawl
7c5d2a1ac4 Update dialogue topics list after result script is run
Regression from 0.42.
2017-11-15 17:20:06 +00:00
David Cernat
2ba1c84cf7 Merge pull request #335 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwgui/container.cpp
2017-11-12 06:35:15 +02:00
scrawl
98b4f9c596
Merge pull request #1549 from akortunov/itemmodels
Item models reworking
2017-11-11 22:12:07 +00:00
Andrei Kortunov
03f129b53c remove redundant allowedToInsertItems() function from ItemModel 2017-11-11 11:58:22 +04:00
Andrei Kortunov
99517d83ea Bound items detection refactoring 2017-11-11 11:58:22 +04:00
Andrei Kortunov
a02124f884 Handle item owners during pickpocketing 2017-11-11 11:58:18 +04:00
Andrei Kortunov
3694b6ec90 Move onClose() check to item models 2017-11-10 10:58:43 +04:00
Andrei Kortunov
ac33ff9482 Move onDropItem() check to item models 2017-11-10 10:58:43 +04:00
Andrei Kortunov
3604b73d60 Move onTakeItem() to item models 2017-11-10 10:58:40 +04:00
David Cernat
f2a6957e16 Merge pull request #331 from OpenMW/master while resolving conflicts 2017-11-10 08:43:50 +02:00
scrawl
e42bd71081 Add missing WaitDialog::clear() (Fixes #4196) 2017-11-08 00:24:04 +00:00
scrawl
e6303c578c
Merge pull request #1530 from rexelion/curseitemfix
Trigger OnActivate when item is picked up through the inventory (Issue #3726)
2017-11-05 15:35:39 +00:00
rexelion
8c2cc0f42f break invisibility first 2017-11-04 00:44:16 +00:00
rexelion
bcbfa5fe1e prevent activation, leave the rest to the script 2017-11-04 00:38:33 +00:00
rexelion
a9e5e19482 OnActivate is triggered when the item is picked up 2017-10-31 22:33:26 +00:00
David Cernat
a31d43965f
Merge pull request #328 from OpenMW/master
Add OpenMW commits up to 31 Oct 2017
2017-10-31 06:22:57 +02:00
rexelion
e8743f3f79 check the presence of OnActivate using the SuppressActivate flag instead of looking for keywords 2017-10-30 21:16:25 +00:00
Miloslav Číž
3c65bdaf14 weapon cycle fix 2017-10-30 18:05:45 +01:00
rexelion
4e6f53d6f1 item added to the player and OnActivate is triggered when the inventory is closed 2017-10-29 11:45:17 +00:00
David Cernat
50d5fffb7f [General] Add and implement PlayerQuickKeys packet 2017-10-25 07:21:00 +03:00
David Cernat
dd25c7db4e Merge pull request #324 from OpenMW/master
Add OpenMW commits up to 24 Oct 2017
2017-10-24 19:36:14 +03:00
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)
2017-10-23 23:33:06 +00:00
scrawl
2a0b2c4e24 Hide modal window before deleting it (Fixes #4168) 2017-10-23 23:33:05 +00:00
David Cernat
360cf2ead7 Merge pull request #321 from OpenMW/master
Add OpenMW commits up to 22 Oct 2017
2017-10-23 14:51:29 +03:00
scrawl
8b19a8b7f6 Merge pull request #1513 from lukago/feature4082b
Feature #4082: use many ingredients/potions instantly
2017-10-22 20:51:14 +00:00
David Cernat
3a9e5e3a7b Merge pull request #319 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwworld/worldimp.hpp
2017-10-22 20:27:44 +03:00
lukago
b6cb3b445c use getIndex to handle other windows, nullsafe fixes 2017-10-21 23:34:57 +02:00
Andrei Kortunov
eaff7e30aa Fix a 'Good Beast' companion window 2017-10-21 16:56:21 +04:00
lukago
a3225364ff refactor, use dragItem method 2017-10-19 17:43:27 +02:00
lukago
43f94a8890 simplify drag and drop on avatar for potions and ingredients 2017-10-19 16:50:04 +02:00
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
2017-10-16 07:37:29 +03:00
scrawl
03554b2f4b Fix some style issues flagged by cppcheck 2017-10-15 17:06:58 +02:00
scrawl
624046c558 Fix unused event handler 2017-10-15 17:06:58 +02:00
scrawl
548af6dbfb Fix jail screen fading 2017-10-14 14:03:16 +00:00
David Cernat
41ff3fee89 Merge pull request #310 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
2017-10-09 14:41:55 +03:00
scrawl
479f9535b4 Allow training window exit() 2017-10-08 20:38:20 +00:00
scrawl
9cde3e4408 Merge pull request #1495 from akortunov/regressions
Add showsInInventory() check to the ContainerItemModel
2017-10-08 14:09:59 +00:00
Andrei Kortunov
ea3729790f Add showsInInventory() check to the ContainerItemModel 2017-10-08 09:20:07 +04:00
David Cernat
711c4d83da [Client] Fix build after recent OpenMW changes to GUI 2017-10-07 23:33:36 +03:00
David Cernat
3e8d7c8416 Merge pull request #306 from OpenMW/master
Add OpenMW commits up to 7 Oct 2017
2017-10-07 21:54:21 +03:00
scrawl
7021d354c6 Merge pull request #1493 from akortunov/regressions
Regression fixes
2017-10-06 16:21:16 +00:00
scrawl
2805781542 Fix a crash when exit() already hides the window (Fixes #4148) 2017-10-06 16:18:57 +00:00
Andrei Kortunov
ad27e0f945 Fix owned tooltip in the spellwindow 2017-10-06 11:38:27 +04:00
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
2017-10-06 04:10:04 +03:00
scrawl
842a42ee66 Fix non-top level Windows accepting key focus 2017-10-05 18:41:02 +02:00
scrawl
cd437f094d Fix exiting savegamedialog with 'esc' when no game is running 2017-10-05 18:35:09 +02:00
scrawl
d94235e3a7 Update the saves list/preview image when character selection changes to make it more convenient to flip through characters with the keyboard 2017-10-04 16:00:39 +00:00
scrawl
12510efab7 Fade screen out during loading screen (when travelling) 2017-10-04 16:00:38 +00:00
scrawl
a4737d8417 Use MyGUI frame events for ScreenFader 2017-10-04 16:00:38 +00:00
scrawl
e4f0f7157a Fix pinned windows not being updated 2017-10-04 16:00:37 +00:00
scrawl
49a0922f1b Remove 'visibility mask' gui feature which did not end up being useful 2017-10-04 16:00:37 +00:00
scrawl
7c68ed04b2 Don't require modal windows to be removed in the same order they were added 2017-10-04 16:00:37 +00:00
scrawl
b5c9977a7b Merge pull request #1489 from akortunov/guifixes
Use an "owned crosshair" feature for items in containers
2017-10-04 15:59:43 +00:00
Andrei Kortunov
1cb7ed5db1 Use owned tooltips for items in containers correctly 2017-10-04 12:13:45 +04:00
scrawl
433028e8d7 Fix GUI regressions 2017-10-03 22:07:56 +00:00
scrawl
302e3c8b3d Merge pull request #1486 from akortunov/pickpocketfix
Fix some issues with pickpocketing (bug #4131)
2017-10-01 16:05:38 +00:00
Andrei Kortunov
34895157f9 Consider taking items from unconscious NPC as a theft 2017-09-30 20:22:26 +04:00
Andrei Kortunov
04452b0949 Use a pickpocket crime instead of theft when pickpocketing was failed 2017-09-30 20:11:53 +04:00
scrawl
3c62a8c5c2 Fix console selected object persisting on a new game 2017-09-30 15:40:47 +00:00
scrawl
097b9d90bc Fix travel service not showing 2017-09-30 15:40:47 +00:00
scrawl
5b10e3128e Use first resolution in fullscreen if current is not supported (Fixes #4113) 2017-09-29 14:58:25 +00:00
scrawl
64e27c032b Merge pull request #1481 from scrawl/keyfocus
WindowManager overhaul & improved keyboard support
2017-09-28 22:34:05 +00:00
scrawl
7bb0a76df2 Fix tooltips showing when cursor isn't visible 2017-09-28 19:42:16 +02:00
scrawl
14c9e858c8 Check to make sure button is enabled 2017-09-28 17:00:07 +00:00
scrawl
6ec66fa95f Restore keyfocus to goodbye when selecting a topic 2017-09-28 16:57:55 +00:00
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.
2017-09-27 22:19:42 +02:00
scrawl
d53e7f8a3c Remove redundant code
Already worked around in WindowBase::setVisible
2017-09-27 22:07:49 +02:00
scrawl
0deda69a27 Fix wrong skin for levelup attribute values 2017-09-27 22:04:36 +02:00
scrawl
e9d81fdf5a Fix being able to escape interactive messageboxes 2017-09-27 22:00:20 +02:00
scrawl
db650df416 Fix 'blocking' messageboxes not handling key focus properly 2017-09-27 21:41:22 +02:00
scrawl
a0f5e32113 Fix 'new game' from the main menu not removing menu afterwards 2017-09-27 21:38:15 +02:00
scrawl
0ee57effcc Make 'Delete game' button not accept keyfocus, to prevent accidents 2017-09-27 12:56:12 +00:00
scrawl
c7a82704c6 Fix key focus resets in SaveGameDialog 2017-09-27 12:56:11 +00:00
scrawl
3d2ad2d339 Include cleanup 2017-09-27 12:56:09 +00:00
scrawl
87311d86b5 Fix what looks like a copy/paste error 2017-09-27 12:56:08 +00:00
scrawl
7a3fbfb34a Slightly improve journal window keyboard navigation 2017-09-27 12:56:05 +00:00
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'.
2017-09-27 12:56:03 +00:00
scrawl
8964fc93d6 Fix dialogue window not being exited properly 2017-09-27 12:56:02 +00:00
scrawl
7a64098da3 Avoid rebuilding the dialogue topics pane unnecessarily
Also retaining key focus.
2017-09-27 12:56:02 +00:00