collapse

Author [EN] [PL] [ES] [PT] [IT] [DE] [FR] [NL] [TR] [SR] [AR] [RU] Topic: Any way to access the VDialog vgui?  (Read 8555 times)

Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #15 on: February 20, 2011, 03:34:46 pm »
BurgerMeister was it you that put a new npc "Jane" on the downtown la folder? She has a few npc.SetDisposition("Netural",1)    lines. Is it intentional?
« Last Edit: February 20, 2011, 03:36:50 pm by ColonelAlias »

Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #16 on: February 20, 2011, 04:48:08 pm »
Wesp, there is another unclosed bracket on that tutorial_security_guard

line 41, near the end.

Also another error, don't know if Burgermeister or Wesp:
rico.dlg on downtown la

line 216 (actually, line 215, but the number is 216, however that happened. EDIT: It's a missing line 191, but i don't think that matters):
the third brackets has a python line "npc.SetDisposition("Anger",1)" instead of the "#", maybe it should have been on the 5th or 6th bracket?

Simarly "sire.dlg" on downtown la has this line:
{   170   }{   Fine, you asked for this.   }{      }{   Fine, you asked for this.   }{   0   }{   }{   }{   }{   }{   }{   }{   }{      }

It probably should have been:
{   170   }{   Fine, you asked for this.   }{   Fine, you asked for this.   }{   0   }{   }{   }{   }{   }{   }{   }{   }{      }{      }

ox.dlg on chinatown on line 331 has X in place of a number (i think it's a player line) remember i installed the clan quest mod so i don't know which has this.

Santa Monica / Dream / male_sire.dlg has this:
{   28   }{   Stop!    }{      }{   Stop!    }{   0   }{   }{   pc.SetQuest("madness",3);Find("music").Volume(8)   }{   }{   }{   }{   }{   }{   }
Instead of this:
{   28   }{   Stop!    }{   Stop!    }{   0   }{   }{   pc.SetQuest("madness",3);Find("music").Volume(8)   }{      }{   }{   }{   }{   }{   }{   }


santa monica/Dream/Nines.dlg
{   98   }{   Fine, whatever   }{      }{   Fine, whatever   }{   0   }{      }{   }{   }{   }{   }{   }{   }{   }
should be
{   98   }{   Fine, whatever   }{   Fine, whatever   }{   0   }{      }{   }{   }{   }{   }{   }{   }{   }{      }

santa monica/Dream/Dennis.dlg
line 48 ends with a ) not a }
« Last Edit: February 20, 2011, 05:24:21 pm by ColonelAlias »

Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #17 on: February 20, 2011, 06:47:48 pm »
Ok you might not want to do anything with this large list. It's the dialog lines (not numbers) that for some reason oon't have 13 "{X}". I'm doing a simple validator that you might find useful to avoid common dialog mistakes. One of these validations i'm doing is to check if at Auto-Link dialog always ends on a NPC line (so the count of the dialogs is reset) or on exit.

But the auto link can be clan specific, so i had to tokenize the clans. So that grammar expects 13 "{X}", and this is a list of the lines where there aren't 13 (in the list bellow the first number is the file line, and the second is the column - that may be useless in your text editor because of the tabs. Don't worry, it is always the last part of the line. The errors above were the others found with a more permissive grammar). Also don't be intimidated at the size of the list if you want to fix it. It is half the size it looks because of the grammar tokens.
Quote
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/downtown la/danecopconvo1.dlg line 11:196 mismatched input '\r' expecting '{'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/downtown la/danecopconvo3.dlg line 11:203 mismatched input '\r' expecting '{'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/downtown la/danecopconvo2.dlg line 11:99 mismatched input '\r' expecting '{'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/downtown la/tutorial_security_guard.dlg line 2:68 mismatched input '\r' expecting '{'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/asianvampiretest.dlg line 11:209 mismatched input '\r' expecting '{'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Samantha.dlg line 48:42 missing '{' at '\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Samantha.dlg line 48:46 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Samantha.dlg line 69:39 missing '{' at '\t\t\t\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Samantha.dlg line 69:46 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Samantha.dlg line 74:432 missing '{' at '\t\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Samantha.dlg line 74:437 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Regent.dlg line 23:43 missing '{' at '\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Regent.dlg line 23:46 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Regent.dlg line 48:87 missing '{' at '\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Regent.dlg line 48:91 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Regent.dlg line 69:161 missing '{' at '\t\t\t\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Regent.dlg line 69:168 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Regent.dlg line 74:138 missing '{' at '\t\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Regent.dlg line 74:143 mismatched input '\r' expecting '}'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/male_sire.dlg line 70:39 missing '{' at '\t\t\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/male_sire.dlg line 70:45 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/male_sire.dlg line 75:39 missing '{' at '\t\t\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/male_sire.dlg line 75:45 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_male.dlg line 23:43 missing '{' at '\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_male.dlg line 23:45 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_male.dlg line 53:249 missing '{' at '\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_male.dlg line 53:252 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_male.dlg line 74:158 missing '{' at '\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_male.dlg line 74:160 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_male.dlg line 79:63 missing '{' at '\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_male.dlg line 79:67 mismatched input '\r' expecting '}'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_female.dlg line 23:43 missing '{' at '\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_female.dlg line 23:45 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_female.dlg line 53:249 missing '{' at '\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_female.dlg line 53:252 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_female.dlg line 74:158 missing '{' at '\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_female.dlg line 74:160 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_female.dlg line 79:63 missing '{' at '\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/good_female.dlg line 79:67 mismatched input '\r' expecting '}'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/female_sire.dlg line 70:39 missing '{' at '\t\t\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/female_sire.dlg line 70:45 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/female_sire.dlg line 75:39 missing '{' at '\t\t\t\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/female_sire.dlg line 75:45 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Nines.dlg line 23:43 missing '{' at '\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Nines.dlg line 23:45 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Nines.dlg line 48:42 missing '{' at '\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Nines.dlg line 48:45 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Nines.dlg line 69:365 missing '{' at '\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Nines.dlg line 69:366 missing '}' at '\r'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Nines.dlg line 74:78 missing '{' at '\t\t\t'
/home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/Dream/Nines.dlg line 74:81 mismatched input '\r' expecting '}'


I'm thinking of releasing a simple validator. What are your suggestions for the most common dialog errors?
« Last Edit: February 20, 2011, 06:56:51 pm by ColonelAlias »

Offline burgermeister01

  • Administratrix
  • Antediluvian
  • *****
  • Posts: 544
  • Reputation: +349/-1
Re: Any way to access the VDialog vgui?
« Reply #18 on: February 20, 2011, 07:16:53 pm »
Oh wow, for the dream sequence, I probably made a mistake once, and then copy-pasted to all of the others. Whoops!  :facepalm:

Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #19 on: February 20, 2011, 08:52:31 pm »
A question: Some npc dialogs only have a male response, some have both...
If only the male exists, would it get played with a female pc on that npc? (if it got there ofcourse).
This also happens in pc dialogs. Is this a error? I detected some (when there is no IsMale(pc) check for empty female dialogs or not IsMale(pc) for empty male dialogs)


And is there a especially annoying errors that occurs when doing dialogs?

What does the empty 5 field { } evaluates to? True or False?
Or put in another way, does a empty condition field cause the line to display or not (if it is a pc and if it is a npc please)
« Last Edit: February 20, 2011, 09:16:27 pm by ColonelAlias »

Offline burgermeister01

  • Administratrix
  • Antediluvian
  • *****
  • Posts: 544
  • Reputation: +349/-1
Re: Any way to access the VDialog vgui?
« Reply #20 on: February 20, 2011, 11:20:50 pm »
A question: Some npc dialogs only have a male response, some have both...
If only the male exists, would it get played with a female pc on that npc? (if it got there ofcourse).
This also happens in pc dialogs. Is this a error? I detected some (when there is no IsMale(pc) check for empty female dialogs or not IsMale(pc) for empty male dialogs)


And is there a especially annoying errors that occurs when doing dialogs?

What does the empty 5 field { } evaluates to? True or False?
Or put in another way, does a empty condition field cause the line to display or not (if it is a pc and if it is a npc please)


With the first part of your question, it might help if you gave an example. I'm having a hard time understanding what you mean. If I am understanding what you're saying though, I think the answer is that the 'male' response/option is the default. If no other option exists, then the male version is displayed, which means even if the pc is a female, the male option is used.

To the second part of the question: The empty conditional field evaluated to true, both as an NPC and a PC response. This makes sense because there are many dialog lines in which no conditional statement is used, and those lines are always displayed, so it must evaluate as true.


Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #21 on: February 20, 2011, 11:22:39 pm »
Dheu I was thinking.

And I don't think that a python "simple" walker of the file (to get the number of dialogs and let the original engine do it's thing) would work. The problem is evaluations on the dialogs with side effects.

Say "start a music when this dialog opens". This hypothetical  "side-by-side" evaluator would need to evaluate the python commands to know if the dialog should be displayed. To do that (besides the no doubt complicated machinery of intercepting the dialog engine input) it would need to execute them. And then the real engine would too.

So it's either using the dialog engine and modifying it's input automatically, like it is my idea, or replacing it completely (and how could we do that, turning it off that is?).

Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #22 on: February 20, 2011, 11:50:05 pm »
A question: Some npc dialogs only have a male response, some have both...
If only the male exists, would it get played with a female pc on that npc? (if it got there ofcourse).
This also happens in pc dialogs. Is this a error? I detected some (when there is no IsMale(pc) check for empty female dialogs or not IsMale(pc) for empty male dialogs)


And is there a especially annoying errors that occurs when doing dialogs?

What does the empty 5 field { } evaluates to? True or False?
Or put in another way, does a empty condition field cause the line to display or not (if it is a pc and if it is a npc please)


With the first part of your question, it might help if you gave an example. I'm having a hard time understanding what you mean. If I am understanding what you're saying though, I think the answer is that the 'male' response/option is the default. If no other option exists, then the male version is displayed, which means even if the pc is a female, the male option is used.

To the second part of the question: The empty conditional field evaluated to true, both as an NPC and a PC response. This makes sense because there are many dialog lines in which no conditional statement is used, and those lines are always displayed, so it must evaluate as true.

A example for the PC (venus.dlg):
{   339   }{   I broke into the Natural History Museum.   }{   }{   371   }{   G.Story_State >= 30 and npc.Count()   }{   }{   }{   }{   }{   }{   }{   }{   I looked at dinosaurs after closing time.   }
This is obviously wrong, and i was curious what would happen if you're a female
is the male dialog displayed or not? Should it be displayed considering  that the empty condition rule evaluates to true like you said to me?

And here is a example for a NPC (ash)
{   612   }{   Get out of my club.   }{   }{   #   }{   }{   }{   }{   }{   }{   }{   }{   }{   }

I just asked about the npc line because it seems peculiar that he would have no response to females (though now that i searched in the file i see that that series of responses is not referenced. So it is a dead branch of the dialog).

It is of course possible that these lines are not connected to the main tree. I suppose a visualizer would be nice, but that is a fight for another day.

Here are all of the pc dialogs like this (missing male or female response, no filtering on the condition with IsMale and not a AUTO-LINK, START-CONDITION or AUTO-END)
Code: [Select]
PROCESSING /home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/downtown la/venus.dlg
Condition text: "G.Story_State >= 30 and npc.Count()"
Dialog number 339 has a empty PC female text and a target, no "IsMale(pc)" on the condition text and no keyword in the male text
PROCESSING /home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/downtown la/venus.dlg
Condition text: "npc.Count()"
Dialog number 361 has a empty PC male text, no "not IsMale(pc)" on the condition text and a target
PROCESSING /home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/downtown la/venus.dlg
Condition text: "npc.Count()"
Dialog number 361 has a empty PC female text and a target, no "IsMale(pc)" on the condition text and no keyword in the male text
PROCESSING /home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/downtown la/venus.dlg
Condition text: "npc.Count()"
Dialog number 363 has a empty PC male text, no "not IsMale(pc)" on the condition text and a target
PROCESSING /home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/downtown la/venus.dlg
Condition text: "npc.Count()"
Dialog number 363 has a empty PC female text and a target, no "IsMale(pc)" on the condition text and no keyword in the male text
PROCESSING /home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/therese.dlg
Condition text: ""
Dialog number 715 has a empty PC male text, no "not IsMale(pc)" on the condition text and a target
PROCESSING /home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/santa monica/therese.dlg
Condition text: ""
Dialog number 715 has a empty PC female text and a target, no "IsMale(pc)" on the condition text and no keyword in the male text
PROCESSING /home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/hollywood/ash.dlg
Condition text: ""
Dialog number 602 has a empty PC female text and a target, no "IsMale(pc)" on the condition text and no keyword in the male text
PROCESSING /home/paulo/Desktop/Vampire the Masquerade - Bloodlines/Vampire the Masquerade - Bloodlines/Vampire/dlg/hollywood/ash.dlg
Condition text: ""
Dialog number 603 has a empty PC female text and a target, no "IsMale(pc)" on the condition text and no keyword in the male text
« Last Edit: February 21, 2011, 12:04:21 am by ColonelAlias »

Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #23 on: February 21, 2011, 01:58:23 am »
Do you think that a check for out of sequence lines in the dialog is a good idea?

Out of sequence means something like this:
Code: [Select]
{ 185 }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }

{ 187 }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }
Good or bad idea?

Offline burgermeister01

  • Administratrix
  • Antediluvian
  • *****
  • Posts: 544
  • Reputation: +349/-1
Re: Any way to access the VDialog vgui?
« Reply #24 on: February 21, 2011, 02:22:40 am »
So, with the male/female thing: those lines would appear/play for any character, regardless of gender -- of course, in the case of Venus, assuming that the conditions do indeed evaluate true. The female lines, most of the time are not necessary. Of course, having it present keeps the line 'grammatically correct'. Also, IIRC, the Venus line was added in CE; the Ash line,  I guess is unimplemented in the original game.

As for validating for missing lines. I would love a feature like that. It looks like as you're checking thing over so thoroughly, I haven't really shot myself in the foot over that one as much, but it can be an easy source of errors, and yet hard to detect.




Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #25 on: February 21, 2011, 12:45:50 pm »
Here it is:
http://www.2shared.com/file/m6DbcQEG/BloodlinesValidator.html

I don't have a account so it's better to get it sooner rather than later, before it is deleted.

The readme:
Code: [Select]
To run the project from the command line, go to the dist folder and
type the following:

java -jar "BloodlinesValidator.jar" (dialog_file | filePath_of_the_folder_that_contains_the_dialog_files)
  [(optional booleans) show_line_offsets show_empty_dialogs show_suspicious_autolink show_dead_dialog]

the path can point to at parent folder, so you can easily validate all files by pointing to
{bloodlines_path}\Vampire\dlg

The validations that this makes are grouped into larger groups, and output on this order:
 
syntactic, or the expected form of the parser.
This can detect errors like spaces like this "} {", missing "{ }" or too many.
It can also detect some simple parsing errors like the 1st group not being a { number }
or the 4 group not being a { # | number }. It doesn't specify what is wrong with those though (i lazy).
Also and i'm sorry about this, but to view the semantic warnings, you're going to have
to fix all syntatic rules (they introduced false positives).

The part above, you can trust, since it is antlr reporting. The part below, you should trust ... but verify.
By the way if there is a infinite cycle (aka "i fucked up"), you can use CTRL-C to quit the program on a console. The most likely guilty warning for this is saved for last so you can see the others if this happens.

semantic
Line offsets warnings, warns when dialog lines \"jump\" out of sequence.

Empty dialog warnings, that can be:
    all of the line dialog in any form doesn't exist, and yet, the line has a target.
    the line has a empty male PC dialog, a target and yet, no "not IsMale(pc)" on the condition text
    the line has a empty female PC dialog, a target, no dlg engine keyword on the male part (i noticed they were false positives) and yet, no "IsMale(pc)" on the condition text

Suspicious autolink warnings
    If a line has a autolink anywhere in the male, female or clan responses
         it checks if the line is said by a npc. Obviously this is illegal since NPC lines can't have targets
         it checks if the line has no target as in "empty target
         it checks if the line target is a autolink too, something that strikes me as useless. Maybe it isn't.

Dead dialog warnings, warns when i detect that a dialog:
         is supposed to have target but it doesn't exist according to the parser. This excludes autolink to 0. that does exist.
         is a NPC line { # } but is likely a dead dialog. Works by:
           1) Separate the NPC lines from the rest into a set of its own.
              2) Iterate over those that are not a NPC line, follow the target.
              3) If it is a npc, and it still is on the npc set remove it and all of those NPC lines that follow those (they are reachable).
                 4) if the first non terminal is a autolink or starting condition, follow it
                    5) if a cycle is encountered, clear the cycle detector and go to 2)
                    6) if a npc line is encountered, go 3)
              4) Else print the remainder.
         Even with all of this, this detector can find false positives. Aparantly this is done intentionally to plan for expansion.
         Besides that i can think of a few theorical unintentional false positives too: a start condition with a boolean condition that breaks a cycle on the game but not here for instance.
         Not so sure i did this last on correctly. Check the source if you're a master of this. It is in the jar. To compile the antlr grammar, you'll need antlr (supplied) and use this command line on the grammar file:
         java -cp antlr-3.3-complete.jar org.antlr.Tool VampireDialog.g
         To compile the real program, you'll need to use the generated files with a classpath on antlr and themselves. I gave up on that long ago, and only use ide's when the classpath mixes files and jars.

I don't know if it is useful to you guys.

Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #26 on: February 21, 2011, 10:53:41 pm »
So, with the male/female thing: those lines would appear/play for any character, regardless of gender -- of course, in the case of Venus, assuming that the conditions do indeed evaluate true. The female lines, most of the time are not necessary.

I see. So the detector of unintentional empty dialogs is somewhat flawed by now.
How about this for a condition to detect these?

A empty male dialog and without every clan response filled and without a "not IsMale(pc)" section in the conditionals

for females:
A empty female dialog without a male dialog and without every clan response filled and without a "not IsMale(pc)" section in the conditionals

This is all conditions? I will upload a fixed version with this check if so.

Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #27 on: February 21, 2011, 11:36:22 pm »
Here is one with that changed
http://www.mediafire.com/?p3d9qlgi64d7ygi

new readme
Quote
To run the project from the command line, go to the dist folder and
type the following:

java -jar "BloodlinesValidator.jar" (dialog_file | filePath_of_the_folder_that_contains_the_dialog_files)
  [(optional booleans) show_line_offsets show_empty_dialogs show_suspicious_autolink show_dead_dialog]

the path can point to at parent folder, so you can easily validate all files by pointing to
{bloodlines_path}\Vampire\dlg

The validations that this makes are grouped into larger groups, and output on this order:
 
syntactic, or the expected form of the parser.
This can detect errors like spaces like this "} {", missing "{ }" or too many.
It can also detect some simple parsing errors like the 1st group not being a { number }
or the 4 group not being a { # | number }. It doesn't specify what is wrong with those though (i lazy).
Also and i'm sorry about this, but to view the semantic warnings, you're going to have
to fix all syntatic rules (they introduced false positives).

The part above, you can trust, since it is antlr reporting. The part below, you should trust ... but verify.
By the way if there is a infinite cycle (aka "i fucked up"), you can use CTRL-C to quit the program on a console. The most likely guilty warning for this is saved for last so you can see the others if this happens.

semantic
Line offsets warnings, warns when dialog lines \"jump\" out of sequence.

Empty dialog warnings, that can be:
    all of the line dialog in any form doesn't exist, and yet, the line has a target.
    the line is reachable for males but empty. It has a empty PC male text and not all clan texts, a target, no "not IsMale(pc)" on the condition text.
    the line is reachable for females but empty. It has a empty PC female text and empty PC male text (that overrides the female text) and not all clan texts and a target, no \"IsMale(pc)\" on the condition text

Suspicious autolink warnings
    If a line has a autolink anywhere in the male, female or clan responses
         it checks if the line is said by a npc. Obviously this is illegal since NPC lines can't have targets
         it checks if the line has no target as in "empty target
         it checks if the line target is a autolink too, something that strikes me as useless. Maybe it isn't.

Dead dialog warnings, warns when i detect that a dialog:
         is supposed to have target but it doesn't exist according to the parser. This excludes link to 0, that exit the dialog.
         is a NPC line { # } but is likely a dead dialog. Works by:
           1) Separate the NPC lines from the rest into a set of its own.
              2) Iterate over those that are not a NPC line, follow the target.
              3) If it is a npc, and it still is on the npc set remove it and all of those NPC lines that follow those (they are reachable).
                 4) if the first non terminal is a autolink or starting condition, follow it
                    5) if a cycle is encountered, clear the cycle detector and go to 2)
                    6) if a npc line is encountered, go 3)
              4) Else print the remainder.
         Even with all of this, this detector can find false positives. Aparantly this is done intentionally to plan for expansion.
         Besides that i can think of a few theorical unintentional false positives too: a start condition with a boolean condition that breaks a cycle on the game but not here for instance.
         Not so sure i did this last on correctly. Check the source if you're a master of this. It is in the jar. To compile the antlr grammar, you'll need antlr (supplied) and use this command line on the grammar file:
         java -cp antlr-3.3-complete.jar org.antlr.Tool VampireDialog.g
         To compile the real program, you'll need to use the generated files with a classpath on antlr and themselves. I gave up on that long ago, and only use ide's when the classpath mixes files and jars.
« Last Edit: February 21, 2011, 11:58:07 pm by ColonelAlias »

Offline ColonelAlias

  • Methuselah
  • ****
  • Posts: 327
  • Reputation: +368/-1
Re: Any way to access the VDialog vgui?
« Reply #28 on: February 21, 2011, 11:45:47 pm »
Any feedback?

Edit: Burgermeister i obviously don't understand the format completely. The validator reports you hollywood/robber1.dlg file as having dead NPC talks, however that files doesn't even have starting conditions (or even lines with targets).
So obviously cutscenes don't work like that. Is the dlg file even used for them?
« Last Edit: February 22, 2011, 12:36:14 am by ColonelAlias »

Offline burgermeister01

  • Administratrix
  • Antediluvian
  • *****
  • Posts: 544
  • Reputation: +349/-1
Re: Any way to access the VDialog vgui?
« Reply #29 on: February 22, 2011, 01:07:09 am »
I ran it and saw that I'm only responsible for about 25% of the errors, hah! I'm taking a bit of a break from Vampire modding for a little while, so I probably won't delve in too deep as far as fixing this stuff goes, but this is absolutely a tool I can and will use in the future. I'd be interested to see your src code though = )

As for the cut scene guy, well, that was the first cut scene I made, and I didn't know whether or not a dlg file was necessary. The player never actually talks to the guy, so it doesn't seem necessary. For the sake of being consistent though, it seemed like a good idea, and frankly I didn't want to deal with any issues that would pop up if it wasn't there. For example, I'm not sure if the engine will synch up the sound file with the lip file, if there's no corresponding dialog line.

I have no idea why it would report the guy as being dead. Or how it would even know for that matter.

 

SimplePortal 2.3.7 © 2008-2020, SimplePortal