Commit graph

9667 commits

Author SHA1 Message Date
David Cernat
344f2b535a Fix setting of index for ID_SCRIPT_MEMBER_SHORT in InterpreterContext 2016-10-27 15:02:40 +03:00
David Cernat
fff6833950 Send ID_SCRIPT_MEMBER_SHORT from MWScript::InterpreterContext 2016-10-27 02:18:27 +03:00
David Cernat
d5fca115f7 Fix variable name for ID_SCRIPT_GLOBAL_SHORT in InterpreterContext 2016-10-27 02:17:06 +03:00
David Cernat
c205e793cb Add and implement ID_SCRIPT_MEMBER_SHORT 2016-10-27 00:41:14 +03:00
David Cernat
c91e240664 Simplify the type of map that player objects are stored in 2016-10-26 21:36:58 +03:00
David Cernat
65363b0dd1 Avoid sending packets for 9 more ingame scripts 2016-10-26 21:33:13 +03:00
David Cernat
a9f6ea4d8d Use the name "guid" for RakNet IDs so as to not confuse with int IDs 2016-10-26 15:55:34 +03:00
David Cernat
47854d631b Avoid sending packets for 2 more ingame scripts 2016-10-26 15:24:53 +03:00
David Cernat
c99c3b1486 Avoid sending packets for 3 additional spammy ingame scripts 2016-10-26 12:43:26 +03:00
David Cernat
749c6db49e Send WorldPackets with script values from MWScript::InterpreterContext 2016-10-26 12:29:32 +03:00
David Cernat
97468980af Add and implement 3 new WorldPackets for ingame script variable values 2016-10-26 12:25:50 +03:00
Assumeru
25d64989b3 Check if the actor still exists /first/ 2016-10-26 11:04:54 +02:00
David Cernat
e7ebeb8eec Stop sending ID_OBJECT_MOVE and ID_OBJECT_ROTATE from scripts, because it clashes with syncing script variable values across players and makes movements and rotations happen twice 2016-10-26 10:01:55 +03:00
David Cernat
75f6d82f08 Add a way of filtering out ingame scripts for upcoming script packets 2016-10-25 22:44:15 +03:00
Assumeru
a72cd896ca Move actors out of the water if there's room for them. Fixes #1138 2016-10-25 19:26:17 +02:00
David Cernat
aaf4cc0d7e Prevent being in a menu from disabling script execution or actor damage 2016-10-25 17:48:00 +03:00
David Cernat
cc40b85034 Don't send packets for floating objects 2016-10-25 16:30:31 +03:00
David Cernat
b1051255e0 Send ID_OBJECT_ROTATE from ingame scripts 2016-10-25 14:42:54 +03:00
David Cernat
385b5f39e3 Add and implement ID_OBJECT_ROTATE 2016-10-25 14:28:39 +03:00
David Cernat
54ed9a7ab4 Implement ID_OBJECT_MOVE and send it from ingame scripts 2016-10-25 14:07:00 +03:00
David Cernat
c25ebc34b3 Shorten WorldPacket IDs by removing WORLD from them 2016-10-25 12:15:27 +03:00
David Cernat
bdb53e1cb4 Implement ID_WORLD_DOOR_ACTIVATE and send it from MWBase::World 2016-10-25 10:40:55 +03:00
David Cernat
7264f13b8e Implement ID_WORLD_OBJECT_SCALE and send it from ingame scripts 2016-10-25 00:52:42 +03:00
David Cernat
b2688777c1 Create marker once a player has been initialized properly and fix debug 2016-10-24 21:08:47 +03:00
David Cernat
be73265848 Send ID_WORLD_VIDEO_PLAY from ingame scripts 2016-10-24 17:55:10 +03:00
David Cernat
b6111d16cc Add and implement ID_WORLD_VIDEO_PLAY 2016-10-24 17:52:19 +03:00
David Cernat
c54af2b02b Make DedicatedPlayer's setMarkerState method actually enable markers 2016-10-24 16:26:51 +03:00
David Cernat
1e4d625c99 Make player markers show up in exterior cells 2016-10-24 15:29:10 +03:00
David Cernat
04eb051df6 Make markers get removed when their players quit, rename marker methods 2016-10-24 15:10:32 +03:00
David Cernat
aed884949c Send ID_WORLD_OBJECT_LOCK from ingame scripts 2016-10-24 13:22:46 +03:00
David Cernat
3fd93896f2 Add and implement ID_WORLD_OBJECT_LOCK 2016-10-24 13:20:04 +03:00
David Cernat
3a5a5e73a1 Send ID_WORLD_OBJECT_UNLOCK from ingame scripts and regular unlocking 2016-10-24 11:43:27 +03:00
David Cernat
08ea5163c4 Add and implement ID_WORLD_OBJECT_UNLOCK 2016-10-24 11:26:31 +03:00
David Cernat
94c5d6d2f9 Don't use autoEquip on player-controlled NPCs 2016-10-24 11:15:09 +03:00
David Cernat
47ebd24b4a Merge pull request #79 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
#	apps/openmw/mwinput/inputmanagerimp.cpp
2016-10-24 09:18:21 +03:00
David Cernat
a6fa0073a0 Find items by mRefNum.mIndex instead of mRefNum for WorldPackets 2016-10-23 23:13:42 +03:00
David Cernat
6bfaf3be50 Send an ID_WORLD_OBJECT_PLACE whenever ingame scripts place objects 2016-10-23 20:48:24 +03:00
David Cernat
e7567020bb Fix debug for ID_WORLD_OBJECT_DELETE in client's Networking 2016-10-23 19:10:21 +03:00
David Cernat
d85a1ee1a9 Fix errors remaining from merge with tes3mp-packetexpansion 2016-10-23 18:32:03 +03:00
David Cernat
c639337842 Merge with tes3mp-packetexpansion by fixing conflicts
# Conflicts:
#	apps/openmw-mp/Networking.cpp
#	apps/openmw/mwmp/Networking.cpp
#	components/CMakeLists.txt
#	components/openmw-mp/NetworkMessages.hpp
#	components/openmw-mp/PacketsController.cpp
2016-10-23 17:57:38 +03:00
David Cernat
025a847fd1 Send an ID_WORLD_OBJECT_DELETE whenever ingame scripts delete objects 2016-10-23 17:03:47 +03:00
David Cernat
0a44bea91d Send cell coordinates in tes3mp using mData instead of mCellId.mIndex 2016-10-23 16:55:30 +03:00
David Cernat
cbc132612a Use mRefNum.mIndex instead of just mRefNum and add extra debug 2016-10-23 16:33:53 +03:00
David Cernat
17f66e4e90 Implement ID_WORLD_OBJECT_PLACE 2016-10-23 13:30:32 +03:00
Koncord
df3886168f Word wrapping in chat 2016-10-23 14:33:43 +08:00
Koncord
c27351c19e Implement inventory functions
AddItem, RemoveItem, GetItemName, GetItemCount, GetItemHealth, GetInventorySize SendInventory
Example:
```lua
tes3mp.AddItem(pid, "glass dagger", 1, 50)
tes3mp.AddItem(pid, "glass dagger", 1, -1)
tes3mp.SendInventory(pid)
tes3mp.RemoveItem(pid, "glass dagger", 1)
tes3mp.SendInventory(pid)
local invSize = tes3mp.GetInventorySize(pid) - 1
for i = 0, invSize do
    print(("%s %d %d"):format(tes3mp.GetItemName(pid, i), tes3mp.GetItemCount(pid, i), tes3mp.GetItemHealth(pid, i)))
end
```
2016-10-23 02:57:49 +08:00
David Cernat
6e43baf73e Send Cell instead of CellId because of problems with the latter 2016-10-22 20:09:13 +03:00
David Cernat
103b1e3f72 Send CellId in ID_WORLD_OBJECT_DELETE 2016-10-22 18:44:13 +03:00
David Cernat
2e57e25675 Only delete object from ID_WORLD_OBJECT_DELETE if it actually exists 2016-10-22 18:19:57 +03:00
David Cernat
3c49157ed7 Rename WorldPackets to ID_WORLD_OBJECT_DELETE and ID_WORLD_OBJECT_PLACE 2016-10-22 18:05:32 +03:00
David Cernat
40f1db2d86 Create SearchByRefNumCustomVisitor in CellStore that returns entire Ptr 2016-10-22 17:47:21 +03:00
David Cernat
b3d6dad0c5 Send ID_WORLD_OBJECT_REMOVAL from actiontake.cpp and not worldimp.cpp 2016-10-22 17:10:57 +03:00
David Cernat
cc98a25dcf Add searchByRefNum method to OpenMW's CellStore 2016-10-22 16:47:11 +03:00
David Cernat
92463c4a03 Fix Windows server crash caused by printing event->CellRef()->mRefID 2016-10-22 14:13:16 +03:00
David Cernat
8080cceac6 Add some placeholder code so Stanislav can test it 2016-10-22 12:45:19 +03:00
Stanislav Zhukov
81dfd21d9a Merge pull request #76 from TES3MP/tes3mp-minimap
Show dedicated players on minimap
2016-10-22 17:21:02 +08:00
Koncord
b704519078 Show dedicated players on minimap 2016-10-22 17:06:26 +08:00
David Cernat
565e7e4b9f Create and implement placeholder for ID_WORLD_OBJECT_CREATION 2016-10-21 21:57:05 +03:00
David Cernat
32dc8cf63f Read contents of ID_WORLD_OBJECT_REMOVAL on client 2016-10-21 20:44:15 +03:00
David Cernat
36f218876a Add ProcessPlayerPacket and ProcessWorldPacket to client's Networking 2016-10-21 19:23:56 +03:00
David Cernat
ac666edebd Add a CellRef to WorldEvent 2016-10-20 22:15:47 +03:00
David Cernat
b2845cd17c Create and start using WorldEvent class 2016-10-20 14:28:19 +03:00
David Cernat
a42d5f2429 Make client send placeholder ID_WORLD_OBJECT_REMOVAL to server 2016-10-20 12:53:48 +03:00
MiroslavR
301dd77efb Save controls state (Fixes #3598) 2016-10-20 02:12:01 +02:00
MiroslavR
407abc605f Fix auto-equipping of blunt weapons 2016-10-19 22:37:45 +02:00
David Cernat
f218613231 Rename client Networking's GetPacket method into GetPlayerPacket 2016-10-19 22:49:35 +03:00
David Cernat
e27d1857ef Fix formatting in previous changes made by tes3mp to OpenMW's core 2016-10-19 22:06:11 +03:00
scrawl
9c549a85ce Merge pull request #1108 from MiroslavR/autoequip-weap
Auto-equip weapons
2016-10-19 20:45:47 +02:00
David Cernat
790d41e278 Move PlayerPackets into their own subfolder 2016-10-19 19:37:10 +03:00
David Cernat
d2212ef80b Rename PacketsController into PlayerPacketController 2016-10-19 16:31:07 +03:00
MiroslavR
76ddd9bebb Add a setting for merchant auto-equipping prevention 2016-10-19 02:22:49 +02:00
scrawl
a7d4928593 Properly handle moved references in respawning code (Fixes #3600) 2016-10-18 23:51:45 +02:00
MiroslavR
1d3008594d Autoequip weapons (Fixes #3562) 2016-10-18 13:57:35 +02:00
David Cernat
b8f4cb94fb Rename BasePacket into PlayerPacket 2016-10-17 15:54:36 +03:00
MiroslavR
14240cf7a2 Fix autoEquip to better match vanilla (Fixes #3590) 2016-10-16 17:27:17 +02:00
MiroslavR
7b59eda13a Import base weather states before loading region modifiers (Fixes #3594) 2016-10-15 17:34:03 +02:00
scrawl
9e63c3ce63 Merge pull request #1103 from Allofich/warnings
Fix shadowing warnings
2016-10-14 21:18:12 +02:00
scrawl
5ccbabc27d Fix build against bullet with profiler disabled (Fixes #3592) 2016-10-14 21:00:35 +02:00
David Cernat
3136a12051 Resolve conflicts in pull request #75
# Conflicts:
#	CMakeLists.txt
#	apps/openmw/CMakeLists.txt
2016-10-14 18:34:17 +03:00
Allofich
1c54f54ab8 Fix shadowing warnings 2016-10-15 00:12:46 +09:00
scrawl
2ed0277839 Merge pull request #1102 from Allofich/spells
Change several spell effects from instant to non-instant
2016-10-13 21:36:14 +02:00
scrawl
9d2e0124dc Revert "Fix the cell changed flag no longer being reset after the player dies"
This reverts commit d7acec74fd.
2016-10-13 17:44:03 +02:00
Allofich
610f36f47b Set magic effects that don't support variable durations to use duration of 1 2016-10-14 00:13:08 +09:00
Allofich
1c2e04747d Remove stray line 2016-10-13 23:38:21 +09:00
Allofich
675bd09462 Change several instant effects to be non-instant (Fixes #2054) 2016-10-13 23:38:21 +09:00
scrawl
db09858f59 Don't allow the player to activate objects when dead 2016-10-13 14:42:10 +02:00
scrawl
454d1ffaef Make the cell change check during actor update more robust 2016-10-13 14:39:58 +02:00
scrawl
d7acec74fd Fix the cell changed flag no longer being reset after the player dies 2016-10-13 14:38:35 +02:00
scrawl
612c3e995f Add drop shadow to ItemWidget (Fixes #3545) 2016-10-13 01:42:50 +02:00
MiroslavR
611d02ad43 Remove unused code 2016-10-11 22:16:17 +02:00
MiroslavR
1906d96064 Non-player actors emitting light from a non-portable light item should be illuminated (Fixes #3588) 2016-10-11 22:15:51 +02:00
scrawl
3dce155d96 Fix uninitialized variable 2016-10-11 14:50:13 +02:00
MiroslavR
14468262a7 Fix "Not Local" dialog test to also test variable value instead of just its existence (Fixes #3577) 2016-10-11 02:53:43 +02:00
scrawl
530fb61ad0 Use OpenThreads instead of boost thread
This should allow OpenMW to work better with git versions of openscenegraph. OSG dev version 3.5.5 added the setting of thread affinity for the main thread. The problem is that in the boost/standard threading libraries, the affinity of a thread is inherited by any further threads launched from that thread, leading to these threads always running on the same core as the main thread unless you tell them not to.

With OpenThreads, the default affinity of a thread is none, no matter what parent thread it was launched from.

So, when using custom threading with OSG 3.6+, we have these options:
1. explicitely tell OSG to *not* set the thread affinity
or 2. explicitely set the thread affinity of additional threads created (possible with boost, but not possible with std::thread)
or 3. use OpenThreads
or 4. accept the suboptimal performance of non-OSG threads (in OpenMW's case the sound streaming & video threads) running on the same core as the main thread

This patch opts for 3.)

Reference: http://forum.openscenegraph.org/viewtopic.php?t=16158
2016-10-10 18:23:06 +02:00
scrawl
ae2036fa85 Merge pull request #1097 from Allofich/persuasion
Don't let intimidate bring disposition below 0 (Fixes #3584)
2016-10-09 20:20:43 +02:00
Allofich
028db21c8a Don't let disposition at end of dialogue be below 0 (Fixes #3584) 2016-10-10 02:20:24 +09:00
David Cernat
14bac1e533 Make player markers appear on inventory map 2016-10-09 13:41:00 +03:00
David Cernat
07acd7a721 Make player markers work in interiors and make them easier to test 2016-10-09 10:29:30 +03:00
scrawl
1893617ec9 Improvements to ignored light list setting
The pointer to the LightListCallback is now stored in the Animation, which eliminates the need for dynamic_cast. Also, when the object root is recreated, the previously used LightListCallback will be reused, so we no longer need the objectRootReset() notifier.

Finally, there was a bug when saving and reloading the game, the getIgnoredLightSources() were not being set, as the ActorAnimation constructor completes before the NpcAnimation sets the ObjectRoot. This was solved by creating the LightListCallback in advance in the Animation constructor.
2016-10-08 23:59:28 +02:00
MiroslavR
11565b5966 Make actors with non-portable lights in inventory glow (Closes #2042, #3338) 2016-10-08 23:17:12 +02:00