Help - Search - Members - Calendar
Full Version: Cutscene not starting
The Black Wyrm's Lair - Forums > Mod development resources & discussion > Modder's Workshop
Rabain
I have the following problem with a cutscene. It's probably something basic but I'm just not seeing it.

The npc is not in the party when pc starts talking to him but was previously:

In the P dialog:

CODE
IF ~Global("bwtouchnopay","GLOBAL",2)!GlobalTimerExpired("bwtouchnopayt","GLOBAL")~ notearnedindrow
SAY ~Blah blah.~
+ ~PartyGoldGT(9999)~ + ~Yes, I have changed my mind.~ DO ~SetGlobal("bwtouchnopay","GLOBAL",3)SetGlobal("kickout","LOCALS",0) JoinParty()
~ EXIT
+ ~PartyGoldLT(10000)~ + ~I simply do not have the money.~ EXIT
++ ~You will have to make do on your own.~ EXIT
END


Then in the npc's script:

CODE
IF
Global("bwtouchnopay","GLOBAL",3)
THEN
RESPONSE #100
      StartCutSceneMode()
      StartCutScene("bwtoumov")
END


But the cutscene doesn't start, it doesn't even go into cutscene mode. I've tried starting it all in the dialog and not in script but that doesn't work either. The npc does join the party though.

The bwtoumov cutscene is compiled and looks fine.
Awake
I'm going to go with the simple idea, and maybe you didn't see this, but most likely I'm wrong...

What's your party gold at?

And, it's been a while since I modded, but CutSceneID()?
Vlasák
QUOTE(Rabain @ Feb 11 2007, 02:03 AM) *

CODE
IF
Global("bwtouchnopay","GLOBAL",3)
THEN
RESPONSE #100
      StartCutSceneMode()
      StartCutScene("bwtoumov")
END


Maybe, it could be an issue with cut-scene itself, maybe no - don't forget to set bwtouchnopay variable to 4 or something - here you have "always true" block. So due to this the cut-scene proceeding could be prevented from launching... maybe not wink.gif Just an idea...

BTW try to replace cut-scene actions with something simple - DisplayString action, for instance. Then you will see whether the block is actually processed...
HERD
You can try ClearAllActions() before the cutscene
Sikret
QUOTE
CODE
SetGlobal("bwtouchnopay","GLOBAL",3)SetGlobal("kickout","LOCALS",0)


Also, try adding a space between the two SetGlobal actions.

Rabain
I'll try the DisplayStringHead() thing first I think! At least I'll know if the Cutscene is actually starting or not.

I was thinking it might have something to do with the npc not being in the party but like I said the JoinParty() does happen. Can one Action fire and not another that comes before it or should there be errors?

@Awake: lol

EDIT: DisplayStringHead did not work.
EDIT: Spacing of Globals does not work either. Everything looks fine for the dialog/script in NI too.
Rabain
This doesn't seem right...I checked in NI and when the npc has rejoined the party the only script running on him is DPLAYER2.

Obviously this means that the block in his personal script won't run because its not active.

I don't recall this ever happening to any other npc I've tried.

EDIT: Yes his personal script is assigned in his cre file at install and the other blocks work before he leaves the party.
Vlasák
Rabain: has the variable bwtouchnopay really value 3 after the joining npc in party (check it via console or savegame editors or varchecker wink.gif).

Isn't there any typo in assigning script in cre file?
Rabain
I've checked in ShadowKeeper and in NI and the global is being set to the correct value.

However since his personal script is no longer on him after rejoining the party nothing in it is firing.

It's not that there is a typo...his script is no longer on him at all after he rejoins! Only DPLAYER2 is running, all other script fields are empty even though before he left the party he had a script assigned to both the Override and Default slots.
Rabain
Adding ChangeAiScript() to the dialogue fixed it.

Is this normal behaviour or have I just never noticed what goes on when a party member leaves and rejoins the party?
Vlasák
Rabain: mmm... what about pdialog.2da? There is column called 25OVERRIDE_SCRIPT_FILE. Could it be any interference here?
Or npclevel.2da - you cre is maybe replaced by different cre file according this file... Here could be some issue too...

yep, ChangeAiScript() can fix it, however the problem still left hidden wink.gif
Rabain
I thought the 25 files where only used once you've started playing ToB?

Vlasák
Rabain: yep, prefix 25 is used for ToB scripts and dialogs. i've meant it just for the case you're trying you scripts/characters in started ToB game.
Rabain
No worries, I've bypassed that problem with ChangeAiScript() for now.

Next problem, Cutscene starts but only goes as far as just after FadeFromcolour()


CODE
IF
      True()
THEN
RESPONSE #100
      CutSceneId("bwtouchx")
      Wait(1)
      ActionOverride(PLAYER1,MoveToPoint([1512.1354]))
      ActionOverride(PLAYER2,MoveToPoint([1450.1352]))
      ActionOverride(PLAYER3,MoveToPoint([1473.1294]))
      ActionOverride(PLAYER4,MoveToPoint([1416.1313]))
      ActionOverride(PLAYER5,MoveToPoint([1443.1254]))
      ActionOverride(PLAYER6,MoveToPoint([1391.1271]))
      FadeToColor([20.0],0)
      ActionOverride(PLAYER1,LeaveAreaLUA("AR2200","",[4600.1100],14))
      ActionOverride(PLAYER2,LeaveAreaLUA("AR2200","",[4430.930],14))
      ActionOverride(PLAYER3,LeaveAreaLUA("AR2200","",[4430.930],14))
      ActionOverride(PLAYER4,LeaveAreaLUA("AR2200","",[4430.930],14))
      ActionOverride(PLAYER5,LeaveAreaLUA("AR2200","",[4430.930],14))
      ActionOverride(PLAYER6,LeaveAreaLUA("AR2200","",[4430.930],14))
      Wait(1)
      FadeFromColor([20.0],0)
      MoveToPoint([4640.1080])
      EndCutSceneMode()
      ActionOverride(Player1,StartDialogueNoSet("DADROW18"))
END


Then it just stops and stays in cutscene mode. FadeToColour does happen but anything after. I've tried ActionOverride for the MovetoPoint but it doesn't work either.
HERD
Shouldn't the last two cutscene actions be

ActionOverride("DADROW18",StartDialogueNoSet(Player1))
EndCutSceneMode()
Rabain
I don't think it really matters when you End the cutscene, so long as it ends at some stage appropriate to what you want to happen.

Its not getting as far as the MoveToPoint anyway.

Also now that I've updated my dialogues its back to not even starting again! Its not been a good day.
HERD
What I mean is that perhaps DADROW18 must start dialog, not Player1?
devSin
The game assigns scripts when a character joins the party based on the 2DA files. Make sure the 2DA files are correct for your NPC (so that the game can assign the script and dialogue files that your NPC should be running).

Dialogue automatically ends cutscene mode, so it doesn't matter where you put EndCutSceneMode() (or even if you use it at all).

Player1 doesn't really ever have a dialogue file assigned, so your StartDialogueNoSet() isn't going to do anything (as HERD suggests, you want DADROW18 to initiate dialogue with Player1).

Make sure that "bwtouchx" is a valid script name. If it's not a character that's in the party, you need to move it to AR2200 with the party (using MoveBetweenAreas()).
Rabain
Basically what happens is that the character joins the party in one area and then the cutscene moves the whole party to another area and commences dialog with DADROW18.

At the moment what is happening is that the character joins the party but no cutscene starts.

I am back to where I was several posts ago with no scripts running on the npc after rejoining other than DPlayer2.

Can someone point out to me which part of which 2da needs to be updated in order to assign a script to the npc.

As noted previously the personal script was on the npc before he left the party but obviously removed and not replaced when he rejoined.

bwtouchx is the DV (scriptname) of the npc.

I was under the impression that the personal script you assign to the cre when you create it or at install (as some do now) should stay on the npc throughout its life in SoA. The script is replaced by the 25Override script listed in pdialog.2da at the start of ToB. Am I wrong on any of this?

You're both probably right about the DADROW18 having to initiate conversation...I just can't get that far at the moment. I have changed the script so he starts the convo with player1. Thanks!
Rabain
Okay I figured it out, never place an npc's personal script in the Default slot or it will be erased when he leaves the party and replaced by Dplayer2.

The Override slot will follow the npc throughout its life in SoA. In or out of the party. I must check which slot is filled by pdialog in ToB and if it is indeed the Override slot.

Absolutely everything is working fine now!
devSin
Yes, the override script is the only one that isn't cleared when the character joins. This will also be the only slot that gets converted when moving to ToB.
HERD
QUOTE
I was under the impression that the personal script you assign to the cre when you create it or at install (as some do now) should stay on the npc throughout its life in SoA.

Only if it's its OVERRIDE script. Other scripts may be replaced on joining the party (I'm 100% sure about CLASS and DEFAULT scripts.)

As for your cutscene, I'd try sort of

IF
True()
THEN
RESPONSE #100
CutSceneId(Player1)
Wait(1)
MoveToPoint([1512.1354])
ActionOverride(PLAYER2,MoveToPoint([1450.1352]))
ActionOverride(PLAYER3,MoveToPoint([1473.1294]))
ActionOverride(PLAYER4,MoveToPoint([1416.1313]))
ActionOverride(PLAYER5,MoveToPoint([1443.1254]))
ActionOverride(PLAYER6,MoveToPoint([1391.1271]))
FadeToColor([20.0],0)
ActionOverride(PLAYER2,LeaveAreaLUA("AR2200","",[4430.930],14))
ActionOverride(PLAYER3,LeaveAreaLUA("AR2200","",[4430.930],14))
ActionOverride(PLAYER4,LeaveAreaLUA("AR2200","",[4430.930],14))
ActionOverride(PLAYER5,LeaveAreaLUA("AR2200","",[4430.930],14))
ActionOverride(PLAYER6,LeaveAreaLUA("AR2200","",[4430.930],14))
Wait(1)
LeaveAreaLUA("AR2200","",[4600.1100],14)
Wait(1)
FadeFromColor([20.0],0)
ActionOverride("bwtouchx",MoveToPoint([4640.1080]))
ActionOverride("DADROW18",StartDialogueNoSet(Player1))
EndCutSceneMode()
END

I believe having CutSceneId(Player1) is always safe.
Razfallow
CODE

IF
True()
THEN
RESPONSE #100
CutSceneId(Player1)
Wait(1)
MoveToPoint([1512.1354])
ActionOverride(PLAYER2,MoveToPoint([1450.1352]))
ActionOverride(PLAYER3,MoveToPoint([1473.1294]))
ActionOverride(PLAYER4,MoveToPoint([1416.1313]))
ActionOverride(PLAYER5,MoveToPoint([1443.1254]))
ActionOverride(PLAYER6,MoveToPoint([1391.1271]))
FadeToColor([20.0],0)
Wait(1)
ActionOverride("bwtouchx",DestroySelf()) // 1)
LeaveAreaLUA("AR2200","",[4600.1100],14)
ActionOverride(PLAYER2,LeaveAreaLUA("AR2200","",[4430.930],14))
ActionOverride(PLAYER3,LeaveAreaLUA("AR2200","",[4430.930],14))
ActionOverride(PLAYER4,LeaveAreaLUA("AR2200","",[4430.930],14))
ActionOverride(PLAYER5,LeaveAreaLUA("AR2200","",[4430.930],14))
ActionOverride(PLAYER6,LeaveAreaLUA("AR2200","",[4430.930],14))
CreateCreature("bwtouchx",[4430.930],14) // 2)
Wait(1)
FadeFromColor([20.0],0)
ActionOverride("bwtouchx",MoveToPoint([4640.1080]))
ActionOverride("DADROW18",StartDialogueNoSet(Player1))
EndCutSceneMode()
END


1) Use this line when creature with DV "bwtouchx" should move to area "AR2200" or shouldn't be present in area where cutscene start any more.
I believe that LeaveAreaLUA works only for party members (at least it didn't work for me), so you can't use it for "bwtouchx".

2) Use this line when creature with DV "bwtouchx" doesn't already exist in area "AR2200". Don't forget to change coordinates where you want him to be.
Rabain
bwtouchx is the DV of the ex-party member who joins the party before all of them move to AR2200.

The problem was that his script was not running after he joined the party and the cutscene did not start at all. Mainly because I had his script in the Default slot and it was overwritten by DPlayer2 script when he left the party.

I've move his script to the Override slot on the cre file and all is well with the world again!

Thanks everyone for your time! smile.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2024 Invision Power Services, Inc.