Jump to content

Scripting Woes


EiriktheScald

Recommended Posts

Is there a list that identifies the ascii codes?
Yes. I have this page from the IESDP (well, the whole thing in fact, but I use this one more than any others) saved locally in my browser so I don't even have to be online to use it.

 

@berelinde - personally, I don't see how that is that much easier - you have to memorise values or have a list of them either way, and I'd get confused even worse if mixing text values in with offset codes, but whatever works. :)

 

Edit: Urk... missed Nythrun's post I guess, but yeah... same thing.

Link to comment

Or, of course, you can shamelessly stealborrow a common template and edit it to your heart's content:

 

  /* Maretha */
 COPY ~BG1NPC/Phase2/CRE/X#MARETH.cre~ ~override~
SAY NAME1 @365
SAY NAME2 @365
SAY INITIAL_MEETING @366
SAY MORALE ~this is before traification if you want hardcoded strings~
SAY HAPPY ~this is before traification if you want hardcoded strings~	SAY UNHAPPY_ANNOYED  ~this is before traification if you want hardcoded strings~	WRITE_LONG UNHAPPY_SERIOUS (BNOT 0x0) //blanks instead of assigning new
SAY UNHAPPY_BREAKING  ~this is before traification if you want hardcoded strings~
SAY LEADER  ~this is before traification if you want hardcoded strings~
SAY TIRED  ~this is before traification if you want hardcoded strings~	 SAY BORED  ~this is before traification if you want hardcoded strings~
SAY BATTLE_CRY1 @367
SAY BATTLE_CRY2 @367
SAY BATTLE_CRY3 @367
SAY BATTLE_CRY4 @367
SAY BATTLE_CRY5 @367
SAY ATTACK1 @368
SAY ATTACK2 @369
SAY ATTACK3 @370
WRITE_LONG ATTACK4 (BNOT 0x0)
SAY DAMAGE @371
SAY DYING @372
WRITE_LONG HURT (BNOT 0x0)
WRITE_LONG AREA_FOREST (BNOT 0x0)
WRITE_LONG AREA_CITY (BNOT 0x0)
WRITE_LONG AREA_DUNGEON (BNOT 0x0)
WRITE_LONG AREA_DAY (BNOT 0x0)
WRITE_LONG AREA_NIGHT (BNOT 0x0)
SAY SELECT_COMMON1 @373
SAY SELECT_COMMON2 @366
WRITE_LONG SELECT_COMMON3 (BNOT 0x0)
WRITE_LONG SELECT_COMMON4 (BNOT 0x0)
WRITE_LONG SELECT_COMMON5 (BNOT 0x0)
WRITE_LONG SELECT_COMMON6 (BNOT 0x0)
WRITE_LONG SELECT_ACTION1 (BNOT 0x0)
WRITE_LONG SELECT_ACTION2 (BNOT 0x0)
WRITE_LONG SELECT_ACTION3 (BNOT 0x0)
WRITE_LONG SELECT_ACTION4 (BNOT 0x0)
WRITE_LONG SELECT_ACTION5 (BNOT 0x0)
WRITE_LONG SELECT_ACTION6 (BNOT 0x0)
WRITE_LONG SELECT_ACTION7 (BNOT 0x0)
WRITE_LONG INTERACTION1 (BNOT 0x0)
WRITE_LONG INTERACTION2 (BNOT 0x0)
WRITE_LONG INTERACTION3 (BNOT 0x0)
WRITE_LONG INTERACTION4 (BNOT 0x0)
WRITE_LONG INTERACTION5 (BNOT 0x0)
WRITE_LONG DIALOGUE_HOSTILE (BNOT 0x0)
WRITE_ASCII 0x2CC ~MARETHA~ #8  // dialog
WRITE_ASCII 0x248 ~MASCRIPT~ #8 // override script
WRITE_ASCII 0x250 ~DRUID3~ #8	// Creature script - Class
WRITE_ASCII 0x260 ~_TASIGHT~ #8 // Creature script - General
WRITE_ASCII 0x280 ~maretha~ #32 // death variable

 

All those WRITE_LONGs are doing is blanking references on an existing file to turn them off when we use it as a base for a new creature. They can all be swapped out for SAY and either a tra reference @20 or the related ~string~ and WeiDU will do its magic :)

Link to comment

Okay, here's another action that doesn't seem to work properly (from my dialog file).

 

IF ~~ THEN BEGIN Chat1.12
SAY @5022 
IF ~~ THEN DO ~SetGlobal("ESEirikMoved","GLOBAL",1) EscapeAreaMove("FW3353",1345,200,4)~ EXIT // Kagain's store
END

 

Instead of walking off screen, he just vanishes like Bilbo Baggins (minus the smoke cloud effects from Gandalf)! Now, I read the description of the action

 

EscapeAreaMove(S:Area*,I:X*,I:Y*,I:Face*)

This effect is like a combination of EscapeAreaDestroy() and MoveBetweenAreas(). The parameters are similar to MoveBetweenAreas(), in that it takes in all the same information (although this is the only action in the game that takes x and y as separate parameters rather than point [x.y] format), but unlike MoveBetweenAras(), the character will search for the nearest travel trigger, move to that, then execute his movement to the specified area. If he cannot find a travel trigger, he will execute the movement.

 

What travel trigger? If by travel trigger it means the I:X and I:Y values, he's not moving to them.

Link to comment

EscapeAreaMove(S:DestinationArea*,I:DestinationCoordX*,I:DestinationCoordY*,I:DestinationOrient)

 

EscapeArea() from the current area and move to area "S" (facing I at I.I)

 

Don't worry if it just disappears or whatever; only worry if it doesn't show up in the destination area.

Link to comment
Don't worry if it just disappears or whatever; only worry if it doesn't show up in the destination area.

 

Yay! I checked and sure enough he was in Kagain's Store -- propping a bucket of water above the door for the next "customer." I couldn't tell if Kagain was red-faced from laughter or steaming mad... :)

Link to comment

Archived

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

×
×
  • Create New...