StealthDick Posted December 9, 2018 Share Posted December 9, 2018 I have an NPC involved in a conversation with another NPC that won't say his line of dialogue, but his line's result script works.Example: The first npc enters a trigger and spouts dialogue at the problem NPC, the problem NPC looks at the first do to forcelook but doesn't respond to him with the dialogue he was given.I put rewardxp in the problem npc's result script just to check if the NPC is getting the line properly, and the player gets xp continuously but the line isn't said, and the conversation doesn't progress. More in-depth:This is the first and second npc's script: Begin SaytoDone aaaSSSBunkerConvo SSSBunker12REF.sayto SSSBunker01REF aaaSSSBunkerConvo 1 1 end They both have separate scripts with different variables, but only the first npc is talking properly. I had the whole convo working properly a few days ago, and I have no idea what I could have done to mess it up.Does anyone have any input that might make this work? Thanks. Link to comment Share on other sites More sharing options...
StealthDick Posted December 9, 2018 Author Share Posted December 9, 2018 I would like to add that this isnt my first time making a conversation between 2 npcs, the mod I'm working on has 3 other WORKING cases of npc conversations and one of them are between 3 npcs. This one just refuses to work, idk why it wont work. Link to comment Share on other sites More sharing options...
dubiousintent Posted December 10, 2018 Share Posted December 10, 2018 Just some suggestions based upon your report. The script seems to be working, so I surmise the problem lies with the dialog sound file. * Have you tried "captioning" to see if the issue is purely audio? (Though I have no idea how that is added. Something to be added to the wiki article.) * Are you certain the sound file is recognized and processed properly? Correct location? Please see the 'Music & Sounds' section of the wiki "Getting started creating mods using GECK" article. * Noticed a change in your naming convention for the sound file: "aaaSSSBunkerConvo" versus "SSSBunker12REF" (etc.) for other refs. That sort of thing has tripped up more than one scripter. -Dubious- Link to comment Share on other sites More sharing options...
StealthDick Posted December 10, 2018 Author Share Posted December 10, 2018 Just some suggestions based upon your report. The script seems to be working, so I surmise the problem lies with the dialog sound file. * Have you tried "captioning" to see if the issue is purely audio? (Though I have no idea how that is added. Something to be added to the wiki article.) * Are you certain the sound file is recognized and processed properly? Correct location? Please see the 'Music & Sounds' section of the wiki "Getting started creating mods using GECK" article. * Noticed a change in your naming convention for the sound file: "aaaSSSBunkerConvo" versus "SSSBunker12REF" (etc.) for other refs. That sort of thing has tripped up more than one scripter. -Dubious-I use geck-pu so it would tell me if I did something incorrectly within a script, and the npc doesnt have a sound file connected to its dialogue, so it cant be that. Link to comment Share on other sites More sharing options...
StealthDick Posted December 10, 2018 Author Share Posted December 10, 2018 (edited) It used to work but it just stopped, its been stumping me for the past few days.Also, I'd like to add that the first npc skips over the second's dialogue, even though it doesn't meet the required conditions. Which leads me to believe that the game runs the second npc's dialogue but doesn't display it. Even after adding temporary sound files it doesn't go in the correct sequence. Edited December 10, 2018 by StealthDick Link to comment Share on other sites More sharing options...
dubiousintent Posted December 10, 2018 Share Posted December 10, 2018 the first npc skips over the second's dialogue, even though it doesn't meet the required conditionsSorry for the very basic questions, but that is often where something that worked has gotten broken. Making you explain the process often brings out the problem from the forest of potential issues. How are you setting the dialog conditions? (In "End Result Script" for each spoken line one assumes, but let's make sure.) Are you reusing a single variable to track the dialog process or stages or something else? Have you tried some "debug print" checks on the condition variable(s) to ensure they are set correctly at the various check points? It is my understanding the the "GECK Extender" has more detailed error messages than GECK-PU:GECK Extender NVSE Plugin. Project to extend GECK functionality and bug fixes. Compatible with all NVSE script extender plugins. (Do not use together with GECK Powerup (nor the Forked version), which it replaces.) Note the optional "Patcher" to make GECK 4GB aware and auto load NVSE is a separate file. But such tools are only useful for syntax errors. If a statement is syntactically correct but logically bad, they won't necessarily catch that. -Dubious- Link to comment Share on other sites More sharing options...
StealthDick Posted December 10, 2018 Author Share Posted December 10, 2018 the first npc skips over the second's dialogue, even though it doesn't meet the required conditionsSorry for the very basic questions, but that is often where something that worked has gotten broken. Making you explain the process often brings out the problem from the forest of potential issues. How are you setting the dialog conditions? (In "End Result Script" for each spoken line one assumes, but let's make sure.) Are you reusing a single variable to track the dialog process or stages or something else? Have you tried some "debug print" checks on the condition variable(s) to ensure they are set correctly at the various check points? It is my understanding the the "GECK Extender" has more detailed error messages than GECK-PU:GECK Extender NVSE Plugin. Project to extend GECK functionality and bug fixes. Compatible with all NVSE script extender plugins. (Do not use together with GECK Powerup (nor the Forked version), which it replaces.) Note the optional "Patcher" to make GECK 4GB aware and auto load NVSE is a separate file. But such tools are only useful for syntax errors. If a statement is syntactically correct but logically bad, they won't necessarily catch that. -Dubious- So in each result script (end), I have ""set aaaSSSQuest.bSSSBunkerConvo to aaaSSSQuest.bSSSBunkerConvo + 1" It works exactly the same as if I just had "set aaaSSSQuest.bSSSBunkerConvo to 1 (2,3, etc.)". All the conditions for each response from the two actors are nearly identical, the GetIsID, the bSSSBunkerConvo value, and a bEvacuate variable that tracks whether or not the PC persuaded the first npc to evacuate. The initial conversation starter WAS a trigger, but I made just added the conversation starter to the first npc's script. I don't know what "debug checks" are. If I had a guess, its probably the caps or xp I reward the player if the script runs properly. I'm probably wrong. When it comes to syntax, I'm pretty sure everything is spelled correctly. I ran the script recompiler a few times with no error. Its late for me rn, but I'll checkout GECK Extender in the morning. Link to comment Share on other sites More sharing options...
dubiousintent Posted December 10, 2018 Share Posted December 10, 2018 Re: "debug checks". Please see 'TIP: Debugging data to file' under the "Scripting" section of the wiki "Getting started creating mods using GECK" article. Your XP reward is somewhat serving that role in telling you the script is being processed, but seeing the actual content of "aaaSSSQuest.bSSSBunkerConvo" will tell you if it is getting incremented as you expect, and what the actual value is when the check is made. "Debug" printouts are a very useful and powerful tool, well worth learning about. They are simple and not hard to implement. By using NVSE's SetDebugMode command (or your own variable to trigger the same logic capability) you can turn the outputs on or off easily as needed. In practice the potential problem I see with using a "+1" increment method is that it doesn't immediately and obviously tell you just which line of dialog was last processed. You have to calculate which line it should be, and if something unexpected (but perfectly valid) occurs, you are not immediately aware of it unless you realize the count is off. It does indeed work the same as you say, but is less helpful in debugging situations such as this. If you are "skipping" over the second line of dialog, the next (third) dialog line will increment to "2" instead of "3". -Dubious- Link to comment Share on other sites More sharing options...
StealthDick Posted December 10, 2018 Author Share Posted December 10, 2018 (edited) I changed all the script surrounding the dialogue again, and the problem still persists. Prior I forgot to mention how the whole exchange between the NPCs go: NPC1 Greets NPC2, NPC2 is supposed to talk next.NPC2 doesn't say anything, the rewardxp runs in his resultscript (begin)NPC1 responds to NPC2 (although NPC2 hasn't said anything)NPC2 then responds to NPC1 with what he was supposed to say prior, but the dialogue stops because the sequence is out of order.No matter how many times I change both of the NPC's scripts it always goes as follows. This morning I changed it again to match other conversations I have in my mod, but the SAME problem remains.Here's my new scripts: NPC1 Script: scn aaaSSSGREETERBunkerScript short bFailOnce short DoOnce Begin SaytoDone aaaSSSGreeterToEnforcer01 SSSBunker12REF.sayto SSSBunker01REF aaaSSSEnforcerToGreeter01 1 1 end Begin SaytoDone aaaSSSGreeterToEnforcer02 SSSBunker12REF.sayto SSSBunker01REF aaaSSSEnforcerToGreeter02 1 1 end Begin OnHit Player if bFailOnce == 0 setobjectivedisplayed aaaSSSQuest 12 0 set bFailOnce to 1 endif END Begin Gamemode if aaaSSSQuest.StartTalking1 == 1 if DoOnce == 0 SSSBunker01REF.sayto SSSBunker12REF aaaSSSGreeterToEnforcer01 1 1 set DoOnce to 1 endif endif if aaaSSSQuest.bEvacuate == 3 .addscriptpackage aaaSSSBunkerEvacuatePackage set aaaSSSQuest.bEvacuate to 4 endif if (.getincell aaaTurnerBunkerINT != 1) && (aaaSSSQuest.bEvacuate == 4) disable endif END NPC2 Script: scn aaaSSSEnforcerBunkerScript short bFailOnce Begin SaytoDone aaaSSSEnforcerToGreeter01 SSSBunker01REF.sayto SSSBunker12REF aaaSSSGreeterToEnforcer02 1 1 end Begin SaytoDone aaaSSSEnforcerToGreeter02 .addscriptpackage aaaSSSEnforcerGreetPackage end Begin Gamemode if aaaSSSQuest.bEvacuate == 3 .addscriptpackage aaaSSSBunkerEvacuatePackage set aaaSSSQuest.bEvacuate to 4 endif if (.getincell aaaTurnerBunkerINT != 1) && (aaaSSSQuest.bEvacuate == 4) disable endif END Begin OnHit Player if bFailOnce == 0 setobjectivedisplayed aaaSSSQuest 12 0 set bFailOnce to 1 endif END All of the conditions in the dialogue resultscript (end) are set up properly, I even changed it to "set aaaSSSQuest.bSSSBunkerConvo to 1(2,3,etc.)"I've even deleted NPC2 and remade him from the ground up believing there was a problem with the NPC itself. So I'm still stumped. Also, this is off-topic, but Geck Extender tells me that I only need one "endif" for an "if" statement, and here I thought the whole time that I could have as much as I wanted. Does the amount of "endif"s actually matter? Edited December 10, 2018 by StealthDick Link to comment Share on other sites More sharing options...
StealthDick Posted December 10, 2018 Author Share Posted December 10, 2018 Also, how exactly do I make the debug.bat? I'm not good at making executable stuff. Thanks. Link to comment Share on other sites More sharing options...
Recommended Posts