Toggling Objects Tutorial

Revision as of 22:41, 22 July 2009 by imported>AlexanderSig (New page: This tutorial will help you make objects that were previously disabled to become enabled, such as when you complete a certain stage of a quest or eat a certain item items that were previou...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This tutorial will help you make objects that were previously disabled to become enabled, such as when you complete a certain stage of a quest or eat a certain item items that were previously invisible will become visible

I had a lot of trial-and-error creating objects that appear only when you do a specific action. For instance: A trophy getting added to your Megaton Home when you get acquire and achievement, so I'm going to write a tutorial for that:

1. You're going to want to make an xmarker, these can be found in World Objects -> Static, tick the "Initially Disabled" box

2. Change the "Reference ID" on the xmarker by double-clicking the XMarker you placed.

3. Create the object you want to enable when you do a specific action (in this case, getting an achievement)

4. Double click the object you just placed and scroll over to "Enable Parent"

5. Click "Select Reference in Render Window and select your xmarker, if you want you can do the same for other objects, those objects will also get enabled once your first prop does.

6. Go to ActorData and select the quests and select the "Achievement Quests", if you look a little below the questID box you'll see a "..." button next to the script name, click it.

6,5. I personally just make another script and copy/paste the Achievement's script into it to avoid conflicts with other mods. If you want to do that you have to create another quest, tick the "Start Game Enabled" box and select the script from the drop-down menu.

7. In your new (or old) script find the achievement you want so that when you earn it you enable your prop, if you don't know what achievement does what you can check [1] for a full list, note that you won't find any quest-achievements here, I'll get on that subject later in this tutorial.

8. I'm going to use the "Slayer of Beasts" achievement here, where you have to kill 300 beasts, this is the OLD script:

;Slayer of Beasts
If CreaturesKilled == 0
	If GetPCMiscStat "Creatures Killed" > 299
		AddAchievement 42
		Set CreaturesKilled to 1
	endif
endif

This is the new script:

;Slayer of Beasts
If CreaturesKilled == 0
	If GetPCMiscStat "Creatures Killed" > 299
		AddAchievement 42
		Set CreaturesKilled to 1
                [YOUR XMARKER'S REFERENCE ID HERE].enable
	endif
endif

Don't use the "[ ]" in your script.

9. Okay, let's say you want something to enable once you complete ANY quest or quest can, can be official or your own, or even someone elses, repeat stages 1 through 5 here,

10. Go to ActorData -> Quests and find the quest ID you're looking for, if you know the in-game name of the quest but not the ID scroll a little to the right untill you come to the "Name", find your quest here, be sure not to click the "Dialogue, Fin etc." versions of the quest.

11. Go the the "Quest Stages" tab of that quest and click the stage you want to enable the object with. If the quest has the "Complete Quest" box ticked, that's the final stage, some multiple-choice quests have 2 stages with the complete quest box ticked, go over to the "Result Script" box and click "Edit"

12. Just put your "[xmarker reference ID here].enable" right under that.

And you're done, I hope this helped in any way!

Retro-Active achievements

If you do this the person who starts your mod AFTER completing a certain achievement will still get the whole ".enable" process, note that having such a big script running in the background could mean some FPS loss.

1.Make a new Quest and Script for that (make sure the script is in the "Quest" category)

2.The script should start like this:

SCN YourScriptName
Begin GameMode

and obviously end like this:

end

2.Go to the original achievements script and copy the part which includes the achievement you want to make retroactive.

OLD:

;Slayer of Beasts
If CreaturesKilled == 0
	If GetPCMiscStat "Creatures Killed" > 299
		AddAchievement 42
		Set CreaturesKilled to 1
	endif
endif

NEW:

;Slayer of Beasts
If GetPCMiscStat "Creatures Killed" > 299
         YourXMarker.Enable
endif