Jump to content

TP2 file coding questions


svj

Recommended Posts

10 hours ago, jmerry said:

No overwriting going on. ActionOverride is just "tell this other creature to do something". On that note, if one of those actions is "tell this creature that's speaking to do something", then you shouldn't use an ActionOverride for it. I don't know whether it breaks in dialogues, but it certainly does in scripts; ActionOverride([active creature], [do something]) in a script fails and causes any further actions to not be executed either. If this happens to be a cutscene, it's likely to leave you hanging and unable to do anything but force quit.

You do realize I didn't have Crtl+c Crtl+V at that moment ?
Aka, when you put ActionOverride into script function, you OVER(W)RITE the targeted creatures ACTIONS.

But the point of the message was that one was creature, while the other was a dialog phase, or contingency.
And if you were to code things a little bit better, you wouldn't make these mistakes and you would name things with cleverly so that you couldn't ever mix things up.

Edited by Jarno Mikkola
Link to comment

 

BEGIN rqrugos

CHAIN
    IF ~Global("rqRevanMintiper","GLOBAL",1)
        InParty("rqrev")
        See("rqrev")
        !Dead("rqrev")
        !StateCheck("rqrev",STATE_SLEEPING)~
    THEN rqrevJ rqrevrugos
        ~My dear friend Rugos...~
DO ~SetGlobal("rqRevanMintiper","GLOBAL",2)~
    == rqrugos
    ~Likewise old Captain its good to see you alive.~
    == rqrevJ
    ~They will have to put much more effort to get me under ground.~
    == rqrugos
    ~Good to hear. Let us talk about our enemy.~
    == rqrevJ
    ~Harpers namely Mintiper Moonsilver our old enemy from Moonsea.~
    == rqrugos
    ~Ha! By chance i stumbled on their camp yesterday they are near in Umar Hills west from Umar Cave apparently they are searching for something there.~
    == rqrevJ
    ~What about Mintiper Moonsilver did you saw him?~
    == rqrugos
    ~Yes but he is accompanied by a rather large group of allies.~
    == rqrevJ
    ~We shall pay them a visit sooner or later. By the way have found any work that we can do?~
    == rqrugos
    ~Not yet but will visit old contact of mine as i have heard tavern rumor that he is searching for mercenaries.~
    == rqrevJ
    ~When you will have something send messenger.~
    == rqrugos
    ~Sending messages is not necessary and quite dangerous. Return here after you defeat Mintiper it would be quite dangerous to conduct bussiness while he is alive.~
DO ~SetGlobal("rqRevanMintiper","GLOBAL",3)~
EXIT


/* ------------------------------------------------------------------- Rugos contract no.1 -------------------------------------------------------------------*/

IF ~Dead("rqmintip")
    Global("rqContractsRugosAvailable","GLOBAL",1)~
    THEN BEGIN Rugos1OfferContract
    SAY ~Greetings, I am sure you are here for the mercenary contracts Revan talked to you about.~
    IF ~~ THEN REPLY ~Yes he told me to talk to you.~ GOTO Rugos1Contract
    IF ~~ THEN REPLY ~Yeah that's not the case, Farewell.~ GOTO Rugos1Rejected
END

[revan/d/rqrugos.d] PARSE ERROR at line 41 column 1-2
Near Text: IF
       syntax error

[revan/d/rqrugos.d]  ERROR at line 41 column 1-2
Near Text: IF
       Parsing.Parse_error
ERROR: parsing [revan/d/rqrugos.d]: Parsing.Parse_error
ERROR: compiling [revan/d/rqrugos.d]!
Stopping installation because of error.


Despite compiler saying the problem is at 41 line if i comment out  CHAIN the dialogue compiles
 

Link to comment

 

ERROR locating resource for 'CHAIN3'
Resource [RQ5MINTI.DLG] not found in KEY file:
        [./chitin.key]
ERROR: preprocessing APPEND_EARLY [revan/d/rqrev.d]: Failure("resource [RQ5MINTI.DLG] not found for 'CHAIN3'")
Stopping installation because of error.

I am now compiling the entire .d folder why i am getting this error RQ5MINTI is in d folder do i need to compile my d files separately?

Link to comment

A DLG needs to exist before you can CHAIN to it.

How do you ensure this? Well, it's perfectly valid to do a BEGIN %name% command in your .D to create a DLG file, and then simply move on to something else without putting anything in that DLG file just yet. One mod I checked for reference (an NPC mod, and the dialogue for extra characters involved in the quest) did this for several characters at the beginning of the file.

Link to comment
35 minutes ago, jmerry said:

A DLG needs to exist before you can CHAIN to it.

How do you ensure this? Well, it's perfectly valid to do a BEGIN %name% command in your .D to create a DLG file, and then simply move on to something else without putting anything in that DLG file just yet. One mod I checked for reference (an NPC mod, and the dialogue for extra characters involved in the quest) did this for several characters at the beginning of the file.

Both files rq5minti.d and rqrev.d exist and are in d folder and have content in them 

Edited by svj
Link to comment
1 hour ago, svj said:

Both files rq5minti.d and rqrev.d exist and are in d folder and have content in them 

The .D file is not the fundamental unit here. It can unpack to a .DLG file, multiple .DLG files, part of one .DLG file ... basically, what you just said is irrelevant.

What matters is that, at the time the .D file is compiling and you reach the CHAIN command, the files being chained to exist. If you're spreading the creation commands among different files and compiling them as a batch, you have no way to know whether a .DLG created in one .D exists when you need to reference it in another. In order to ensure that CHAIN and the like work, you need to either (a) put the creation command BEGIN %filename% earlier in the same file as the commands that reference that .DLG, or (b) create the file before you even get to that batch.

Fundamentally, for what you're trying to do, I see no reason not to just put everything into one .D file. It works better that way. You have control over the order that things happen in, so you can ensure that dialogues exist when you need to reference. And of course, your symbolic labels will still be remembered when you use them.

Link to comment

In other words: the name of the d-file is irrelevant, like I already wrote earlier. But inside, you need to define the dlg before you can add lines with CHAIN, i.e. you need to write BEGIN dlgname. This creates the dlg named dlgname, not the d-file itself.

And after the CHAIN, you need to tell the installer which dlg the following states go to, so you need to wrap dialogue states into APPEND dlgname ... END to do so.

Link to comment
IF ~~ THEN BEGIN GalvareyInprisonment
    SAY ~Glad you've decided to cooperate. With my appointment as Herald more good like this can be done. As i said you need not to worry we shall put the spell on you and it will last until we transport you unharmed before High Harper council.~
    IF ~~ THEN REPLY ~Yes cast the spell on me. I shall meet with this Harper Council.~
        DO
            ~ReallyForceSpell(Player1,WIZARD_IMPRISONMENT)
            ReallyForceSpell(rqrev,WIZARD_IMPRISONMENT)~
        EXIT
END

WARNING: cannot verify action ~ReallyForceSpell(Player1,WIZARD_IMPRISONMENT)
           ReallyForceSpell(rqrev,WIZARD_IMPRISONMENT)~: Not_found


This snipped causes compiler warning what can i do about this?

Link to comment

I do have few custom spell that would be used ONLY by NPCs against CHARNAME do i need to install them via the projectile method?

What is minimal amount of coding to achieve this can you post some examples?

Currently if i just want to copy spells into override

Checking for required files ...
Copying and patching 1 file ...
Extending game scripts ...
Copying 1 file ...
ERROR: error loading [/revan/spl/rqmaze.spl]
Stopping installation because of error.

[svj@localhost Baldur's Gate 2]$ ls revan/spl/rqmaze.spl  
revan/spl/rqmaze.spl


 

Link to comment

The minimal amount of coding? COPY the spell, use an action such as ForceSpellRES to reference the spell by its resource name. Or you could actually assign the spell to the NPC, and have a somewhat wider range of actions you could use because of that memorization.

I have no idea what you mean by "the projectile method".

Link to comment
3 hours ago, svj said:

Anybody knows source for bg looking portraits?

Meaning ?
This ? https://gibberlings3.github.io/iesdp/file_formats/ie_formats/bam_v1.htm
And this: https://baldursgate.fandom.com/wiki/Portraits


Or do you mean the artists that made them... no idea.
The fandom has them cathagorized, erhm for their in-game file names:
https://baldursgate.fandom.com/wiki/Portrait_File_Names
More... there's a whole G3 web page dedicated to them... mostly non EE one though:
https://www.gibberlings3.net/gallery/category/1-portrait-packs/
Or AI source to 'enhance them'... 😄

Edited by Jarno Mikkola
Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...