Jump to content

Interior Fast Travel Help


corsta

Recommended Posts

Hi all, I'm hoping someone out there can help me.

 

I'm working on a mod to improve QOL on a couple of locations, and one of the things I want to do is have the player spawn in an interior cell when travelling to a MapMarker. I managed to do it in Fallout New Vegas (using the GECK, of course), but can't for the life of me find a way to do it in Oblivion's Construction Set. Is it possible in this earlier engine, and if so, please can somebody help me figure it out? If it's not possible, I'll have to settle for some other way about it.

 

Thanks in advance, folks!

Corey

Link to comment
Share on other sites

Pretty sure there was a mod that allowed you to fast travel FROM an interior cell.... not sure I have ever seen one that allows you to travel TO an interior cell though. (unless it's an interior that acts like an exterior???) Isn't there a setting in one of the cell info windows to Allow Fast Travel?? Or some such?

Link to comment
Share on other sites

I do not know how to script for the map but some did like Dynamic map so peek at it to see how to make scripts for a specific map marker. The map markers themselves are static and cannot have scripts attached.

 

Well what you wanna do in principle is to pick up when the player is clicking that mapmarker and then move the player to it and I do think it can only be done with a script really, including this line:

player.moveto YourMapMarkerRef

Hopefully someone smarter will solve this for you... ;)

Link to comment
Share on other sites

Thanks for the input, guys.

 

I'm thinking I need to move the interior cell into its own new worldspace, which I've done, but I still can't figure out how to manage the fast-travel stuff. I can add a MapMarker now that it's an exterior worldspace, but I don't know how to make that appear where I want it on the Tamriel map (or on the map at all). I want/need it to work like the cities' MapMarkers that appear in the right place on the map and allow you to travel to a different worldspace with the MapMarker inside said worldspace, but without being visible from the beginning.

 

Any ideas?

Link to comment
Share on other sites

I think (as I do not saw) there is no such check of whenever the player is doing a fast travel, moreover with the next acts such as to interrupt the current fast travel to that map marker location and to do something different. So I imagine your idea in this way.
There are lot of the map markers in the original game and some from the original addons. Map marker is an object from the WorldObjects category Static subcategory with an appropriate "MapMarker" NameID. When it is placed into the world, there are an options to apply to each of them placed. Such as Visible (will be visible on the map), CanTravelTo, InitiallyDisabled (is not visible from the beggining you was wondering of), name and type in the Marker Data tab.
No difference whenever the map marker whenever it is in the in-terior or ex-terior.
So, for your task to be realized, you'll have to move that lot of original map markers inside the interiors near the door's markers from the first door which leads to that inerior. You can go an easy way as to move them in the world OR to make a BIG script which will go through the map markers array (GetMapMarkers), check the RefID of it and move it to the place that you will HAVE TO input by yourself.

This would be a very loooong and dull action for me to realize if you ask me...

For the example, I can provide a piece of one of my codes. From the quest script. (map markers here were translated and messagebox texts are not noted)

scn MadGodsPickAxeQuestSCRIPT

short stage
short i
ref iter
string_var iterRefString
short iterRefDec
array_var knownmarkers
short markerstotal
short markerstotalpreviuoscalc
; Markers:
; Brellach RefHex=0000DA42 RefDec=55874
; Cann RefHex=0000DA3D RefDec=55869
; Ebrokka RefHex=0000DA47 RefDec=55879
; Fein RefHex=00055BD4 RefDec=351188
; Aychan RefHex=0000DA23 RefDec=55843
; Dark labirinth RefHex=0007CFDE RefDec=511966
; Smelling trees RefHex=0000DA76 RefDec=55926
; "Bone growed" RefHex=0000DA74 RefDec=55924
; Xiretard RefHex=0000DA4C RefDec=55884
; Black den RefHex=0000DA72 RefDec=55922
; Blackberry bush RefHex=0000DA70 RefDec=55920
; Xeivara RefHex=0007CFDD RefDec=511965
; Moaning halls RefHex=0000DA38 RefDec=55864
; Den "Swamp gas" RefHex=0000DA80 RefDec=55936
; Frightful lair RefHex=0000DA6E RefDec=55918
; Xiditta RefHex=0000DA65 RefDec=55909
; Dead pass RefHex=0000DA6C RefDec=55916
; Sharp cliff RefHex=0000DA82 RefDec=55938

Begin GameMode

if ( stage == 0 ) && ( GetStageDone SE13 200 == 1 ) && ( Player.GetLevel >= 22 ) && ( GetPlayerInSEWorld == 1 )
	let knownmarkers := GetMapMarkers 0
	set markerstotalpreviuoscalc to ar_Size knownmarkers

	if ( markerstotal != markerstotalpreviuoscalc )
		set i to 0
		set markerstotal to markerstotalpreviuoscalc
		While ( i <= markerstotal )
			let iter := knownmarkers[i]
			let iterRefString := sv_construct "%i" iter
			let iterRefDec := ToNumber iterRefString 1
			if ( iterRefDec == 55874 ) || ( iterRefDec == 55869 ) || ( iterRefDec == 55879 ) || ( iterRefDec == 351188 ) || ( iterRefDec == 55843 ) || ( iterRefDec == 511966 ) || ( iterRefDec == 55926 ) || ( iterRefDec == 55924 ) || ( iterRefDec == 55884 ) || ( iterRefDec == 55922 ) || ( iterRefDec == 55920 ) || ( iterRefDec == 511965 ) || ( iterRefDec == 55864 ) || ( iterRefDec == 55936 ) || ( iterRefDec == 55918 ) || ( iterRefDec == 55909 ) || ( iterRefDec == 55916 ) || ( iterRefDec == 55938 )
				set stage to stage + 1
			endif
			set i to i + 1
		loop
		if ( stage > 17 )
			if ( Player.GetItemCount Pickaxe01 > 0 )
				Player.RemoveItem Pickaxe01 1
				Player.AddItem WeapMadGodsPickAxe 1
				MessageBox "..."
				set stage to 2
			else
				MessageBox "..."
				set stage to 1
			endif
		else
			set stage to 0
		endif				
	endif
elseif ( stage == 1 ) && ( Player.GetItemCount Pickaxe01 > 0 ) && ( GetPlayerInSEWorld == 1 )
	Player.RemoveItem Pickaxe01 1
	Player.AddItem WeapMadGodsPickAxe 1
	MessageBox "..."
	set stage to 2
elseif ( stage == 2 )
	set stage to -1
	StopQuest FranMadGodsPickAxeQuest
endif

End

- here is what it is for. In this quest script it scans for the Shivering Isles map markers list which are known for the player. I gone through the map markers by myself to obtain the RefID of the each one, you can see that I noted them. In the While<->Loop script code piece that check is happening. The known and visible map markers array is gotten using the "GetMapMarkers 0" function. That array is consisting from the RefIDs of those known and visible map markers. I do not know how to check for the RefID equality in case when I am comparing the RefID from the RefID set manually (I do not know how to manually set the value to the ref variable), so I gone through a bit harder way -

let iterRefString := sv_construct "%i" iter

- will get the RefID written in symbols as a string

let iterRefDec := ToNumber iterRefString 1

- will get the decimal value from the string variable considering it is consisting from the hexadecimal value which it is

The decimal variables to comparing with next in the check, I calculated from the hexadecimal values using Windows'es standard calculator.

 

So, inside each of that check you will be have to write a piece of code which will move the appropriate map marker (by it's RefID) to the appropriate exact location in exact interior.

Edited by Stealth21
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...