Library-of-writes
Are you talking about listing offsets (which are found in IESDP) for a quick reference, or building something like
WRITE_LENGTH offset1 1 // comment1
WRITE_LENGTH offset2 2 // comment2
WRITE_LENGTH offset3 ~idiot~ #8 // comment3
...
for each object type, so everyone can just copypaste the stuff into their installer and replace 1, 2, ~idiot~ with whatever they want?
IESDP is a quick enough reference for someone who wants the offset number
No I was thinking of listings like you would actually use inside the tp2
If you want just copy/paste and make adjustments as you see fit (to the example below) then see if you could get a sticky post that would
1. Offer download of macro
2. Re-display the macro code
3. Display the Library of Writes
After that you could open it up for other modders to contribute either their pre-existing write maps or write maps that they've developed to use with your macros. Then at your leisure you could examine the contributed maps edit as needed and add to the Library of Writes post...
Using info from this thread, I'll show you what I was thinking of:
-------------------------------------------------------------------------
Library-of-writes For Use with Qwinn's Area MacrosThe library of writes is a collection of entries used by various modders using the Area Macros created by Qwinn.
The primary function of this library is to allow other modders to have the opportunity to copy and paste proper functioning code rather than doing the work that someone else has already done.
Example:
WRITE_SHORT "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x20 2 // Travel Trigger Flag
This entry is taken from a new Region Trigger addition. To use it for your own new region trigger you would copy the entire line and then change the information to be written.
The components of the write statementThe WRITE command - It's use depends upon the offset being written to and the type of data to be written. See
WeiDU documentation for further information
The new addition to the section offset - This is a variable which is predefined to be the starting offset of your new addition to the section in question.
The index into new additons - In the event of multiple additions being added to the same section, the size of a single section entry is multiplied by 0 for the first section entry, by 1 for the second, by 2 for the third, etc...
The entry within the new section offset - This is a hex offset (it can be decimal if you want) of the given entry within the new addition. Please see
IESDP for more information regarding these values.
The data to be written - Put very simply, it is the data you want to write to the file at the given offset.
Actor Section -- Current List of WritesThese were used for Planescape Torment there may be additional entries which you may need or wish to set.
WRITE_ASCII "Q_NewOffset_Actor" ~Ulthera~ #32 // Name
WRITE_ASCII "Q_NewOffset_Actor" + 0x80 ~ULTHERA~ #8 // CRE
WRITE_ASCII "Q_NewOffset_Actor" + 0x48 ~DULTHERA~ #8 // DLG
WRITE_LONG "Q_NewOffset_Actor" + 0x38 0xffffffff // Unknown
WRITE_SHORT "Q_NewOffset_Actor" + 0x20 1554 // Pos X
WRITE_SHORT "Q_NewOffset_Actor" + 0x22 2026 // Pos Y
WRITE_SHORT "Q_NewOffset_Actor" + 0x24 1554 // Des X
WRITE_SHORT "Q_NewOffset_Actor" + 0x26 2026 // Des Y
WRITE_SHORT "Q_NewOffset_Actor" + 0x34 9 // Orientation
WRITE_LONG "Q_NewOffset_Actor" + 0x40 0x00ffffff // Present
WRITE_SHORT "Q_NewOffset_Actor" + 0x28 1 // Visible
Region Trigger Section -- Current List of WritesThese were used for Planescape Torment there may be additional entries which you may need or wish to set.
WRITE_ASCII "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) ~candle1~ #32 // Name
WRITE_SHORT "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x20 2 // Travel Trigger Flag
WRITE_SHORT "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x22 695 // Left
WRITE_SHORT "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x24 686 // Top
WRITE_SHORT "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x26 804 // Right
WRITE_SHORT "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x28 839 // Bottom
WRITE_SHORT "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x2a 5 // Num of Vertexes
WRITE_LONG "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x2c "Q_Num_Vertx" - 10 // First Vertex Index
WRITE_LONG "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x34 48 // Cursor Frame
WRITE_ASCII "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x38 ~AR0207~ #8 // Destination Area
WRITE_ASCII "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x40 ~fr0109~ #32 // Entrance name
WRITE_LONG "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x60 0x0004 // Party Required Flag
WRITE_SHORT "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x70 749 // Trap Loc X
WRITE_SHORT "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x72 762 // Trap Loc Y
WRITE_ASCII "Q_NewOffset_Trigg" + ("Q_Siz_Trigg" * 0) + 0x7c ~~ #32 // Script Name (BCS)
Spawn Points -- Current List of WritesEntrances -- Current List of WritesContainers -- Current List of WritesItems -- Current List of WritesVertices (Vertex Points) -- Current List of WritesThese are four bytes per coordinate/point first two bytes are the X value the second two bytes the Y value
WRITE_SHORT "Q_NewOffset_Vertx" + 0 804
WRITE_SHORT "Q_NewOffset_Vertx" + 2 779
WRITE_SHORT "Q_NewOffset_Vertx" + 4 784
WRITE_SHORT "Q_NewOffset_Vertx" + 6 686
WRITE_SHORT "Q_NewOffset_Vertx" + 8 698
WRITE_SHORT "Q_NewOffset_Vertx" + 10 736
WRITE_SHORT "Q_NewOffset_Vertx" + 12 695
WRITE_SHORT "Q_NewOffset_Vertx" + 14 839
WRITE_SHORT "Q_NewOffset_Vertx" + 16 804
WRITE_SHORT "Q_NewOffset_Vertx" + 18 779
Ambients -- Current List of WritesVariables -- Current List of WritesExplored Bitmask -- Current List of WritesDoors -- Current List of WritesAnimations -- Current List of WritesThese were used without Qwinn's macros but can be adjusted to work with the macro simply change
"o" to
"Q_NewOffset_Anima" + ("Q_Siz_Anima * X) where X is 0 for a single animation addition or incremented by one for each additional animation addition.
WRITE_ASCII ("o" + 0x00) ~GiveMeANamePlease~ // name this animation entry, you've got 32 characters to work with
WRITE_SHORT ("o" + 0x20) 0x0 // center point x coordinate, you'll have to find these
WRITE_SHORT ("o" + 0x22) 0x0 // center point y coordinate, you'll have to find these
WRITE_LONG ("o" + 0x24) 0xffffffff //hours when it's active, this is active all the time
WRITE_ASCII ("o" + 0x28) ~resref~ // your eight character resource reference for the bam you've made
WRITE_SHORT ("o" + 0x30) 0x0 // animation number within the .bam, I'm assuming there's just one
WRITE_SHORT ("o" + 0x32) 0x0 // stopping frame number within the .bam
WRITE_LONG ("o" + 0x34) 0b00000000000000000001000000000101 // various flags, we're setting "is shown", "not light source", and "display in combat"
WRITE_SHORT ("o" + 0x38) 0x0 // center point z coordinate, you'll have to find these
WRITE_SHORT ("o" + 0x3a) 0x0 // transparency, use a higher number if the door's made of glass
WRITE_SHORT ("o" + 0x3c) 0x0 // starting frame number, the door only needs one frame anyway
WRITE_BYTE ("o" + 0x3e) 0x0 // looping chance where zero equals 100 percent
WRITE_BYTE ("o" + 0x3f) 0x0 // starting delay, shouldn't be any
WRITE_ASCII ("o" + 0x40) ~~ // resref to your palette bitmap, if you have one at all - otherwise, leave blank
WRITE_LONG ("o" + 0x48) 0x0 // unused
Automap Notes -- Current List of WritesTiled Objects -- Current List of WritesProjectile Traps -- Current List of WritesSong Entries -- Current List of WritesRest Interruptions -- Current List of Writes