Jump to content

Newbie Modding Questions


Twani

Recommended Posts

Well, of course if you want to make an undroppable item like the amulet(cloak, helm, ring, gauntlets, boots, armor etc), you can... but then someone will say that they would like to give the NPC the amulet of power for whatever reason. Edwin's amulet is an exception because it's so freaking strong, the whole NPC could be horrible and it would still get a lot of players playing with him, not me though, but that's cause the Conjurer kit is a cheater kit...

Link to comment

Well, yeah, until you run into a bug that destroys your hardworked item completely... for whatever reason...

Care to elaborate? While NI can happily eat your creatures and possibly areas, but I'm not aware of any circumstances in which it could corrupt an item. Edit: and I don't mean this in a contentious way. If there is a problem, I'd like to know about it.

Link to comment

Hm... you guys have gave me a lot to think about.

 

I'll read the Kit information, and see if I can pull it off. It looks hard and sounds hard, but it may be possible. If not? Not too big of a deal. For BG1, I'll just let the character use regular cleric equipment, as no one in BG1 is really using custom equipment anyway. In BG2, I'll give him a custom undroppable scimitar that he's profiant will at least hint at the standard Windwalker abilities to use bladed weapons- and then allow the weapon to be upgraded once in BG2 and once in ToB to be still of some use. I thought about either a bow or a dagger as well, but there's no way I could make them undroppable because the player will likely want to switch him between dual-wielding and ranged at times, and no one else has three custom items anyway. It's not the most elegant way to do this, and I'd prefer going the kit route, but as pointed out, some players won't even want a kit and I don't want to spend too much time making something only a small amount of players are going to use (some people really aren't going to want to lose turn undead/platemail, for instance).

 

I'm not sure if that's the best way to go about it, but I think it'll have to work for now.

Link to comment

Surprise, surprise, I'm having coding difficulties again. This is during the weidu compiling/trying to install.

 

I have say, this line:

+ ~InParty(“%IMOEN_DV%”)~ + ~For Imoen to finally grow up and stop trying to dye my hair pink.~ + bth1.4

I get WARNING: cannot verify trigger ~InParty<"imoen>~: Failure<"lexing: empty token">

 

And that happens with all my globals.

 

IF ~~ DO ~IncrementGlobal("M3AltRoma","GLOBAL",1) RealSetGlobalTimer("M3AltRomaTime","GLOBAL",3600)~ EXIT

END? Cannot verify action, Failure<"lexing: empty token">.

 

IF ~Global(“M3AltTrigCh5”,”GLOBAL”,1)~ and then IF ~~ DO ~SetGlobal(“M3AltTrigCh5”,”GLOBAL”,2)~ EXIT

END ? Cannot verify trigger/action, Failure<"lexing: empty token">.

 

I know full well that the romance script is the exact same script as Branwen's romance script uses. And my Global commands are no different then the Global commands I see in every other mod. What in the world am I missing?

 

Then I've hit my ultimate hurdle.

 

IF ~~ tb2.1
SAY ~When I was young, it was a joke in my family.  They would say Beshaba's mad gaze fell on me, and Lady Luck's smile fell on my sister.  But when it came to my brother, my parents would be silent, and then say the coin had landed on its side.~
IF ~~ + tb3.0

IF ~~ tb3.0 //this line, right here
SAY ~More then my brother, I think that's true for you, leader.  When the goddesses threw their coin, your coin landed edge on.  Tymora and her sister don't plan your destiny.  You are one who makes your own luck.~
++ ~I think you're wrong, and Beshaba's looking down at me.  Losing Gorion, being exiled from Candlekeep, my nightmares, the bounty hunters, being somehow involved in all this madness seems pretty unlucky to me!~ + tb3.1
++ ~Do you truly believe that?~ + tb4
++ ~If the goddesses looked down at the birth of every babe, they'd have no time to go around warring with one another!~ + tb3.2
++ ~You don't seem all that unlucky to me.  You have skill, you have a job of sorts, and you're in good company, if nothing else.~ + tb3.3
++ ~I've always believed that everyone makes their own destiny.  The Goddess's don't have that much influence on us.~ + tb3.4
END

IF ~~ tb3.1
SAY ~It's hard.  I understand.  Yet... you have survived all that, where many would have fallen.  I don't think I would have been able to do the same, if I had been born in your place.  Despite the odds against you, you overcome.~
IF ~~ + tb4
END

 

It's telling me there's a PARSE ERROR at that If ~~ tb3.0 line (Near Text: tb3.0 syntax error). Which is the exact same as all other lines preceding it and going after it. I stare at that line and stare at it, and I can't figure out what about it is wrong. It looks like a perfectly good and decent line to me. It's the same as a hundred other lines before that 1153 one, save for that the tb3.0 code is obviously unique (though I changed around the numbers to see if it was just a case of wediu hating tb3.0- sadly, it was not). I don't understand where I've went wrong, but obviously the installer stops there and won't go any further, so something is clearly wrong.

Link to comment

I was considering attempting to write a script for Hexxat that would check the time of the day and would unequip/requip Dragomir's cloak based on what time it was. I saw that 0x401E Time(I:Time*Time) can be used to check the time of day, but I don't see a trigger that equips/unequips? Is this possible?

 

Also, is there a list of all the commands, checks, triggers, and variables for the scripting language?

Link to comment
I was considering attempting to write a script for Hexxat that would check the time of the day and would unequip/requip Dragomir's cloak based on what time it was. I saw that 0x401E Time(I:Time*Time) can be used to check the time of day, but I don't see a trigger that equips/unequips? Is this possible?

 

Also, is there a list of all the commands, checks, triggers, and variables for the scripting language?

Trigger is same as a thing the script checks... so you need an action that does what you wish. Oversee of triggers, actions, identifiers that the scripting language uses...Unfortunately for you, the vanilla game has no example that gives the exact to do things, so the Equip(**) command is sorta unknown.
Link to comment
I was considering attempting to write a script for Hexxat that would check the time of the day and would unequip/requip Dragomir's cloak based on what time it was. I saw that 0x401E Time(I:Time*Time) can be used to check the time of day, but I don't see a trigger that equips/unequips? Is this possible? Also, is there a list of all the commands, checks, triggers, and variables for the scripting language?
Trigger is same as a thing the script checks... so you need an action that does what you wish. Oversee of triggers, actions, identifiers that the scripting language uses...Unfortunately for you, the vanilla game has no example that gives the exact to do things, so the Equip(**) command is sorta unknown.

 

Would it be possible to permanently equip the Cloak onto Hexxat and remove the cloaks item effects, transfering them to a script controlled ability? Or better yet, can you add script to items? It would awesome if a script could be added to the cloak that only activates the stat drains from 6 DAWN_START to 21 DUSK_START

 

Also,

 

I am attempting to create a custom kit, however I am having trouble implementing some of the features.

 

I have managed to get these working easy peasy,

 

Advantages:

-Can achieve mastery in any melee weapon.

-May place maximum slots in weapon styles.

-Gain HD at the rate of a Cleric

 

Disadvantages:

-May not specialize in any ranged weapons.

 

But am having more trouble with these.

 

-Gains 1/2 attack at levels 7 and 13

I have set, clswpbon = "1 0 2"

The one should set it so that this sorcerer kit receives APR bonuses from proficiency, however I do not see any change in-game.

 

-Uses Cleric THACO progression.

I have attempted to apply an spell effect that increases thaco by one every 3 levels, so that the THACO would match a cleric's progression, however I am seeing no change in game. My CLABELDK.2da file is correctly placed in the override folder along with the spl file.

 

-Gains proficiency points at the rate of a fighter.

This should be covered in the line,

profs = ~4 4~

however, again, I see no change in game.

 

Disadvantages:

-May cast three fewer spells per level per day.

I am not sure how to do this, I see that Beamdog's DD uses a seperate 2da table for spells cast per day and I have made my own but I'm not sure how to get my kit to use it. I attempted to use, ~EldritchKnightKit/KitAbil/MXSPLEK.2da~

however, I get a parsing error.

 

One last thing. As I understand it you cannot change usable equipment for the base class, only add restrictions based on kit. Does this still hold true for the EE games? I'd like to make my martially focused Sorc kit able to use any equipment that a F/M could use. I suppose I could give the kit use any item though I'd prefer not to.

Link to comment
You don't have an END after

 

IF ~~ + tb3.0

 

Doh. Thanks. I fixed that, and fixed a few other of the same mistakes. Going back and forth between CHAIN and SAY confuses me so much sometimes.

 

Now I'm crashing out after what seems to be the end of compiling my J script. The exact error is:

ERROR locating resource for 'APPEND'
Resource [M3ALTJ.DLG] not found in KEY file:
[./chitin.key]
ERROR: preprocessing APPEND_EARLY [tb#_compile_eval_buffer/Altan/Dialogue/M3AltJ.d]: Failure<"resource [M3ALTJ.DLG] not found for 'APPEND' ">

 

I'm not sure what this means. In my tpu file, I have:

 

APPEND ~pdialog.2da~ ~M3ALT M3ALTP M3ALTJ M3ALTD~

UNLESS ~m3Alt~

 

APPEND ~interdia.2da~ ~M3ALT M3BALT~

UNLESS ~m3Alt~

 

And I seemed to end the appends to the compiler's satisfaction in my M3ALTJ.d. Any idea what I'm missing? Grr, I really wanted to get this half-working today, but I keep running in to (what is probably obvious to everyone else) mistakes.

Link to comment

Oh, and I'm still having the trouble with all my variables/in party/globals giving me the Failure<"lexing: empty token"> data (what does that even mean?), if anyone knows what causes that. I wondered if Notepad was using weird Word type quotation marks, but I tried running everything through just plain notepad, and I'm still getting the error.

Link to comment

...No, I had them after the dialog/scripts, not before it. I am such an idiot. Switching their location to before the compiling appeared to solve everything. Thank you so much, I was ready to start losing my mind. Argh, it's just these stupid little mistakes, but I make them anyway. Will keep trying.

Link to comment

Alright. I think I need tp2 help.

 

I got him finally installed, which is great, lovely, and working. Hurray! And I even figured out the problem of him acting like a multiplayer character and coming and approaching the character with automatic kickout dialog by myself (stupid player script). I got myself a drink for that one.

 

Problem? The dreaded 'Altan has nothing to say to you' condition. (Also, I don't think his portrait is working, but the dialog is much more important.)

 

He's set up to have M3Alt as his dialog in DLTCEP. And I think I've set him up to have the dialog in the tp2- it looks the same as other tp2's? And his M3Alt dialog is coded fine:

BEGIN M3ALT

CHAIN IF ~Global("M3AltMetBG","GLOBAL",0)~ THEN M3ALT gr
~Fair winds, traveller.  Did you come from the north?  The south?  Did you see any caravans along the way?~
DO ~SetGlobal("M3AltMetBG","GLOBAL",1)~
END
++ ~I did not.~ EXTERN M3ALT gr2
++ ~Well, I saw what looked to be the ruins of one down south a bit.~ EXTERN M3ALT gr2
++ ~I wasn't really paying attention for them.~ EXTERN M3ALT gr2

(etc, etc)

 

Hm, G3 spellcheck doesn't like British English.

 

Here's what my tp2 looks like, in spoilerblock.

 

 

// I have no idea what I am doing!

 

BACKUP ~Altan/backup~

AUTHOR ~Twani at G3's Modding Q&A forum (mka3721@hotmail.com)~

VERSION ~alpha.00000000million~

 

//Crossplatform stuff stolen from Isra, Gavin, BG1NPC, and everyone else who has ever made a mod for BGEE ever, probably

ALWAYS

ACTION_IF FILE_EXISTS_IN_GAME ~neera.dlg~ THEN BEGIN

/*Tell the player it is using BG:EE stuff */

PRINT ~BG:EE install detected~

INCLUDE ~Altan\Libraries\liam_bgee_vars.tpa~

END ELSE BEGIN

ACTION_IF FILE_EXISTS_IN_GAME ~FW0100.are~ THEN BEGIN

/* Tell the player it is using Tutu stuff */

PRINT ~Tutu install detected.~

INCLUDE ~Altan\Libraries\g3_tutu_cpmvars.tpa~

END ELSE BEGIN

ACTION_IF FILE_EXISTS_IN_GAME ~AR7200.are~ THEN BEGIN

/* Tell the player it is using BGT stuff */

PRINT ~BGT install detected.~

INCLUDE ~Altan\Libraries\g3_bgt_cpmvars.tpa~

/* Tell the player it is not BGEE, Tutu or BGT */

END ELSE BEGIN FAIL ~Please install on BG:EE, Tutu or BGT.~

END

END

END

END

 

// This is how the install starts

BEGIN ~Altan NPC Mod for BGEE, BGT, and BGTutu~

 

// State lines, stolen from camdawg

APPEND ~STATE.IDS~ ~0x80101FEF CD_STATE_NOTVALID~

UNLESS ~CD_STATE_NOTVALID~

 

//Tutu areas need some stuff assigned, apparently; stolen from everyone who's ever made a BGT/BGTutu mod, ever

/* Tutu Area Script Assignment Patching: All Areas Script ID'd */

ACTION_IF FILE_EXISTS_IN_GAME ~FW0100.are~ THEN BEGIN

INCLUDE ~Altan/Libraries/tutu_area_script_assign.tph~

END

 

/* Area Type Flagging */

/* ToSC only: Tutu and BGT */

ACTION_IF (FILE_EXISTS_IN_GAME ~FW1500.are~) OR (FILE_EXISTS_IN_GAME ~ARW500.are~) THEN BEGIN // if TotSC is installed

COPY_EXISTING ~%IsleofBalduranN%.are~ ~override~

~%IsleofBalduranS%.are~ ~override~

~%DurlagsTower%.are~ ~override~

~%Farmlands%.are~ ~override~

READ_BYTE "0x48" "flags"

WRITE_BYTE "0x48" ("%flags%" BOR "0b00010001")

BUT_ONLY_IF_IT_CHANGES

END

 

/* FOREST and OUTDOOR: Tutu and BGT */

ACTION_IF (FILE_EXISTS_IN_GAME ~FW0100.are~) OR (FILE_EXISTS_IN_GAME ~AR7200.are~) THEN BEGIN

COPY_EXISTING ~%FishingVillage%.are~ ~override~

~%Peldvale%.are~ ~override~

~%LionsWay%.are~ ~override~

~%CoastWay%.are~ ~override~

~%Larswood%.are~ ~override~

~%ShipwrecksCoast%.are~ ~override~

~%HighHedge%.are~ ~override~

~%MutaminsGarden%.are~ ~override~

~%Lighthouse%.are~ ~override~

~%RedCanyons%.are~ ~override~

~%SouthBeregostRoad%.are~ ~override~

~%Ulcaster%.are~ ~override~

~%ArchaeologicalSite%.are~ ~override~

~%FishermansLake%.are~ ~override~

~%NorthNashkelRoad%.are~ ~override~

~%LonelyPeaks%.are~ ~override~

~%FirewineBridge%.are~ ~override~

~%BearRiver%.are~ ~override~

~%ValleyoftheTombs%.are~ ~override~

~%DryadFalls%.are~ ~override~

~%FireLeafForest%.are~ ~override~

~%GibberlingMountains%.are~ ~override~

READ_BYTE "0x48" "flags"

WRITE_BYTE "0x48" ("%flags%" BOR "0b00010001")

BUT_ONLY_IF_IT_CHANGES

 

/* OUTDOOR ONLY: Tutu and BGT */

COPY_EXISTING ~%GnollStronghold%.are~ ~override~

~%NashkelMines%.are~ ~override~

~%FriendlyArmInn%.are~ ~override~

~%Temple%.are~ ~override~

~%NashkelCarnival%.are~ ~override~

READ_BYTE "0x48" "flags"

WRITE_BYTE "0x48" ("%flags%" BOR "0b00000001")

BUT_ONLY_IF_IT_CHANGES

 

/* CITY and OUTDOOR */

COPY_EXISTING ~%WyrmsCrossing%.are~ ~override~

~%Candlekeep_Ch6%.are~ ~override~

~%Gullykin%.are~ ~override~

READ_BYTE "0x48" "flags"

WRITE_BYTE "0x48" ("%flags%" BOR "0b00001001")

BUT_ONLY_IF_IT_CHANGES

END

 

 

 

// The which BG install you got scripting stolen from Isra and everywhere else

ACTION_IF FILE_EXISTS_IN_GAME ~FW0100.are~ THEN BEGIN

// Area scripts

EXTEND_TOP ~_AR2300.bcs~ ~Altan/Script/fw2300.baf~ EVALUATE_BUFFER

 

 

END ELSE BEGIN

ACTION_IF FILE_EXISTS_IN_GAME ~AR7200.are~ THEN BEGIN

 

// Area scripts

EXTEND_TOP ~AR6800.bcs~ ~Altan/Script/fw2300.baf~ EVALUATE_BUFFER

 

 

END ELSE BEGIN

ACTION_IF FILE_EXISTS_IN_GAME ~neera.dlg~ THEN BEGIN

 

// Area scripts

EXTEND_TOP ~AR2300.bcs~ ~Altan/Script/fw2300.baf~ EVALUATE_BUFFER

 

 

END

END

 

 

// This adds the meat, as in, the dialog and the horrible scary scripting in to the game

 

COMPILE EVALUATE_BUFFER ~Altan/Dialogue/M3Alt.d~

COMPILE EVALUATE_BUFFER ~Altan/Dialogue/M3AltJ.d~

COMPILE EVALUATE_BUFFER ~Altan/Dialogue/M3AltP.d~

COMPILE EVALUATE_BUFFER ~Altan/Dialogue/M3BAlt.d~

 

COMPILE EVALUATE_BUFFER ~Altan/Script/M3AltS.baf~

COMPILE EVALUATE_BUFFER ~Altan/Script/M3AltD.baf~

 

ACTION_IF FILE_EXISTS_IN_GAME ~neera.dlg~ THEN BEGIN

COMPILE EVALUATE_BUFFER ~Altan/Dialogue/M3AltEE.d~

END

 

END

 

ACTION_IF (FILE_EXISTS_IN_GAME ~FW0100.are~) OR (FILE_EXISTS_IN_GAME ~ar7200.are~) THEN BEGIN

COPY ~Altan/Portraits~ ~override~

END ELSE BEGIN ACTION_IF FILE_EXISTS_IN_GAME ~neera.dlg~ THEN BEGIN

COPY ~Altan/Portraits/bgee~ ~override~

END

END

 

// This adds Altan in to the game, and adds his unvoiced soundset. Because people love unvoiced soundsets.

COPY ~Altan/Creature/M3Alt.cre~ ~override/M3Alt.cre~

SAY NAME1 ~Altan~

SAY NAME2 ~Altan~

SAY MORALE ~I don't intend on dying here! Pull a retreat, and regroup!~

SAY HAPPY ~I like this group. You're good company.~

SAY UNHAPPY_ANNOYED ~Bah.~

SAY UNHAPPY_SERIOUS ~Must we act like rabid dogs? This... isn't how we should be. Let's change.~

SAY UNHAPPY_BREAKING_POINT ~No. Just no. I refuse to go along with this any longer.~

SAY LEADER ~Leader? Okay. I'm just going to pick a direction, and walk that way until we can't walk any longer. We're sure to see something new. ...You didn't expect me to have actual plans, did you?~

SAY TIRED ~I need rest. Want me to track down a safe spot to set up camp?~

SAY BORED ~It would be nice to fly right now. At least if we're going to stay in one spot, I could get a better view...~

SAY BATTLE_CRY1 ~Shaundakul, guide my aim.~

SAY BATTLE_CRY2 ~I'll show mercy if you lay yourself at my feet. If not...~

SAY BATTLE_CRY3 ~Make peace with your god, as you'll find no peace with mine!~

SAY BATTLE_CRY4 ~Fall already!~

SAY BATTLE_CRY5 ~Now I'm irritated. Die!~

SAY DAMAGE ~Mmf!~

SAY DYING ~I didn't think... it would... end this way...~

SAY HURT ~Healer, heal thyself... ugh.~

SAY AREA_FOREST ~Finally, somewhere peaceful. Let's stay here a while.~

SAY AREA_CITY ~Another city, another bad memory, another place to hate. Do we have to be here?~

SAY AREA_DUNGEON ~I miss the wind.~

SAY AREA_DAY ~What a beautiful day. Too bad we're so busy.~

SAY AREA_NIGHT ~I don't mind the night.~

SAY SELECT_COMMON1 ~What can I do?~

SAY SELECT_COMMON2 ~Fair winds.~

SAY SELECT_COMMON3 ~Is something wrong?~

SAY SELECT_COMMON4 ~Aywa? I mean, yes?~

SAY SELECT_COMMON5 ~Leader?~

SAY SELECT_COMMON6 ~If you need something, just ask.~

SAY SELECT_ACTION1 ~Your will.~

SAY SELECT_ACTION2 ~I can do that.~

SAY SELECT_ACTION3 ~If you think that's best.~

SAY SELECT_ACTION4 ~Aye.~

SAY SELECT_ACTION5 ~Orders are orders, I guess.~

SAY SELECT_ACTION6 ~Doing it now.~

SAY SELECT_ACTION7 ~You direct, I do.~

SAY CRITICAL_HIT ~Hah! Shaundakul guides.~

SAY CRITICAL_MISS ~Well, that was just... bad. Really bad.~

SAY TARGET_IMMUNE ~My weapon's not doing anything. Should I switch to spells?~

SAY INVENTORY_FULL ~I'm sorry, but my pack is only so big. I had to drop something... that wasn't breakable, was it?~

SAY SELECT_RARE1 ~All I want is one giant whirlwind. Just one. That's not too much to ask for, is it?~

SAY SELECT_RARE2 ~Can we go to Myth Drannor next? After we finish this quest, maybe? Please?~

SAY SPELL_DISRUPTED ~Blast, lost my spell!~

SAY HIDDEN_IN_SHADOWS ~To the shadows I go.~

SAY BIO ~When asked about his past, Altan gets a distant look on his face. He says he was born to a merchant family in Calimport, but left the city as a runaway when he was young. Following a near death experience in the desert, he turned to the worship of Shaundakul. Since then, he's travelled around Faerun. For the last few years, he's been running caravans along the Sword Coast. He speaks of recent events with fondness and good cheer, but seems disinclined to reveal more about his distant past.~

 

// Adding the Appends, stolen from Branwen and Isra

APPEND ~pdialog.2da~ ~M3ALT M3ALTP M3ALTJ M3ALTD~

UNLESS ~m3Alt~

 

APPEND ~interdia.2da~ ~M3ALT M3BALT~

UNLESS ~m3Alt~

 

 

Can anyone see where I'm failing to get a dialog assigned? His creature does have the right dialogue (and portraits, for that matter) assigned to him: I just re-checked it. So... I'm not sure where I'm messing up. Any thoughts?

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...