Welcome
Ladies and Gents:

These forums are now closed and registration disabled.

Please join us at our new forum on Proboards. Our hope is that these new forums are more stable, provide more and better features, and allow continuation of the project forums in a safer, more secure, long term environment.

me3explorer.proboards.com

--The ME3Explorer Team

Tutorial: Adding Points of Interest to a Level

Made by modders for modders. Step-by-step instructions on how to achieve specific modding goals with ME3Explorer. We *strongly* encourage you to post new tutorials on the wiki.

Tutorial: Adding Points of Interest to a Level

Postby Kinkojiro » 22 Jun 2015, 09:31

PointsOfInterest (POIs) are the circles that appear in the game that a player can interact with to show a message, pickup ammo or set a sequence that does pretty much anything in motion.

In addition they can be used as hidden actors - useful for conversations where somebody speaks over the radio for example.

In this example a POI that will be used to allow Ashley to radio into Liara's room, so a previously cut conversation can be restored (for the dialog mod Backoff).


1. Create the POI

I am assuming the pcc already has a POI in it, importing a new SFXPOI object is certainly possible but considerably more fiddly.

Open the pcc using ME3Creator and find a SFXPointOfinterest on the Export Objects tab Press "Clone Entry"

Image

Similarly find a tempSelectionModule and clone that.

Save and press "Reload File" in ME3Creator


2. Fix the metadata

Still in ME3Creator go to the Export Tab. Find your new objects at the bottom of list.

The tempSelectionModule needs its link set to the SFXPointOfInterest you just created. In this example the SFXPOI is 644. The Link reference (but not the export object drop down list) will show 644 +1 = 645

Image


Save and reload again.

3. Fix the Modules

Similarly inside the object data for the SFXPointOfInterest is a reference to its child modules. Go to Export Object Tab. Find the SFXPOI object (#644 in this example).
In the Properties Tab you will find the modules showing an incorrect reference note down the Hex of the location (in this example 00 3A)

Image


Open Hex Converter (button at top). Into the signed integer box put the export object number of the tempSelectionModule (in this case 645) plus 1, so 646.
Image

On the Hex tab go to 3A (Row 30 Byte 0A = 10th) Overwrite the 4 bytes with the Hex Little Endian. Save & reload again.

4. Adding the POI into the Persistant Level.

Find the PersistantLevel object (short cut in ME3Cr: go to Level view, right click Level on top left and click "Find in Table")

The persistant level contains 2 types of hex - the usual Unreal property/name lookup code and binary code. We need to adjust the binary references code. I recommend you export the persistantlevel object to a binary file, open in HXD and keep a vanilla backup. It is vital to the pcc so a small mistake can cause crashes.

You should note there may be more unreal code at the top - this will shift the binary code down so DO NOT COPY THIS EXAMPLE EXACTLY WITHOUT CHECKING HOW MUCH UNREAL CODE THERE IS BEFORE THE BINARY CODE STARTS. To be certain check what the persistant level object is in hex and find that. From there you can see the object count, the 8 byte TheWorld reference, and the start of the Object list.

Every pccs level is slightly different and some are more complex, but this is a simple example of what the hex refers to:

Image

To add the new POI into the Level we need to add a reference. Firstly find the hex value for your object (use HexConverter). In this case 644 is the SFXPOI so 645 in Hex is 85 02 00 00

We need to insert this hex code at the point shown above. We also need to increase the object count by one. Don't forget this is in hex.

So your Persistent Level should look like this:

Image

Save in HXD and import the binary back into ME3Creator. Save the file and Exit ME3Creator.

5. Set the remaining SFXPOI properties: Tag / Drawscale

From now on I will use PCCEditor2 because it is easier to change values.

Tag: The tag can be anything - its only purpose is if other processes are looking for that object. In this case we are creating a radio speaker for Ashley, so I will use "radio_ashley". The dialogue will refer to that in the speaker list.

To do this I need to add radio_ashley to the name list and reference the number.

Drawscale : seems to be default at 0.2.

6. Set the tempSelectionModule properties: m_bTargetable, Target_Tip_Text, fUseRange and m_srGameName

Not all these objects are necessary, but control a few useful settings.

m_bTargetable is a bool (true/false) property that determines whether the POI is hidden or shown by default. Leave it as true until everything is finished.

Target_Tip_Text: this determines what text is shown above the POI. Examples are Examine, Use or Pickup. To set this add the name: "TargetTipText_" and then the name required so: "TargetTipText_Use" will show "Use". Other possible examples are: Examine, PickUp, Activate, Bypass, Deactivate, Open, Reactivate, Revive, Salvage, Support, Talk or Warn. In this example we are creating an actor so use TargetTipText_Talk

fUseRange: Determines how far away before you can use the button. For some things (for example the cockpit shutters in the ceiling switch) further is better. Default appears to be around 250

m_srGameName: If the POI is visible then this determines the tlk string which holds the caption. For example a POI will say "Pickup" using the TargetTipText and underneath that say "Ammo" or "DataPad" or whatever is contained in the TLK string. If the POI is being used as a remote speaker it determines the name that is shown in subtitles. For this reason in this example it is set to 206249 which is the first "Ashley" in the main ME3 tlk.

7. Setting the Location

This is very hit or miss, the only way to do it is to use the locations already in the game of other POI or objects and create your own, then test and adjust in the game. Within a level all the POI operate off the same vector map so POIs in Liara's office will be left of POIs in the medbay but about the same height, even though the POIs are in different pccs. Similarly a POI in the cabin will be above those POIs in the cargo bay.

Setting the Vector: The location has 3 vectors, each is a floating number (unfortunately PCCEditor shows them as integers so you need to convert in Hex Converter).
Image

As a reference to aid visualisation on the Normandy (standing middle of the ship looking forward to the bow)
[0] X-axis is left to right (a negative number is more to the left of the level, a positive more to the right) -997917168 = -1063.939
[1] Y-axis is front to back (a negative number is more to the front, a positive more to the back) 1155548802 = 1794.203
[2] Z-axis is down to up (a negative number is more down , a positive more up) -1003118592 = -726.5

In Liara's Office I know the POI for Kaidan's radio so I can use that.

8. Test in Game

Add the PCC to the game and test. Make sure the m_bTargetable is set to true so you can see the POI, even if you want to hide it later.

Image

Once it is working you can hide it (if you want) using the m_bTargetable set to false or start building functionality using a SeqEvt_Used to begin a sequence.

Kinkojiro has been thanked by:
User avatar
Kinkojiro
Modder
 
Posts: 578
Joined: 02 Dec 2013, 04:14
Has thanked: 233 time
Have thanks: 249 time

Re: Tutorial: Adding Points of Interest to a Level

Postby giftfish » 22 Jun 2015, 13:51

Wewt, this is awesome.

It was obviously step 4 that was slipping me up, everything else I figured out. So, adding a POI then, is technically a bit of level editing, correct? If so, that probably means that any time you add a new object (POI, Fornax, photo, camera actor) to a level, you'd have to edit that list so the game knows it's there, yes?

Thanks for writing this up :D
User avatar
giftfish
Toolset Developer
 
Posts: 1247
Joined: 08 Jan 2016, 02:35
Has thanked: 129 time
Have thanks: 75 time

Re: Tutorial: Adding Points of Interest to a Level

Postby WarrantyVoider » 26 Jun 2015, 16:53

finally someone who messes with the levels, you may have noticed that depending on the level, you can only add a fixd amount of objects, before it crashes, maybe you find a way around this, good work^^

greetz WV
always backup your files!
mess with the best or die like the rest!
"I tried everything!" - "mkay, please list that..." ; please dont pm me for help, we have a help section
User avatar
WarrantyVoider
Emeritus
 
Posts: 2270
Joined: 22 Aug 2012, 11:33
Has thanked: 480 time
Have thanks: 626 time

Re: Tutorial: Adding Points of Interest to a Level

Postby Kinkojiro » 28 Jun 2015, 11:46

Thx. I haven't come across that yet, most have added is about 10 but will keep an eye out for it. Would explain why BW use a lot of Static Mesh Collections in their BioA files.
User avatar
Kinkojiro
Modder
 
Posts: 578
Joined: 02 Dec 2013, 04:14
Has thanked: 233 time
Have thanks: 249 time


Return to Modders' Tutorials

Who is online

Users browsing this forum: No registered users and 1 guest

suspicion-preferred