time elapsed for quest

Everything having to do with OpenMW's TES3MP branch.
Post Reply
drakan
Posts: 1
Joined: 28 Oct 2022, 14:09

time elapsed for quest

Post by drakan »

hi there

We are having 2 vanilla quest blocked. We are supposed to wait some time but nothing is happening.

Some more details :

=> 2 quest are :
- Roderan house quest blocked after you save Saréthi son : "But I need more time to think about how to react ..." "come back in a day or two"
- Redoran manor 1st stage : the last waiting timing last forever and the manor never finish its construction.

=> We are 3 players that started a server on lan. We are here to progress the game quest together.

=> We used often the command /settimescale both 30000 in order to speed up things

=> here is my esm folder version
[Script]: - 1: "Morrowind.esm": [7B6AF5B9, 34282D67]
[Script]: - 2: "Tribunal.esm": [F481F334, 211329EF]
[Script]: - 3: "Bloodmoon.esm": [43DD2132, 9EB62F26]


0: checksum 0x67C998DD
1: checksum 0xBE1654C5
2: checksum 0x910EFE24
This is the french goty version

Would anyone have any idea of what cause these 2 blocked quests? Is this TES3MP related?
Seldalore
Posts: 36
Joined: 09 Sep 2017, 08:40
Location: Pelagiad

Re: time elapsed for quest

Post by Seldalore »

I've noticed quests with complexities like that don't work. I stick to only doing simple fetch quests in TES3MP to be safe.
davidcernat
Posts: 256
Joined: 19 Jul 2016, 01:02

Re: time elapsed for quest

Post by davidcernat »

Seldalore wrote: 29 Oct 2022, 19:43 I've noticed quests with complexities like that don't work. I stick to only doing simple fetch quests in TES3MP to be safe.
They work fine if their associated script variables are set to be saved and loaded by the server.
drakan wrote: 28 Oct 2022, 14:36 - Roderan house quest blocked after you save Saréthi son : "But I need more time to think about how to react ..." "come back in a day or two"
As it says on UESP:

After the previous quest, rescuing Varvur Sarethi, Athyn says to wait a few days before he will give this quest. There is no actual timer, it is available next time you enter the Sarethi Manor - do not teleport in, as that will not trigger the script.

It looks like the server's config.synchronizedClientScriptIds needs to include "athynSarethiScript" to prevent the value of the local variable "varvurMoved" from being lost when reconnecting to the server. The variable is only ever checked when he gives you the next quest.

As a quick fix, do this in the console:

Code: Select all

Set "athyn sarethi".varvurMoved to 1
drakan wrote: 28 Oct 2022, 14:36 - Redoran manor 1st stage : the last waiting timing last forever and the manor never finish its construction.
I would assume the script for the last construction phase was running for a player and then that player disconnected.

Try this in the console:

Code: Select all

StartScript Strong_Build3_R
In the future, please provide a copy of your world.json when reporting quest bugs.
Seldalore
Posts: 36
Joined: 09 Sep 2017, 08:40
Location: Pelagiad

Re: time elapsed for quest

Post by Seldalore »

davidcernat wrote: 06 Nov 2022, 13:22 They work fine if their associated script variables are set to be saved and loaded by the server.
Oh, I didn't know that - is there a place to read up more, or a setting that I can toggle to make variables all run like vanilla?
davidcernat
Posts: 256
Joined: 19 Jul 2016, 01:02

Re: time elapsed for quest

Post by davidcernat »

Seldalore wrote: 07 Nov 2022, 09:23 Oh, I didn't know that - is there a place to read up more, or a setting that I can toggle to make variables all run like vanilla?
You can't "make variables all run like vanilla" because it would mean spamming the server with endless script variable changes that it doesn't need to know about. Take, for instance, the script used for floating barrels in Morrowind:

Code: Select all

begin Float

float  	timer
float	swingTime
float	swingSpeed
float	startAngle

set startAngle to GetStartingAngle, x

if ( MenuMode == 0 )

	set swingTime to 1
	;set swingSpeed to 30

	set timer to ( timer + GetSecondsPassed )

	;rotate up
	if ( timer < swingTime )

		Rotate x,2

	;rotate down

	elseif ( timer < (swingTime * 3) )

			Rotate x, -2

	;up again
	elseif (timer < (swingTime * 4 ) )
		Rotate x, 2

	;reset timer to zero
	else
		set timer to 0
		SetAngle, x, GetStartingAngle, x

	endif

endif

end Float
You really don't want to be sending a variable packet to the server whenever timer, swingTime, swingSpeed and startAngle change.

This is mentioned in the multiplayer FAQ:
FAQ wrote: The more complicated ingame scripts in Morrowind, its expansions and its mods were designed for singleplayer and use variables that cannot simply be synchronized across all players at all times because sometimes it doesn't make sense (as some variables should be per player, not worldwide) and sometimes it causes massive packet spam (as with a barrel floating in the water that changes the value of a variable every frame). For this reason, the server scripts need to specifically select which ingame scripts and variables are synchronized, saved and loaded. This is a gradual process that requires extensive testing.
Seldalore
Posts: 36
Joined: 09 Sep 2017, 08:40
Location: Pelagiad

Re: time elapsed for quest

Post by Seldalore »

I should have clarified - I don't think it is feasible or even necessary for things like barrel states :lol:.
davidcernat wrote: 06 Nov 2022, 13:22 They work fine if their associated script variables are set to be saved and loaded by the server.
How would one go about making it so these script variables are saved/loaded by the server? I don't intend for more than one player to complete the same quest (assuming that's a risk).
davidcernat
Posts: 256
Joined: 19 Jul 2016, 01:02

Re: time elapsed for quest

Post by davidcernat »

Seldalore wrote: 11 Nov 2022, 10:11 I should have clarified - I don't think it is feasible or even necessary for things like barrel states :lol:.
There's no automated way to distinguish between stuff you don't want to save and stuff you do want to save, because they're all just script variables. If you made it so all the variables from all the scripts got saved, most of the variables being saved would be from scripts like the barrel example.
Seldalore wrote: 11 Nov 2022, 10:11 How would one go about making it so these script variables are saved/loaded by the server?
You go through the game, finding the scripts whose variables should be saved, and you add them to config.synchronizedClientScriptIds in config.lua for scripts with local variables and to clientVariableScopes.lua for global variables. The latter is complete for Morrowind.esm, Tribunal.esm and Bloodmoon.esm by default.
Post Reply