Jump to content

Quest scripting


Recommended Posts

I have created a quest with a new NPC where if you click yes, then it runs a result script so that it setstage "questid" 5. That all works, but i then have a script that says:

 

 

begin scripteffectstart

if getstage "questid" == 5

player.moveto TargetRatid

setstage "questid" 10

endif

end

 

That is the part that doesn't work, where it should load me to the targetrat, it jmust instead ends the conversation... I thought about using a spell, but that would kinda defeat the purpose of me creating this script in the firstplace... I know very little about scripting, so any help would be greatly appreciated.

 

Thanks in advance.

Link to comment
Share on other sites

A result script that is written into the dialogue editor?

 

First, you can chop off the begin and end blocks, they don't use that in result scripts.

 

Second: What's the getstage check for? If you click yes and the stage isn't 5, it won't do anything at all. You may want to add in a check so the response is only available if the stage is 5. Remove it if it's unnecessary.

 

Third, don't include a moveto in a result script! Set the stage to 9 instead, then add this to the quest script:

 

Begin Gamemode

if getstate "QuestID" == 9

setstage "QuestID" 10

player.moveto "Marker"

endif

end

 

If you don't, it'll trigger a serious bug that can mess up the camera.

Link to comment
Share on other sites

No no no no, you misunderstood me, i have a result script that sets the quest stage to 5, then i have a normal script that checks if the quest stage is at 5, and if so, then it should do player.moveto...
Link to comment
Share on other sites

Ah. In that case, Begin ScriptEffectStart is for spells, I believe. Use Begin Gamemode.

 

Also, don't include more than one gamemode block in a script, it can cause problems, in case you've already got one. Just wedge that if block into it.

Link to comment
Share on other sites

I tried changing it to begin gamemode, still with no success, and i believe that i only have one block, this is my entire script in full

 

 

scriptname ACPlayerteletoarena

begin gamemode

if getstage ACArenaChallengeQuest == 5

player.moveto ACTargetRatmid

setstage ACArenaChallengeQuest 10

endif

end

Link to comment
Share on other sites

Ok, i am really confused... I added a message to it, just saying hello, lasting for 10 seconds, problem is... it never came up, but when i went into the console, and typed in getstage acarenachallengequest It said that it was at stage 5...

 

Edit...I just did some in-game console experimenting, and i used the setstage command and set it to 0, but when i used getstage to check if the setstage worked, it said it was still at stage 5 and yes i do have a stage 0

Link to comment
Share on other sites

Oblivion scripting language is a very unreliable and poorly-documented thing. Often there are usages of commands which do not work and there is no logical explanation. I think you may have encountered one of them. This reminds me of a script in one of my unpublished mods which does not work. When you encounter something that does not work and you are sure that you have debugged it so that is would work if Oblivion scripting language was rational and logical, then it is time to try something else, like a new trigger.

 

 

; Result script on dialog info "Yes."
Set  ACArenaChallengequest.Variable to 1 

 

 

SCN ACPlayerTeleToArena

; Quest script applied to quest ACArenaChallengequest. 

ShortACVariable
Short DoOnce

Begin GameMode
    If ACArenaChallengequest.ACVariable == 1 && DoOnce == 0
         Player.MoveTo ACTargetRatmid
         Set DoOnce to 1
         SetStage ACArenaChallengeQuest 10
    EndIf
End 

 

I don't know if this will work, but it is something to try.

Link to comment
Share on other sites

Umm it says unknown variable or function for line 9 ACPlayerteletoa (Line 9 is in red) it wont let me save it, so therefore i cannot compile it

 

Scriptname ACPlayerteletoArena

;Quest script applied to quest ACArenaChallengeQuest

Short ACPlayerteletoa

Short DoOnce

Begin GameMode

if AcPlayerteletparena.ACPlayerteletoa == 1 && DoOnce == 0

Player.mnoveto ACTargetRatmid

Set DoOnce to 1

Setstage ACArenaChallengeQuest 10

endif

end

Link to comment
Share on other sites

What is AcPlayerteletparena. ? Your script does not know what this is, thats why it's telling you it's unknown.

If ACPlayerteletoa has already been set to the value 1 elsewhere ( via dialogue for eg ) then it should look more like this.

 

 

scn ACPlayerteletoArena

 

 

;Quest script applied to quest ACArenaChallengeQuest

 

 

Short ACPlayerteletoa

Short DoOnce

 

 

Begin GameMode

if ACPlayerteletoa == 1 && DoOnce == 0

Player.moveto ACTargetRatmid

Set DoOnce to 1

Setstage ACArenaChallengeQuest 10

endif

end

Link to comment
Share on other sites

  • Recently Browsing   0 members

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