Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Oblivion Construction Set Extender and Bugfixes
01-02-2011, 05:59 AM,
#11
 
One small thing Sandor might want to take note of...

Quote:Mark as Unmodified

This context menu tool marks the selected record as unmodified

Could someone get away with some sneaky editing?
The Gecko would still pick it up right...
Reply
01-02-2011, 06:36 AM,
#12
 
I still haven't installed it (I won't until it's had more time to be tested/until I know it has no adverse effects on large scale modding), and TBH I can survive with the current CS. It's still an admirable addition to the toolset and I'm interested in seeing how it is received. Smile

To answer your question though, my understanding is that the CS will only ever save anything that is marked as changed. If something is marked as unchanged, that will not be saved to the ESP. Confusedhrug:

To answer an earlier question, I believe that the user manual said something about fixing the .lip generator.
Reply
01-02-2011, 09:39 AM,
#13
 
Quote:Originally posted by InsanitySorrow
DL it, seriously Big Grin, Fixes some CS bugs as well as getting rid of all the complaints it makes, plus a ton of other stuff.
It depends on how you define 'complaints'.
If you refer to the errors during the loading process it makes this tool useless, unless the editor warnings are still available.

The loading errors allow me to fix, assess and review a file.
For example PG connection errors, EDID duplicates, teleport link problems, attached to wrong cell etc. etc.


Quote:Originally posted by AnImpatientFan
The Gecko would still pick it up right...
Yes.

BTW nice catch. Smile
Dum loquor, hora fugit  - While I speak the time flies



Ovid 43 BC - 17 AD
Reply
01-02-2011, 09:50 AM,
#14
 
Quote:
Quote:Originally posted by AnImpatientFan
The Gecko would still pick it up right...
Yes.

So even if I marked it as unmodified it would still save to the .esp?

If it does what I think it does, it could save some time when cleaning records in the Gecko etc.

Quote:It depends on how you define 'complaints'.
If you refer to the errors during the loading process it makes this tool useless, unless the editor warnings are still available.

The loading errors allow me to fix, assess and review a file.
For example PG connection errors, EDID duplicates, teleport link problems, attached to wrong cell etc. etc.

Instead of a pop up all the warnings are logged onto another window that is initiated on startup of the .exe.

So PG errors and all that are logged straight onto the CSE log window.
Reply
01-02-2011, 10:03 AM,
#15
 
Quote:Originally posted by AnImpatientFan
Quote:
Quote:Originally posted by AnImpatientFan
The Gecko would still pick it up right...
Yes.

So even if I marked it as unmodified it would still save to the .esp?

If it does what I think it does, it could save some time when cleaning records in the Gecko etc.
I meant it the other way around, I was referring to 'sneaky'.
If something gets changed the Gecko will list it.

Unchanged content won't be saved.
I don't have the tool installed but it's easy enough to test it.

Change something in an interior cell.
Then mark it as unmodified, save the esp and open it with the Gecko.
If it works as intended there's no cell change listed.


Quote:Originally posted by AnImpatientFan
Quote:It depends on how you define 'complaints'.
If you refer to the errors during the loading process it makes this tool useless, unless the editor warnings are still available.

The loading errors allow me to fix, assess and review a file.
For example PG connection errors, EDID duplicates, teleport link problems, attached to wrong cell etc. etc.

Instead of a pop up all the warnings are logged onto another window that is initiated on startup of the .exe.

So PG errors and all that are logged straight onto the CSE log window.
Great, that sounds fine. Smile
Dum loquor, hora fugit  - While I speak the time flies



Ovid 43 BC - 17 AD
Reply
01-02-2011, 10:10 AM,
#16
 
Quote:Originally posted by sandor
Quote:Originally posted by AnImpatientFan
Quote:
Quote:Originally posted by AnImpatientFan
The Gecko would still pick it up right...
Yes.

So even if I marked it as unmodified it would still save to the .esp?

If it does what I think it does, it could save some time when cleaning records in the Gecko etc.
I meant it the other way around, I was referring to 'sneaky'.
If something gets changed the Gecko will list it.

Unchanged content won't be saved.
I don't have the tool installed but it's easy enough to test it.

Change something in an interior cell.
Then mark it as unmodified, save the esp and open it with the Gecko.
If it works as intended there's no cell change listed.

I see.
Might be useful if you accidentally edit something.


Quote:Originally posted by AnImpatientFan
Quote:It depends on how you define 'complaints'.
If you refer to the errors during the loading process it makes this tool useless, unless the editor warnings are still available.

The loading errors allow me to fix, assess and review a file.
For example PG connection errors, EDID duplicates, teleport link problems, attached to wrong cell etc. etc.

Quote:

Instead of a pop up all the warnings are logged onto another window that is initiated on startup of the .exe.

So PG errors and all that are logged straight onto the CSE log window.
Great, that sounds fine. Smile

Just like this:

[Image: sandordemo.png]

I think you can filter out all the other text in the window that you don't need via preferences.
Reply
01-02-2011, 10:56 AM,
#17
 
I'd love to hear more about this as you hear about it. We use OBSE anyway so it's no problem. Are they planning on listing the features, do you think or would it be worth recording things as we find them ourselves?

Nevertheless, I'm adopting TID's approach by not touching it until it's received the thumbs-up.

Many thanks to KP for alerting me. :goodjob:
Cunning Linguist (Writer and Voice Actor - Lost Spires, St and many, many more.)
Lizard King - Leader of the Black Marsh mod
[Image: Buserbar.jpg]
Reply
01-02-2011, 11:47 AM,
#18
 
Doubt it really counts for much, but I'm using it :yes:

The Lip gen is fixed, but you need to CS 1.0 EXE file inside your OB folder, plus you need to edit the CS INI to allow multiple instances of the CS. Not tried it yet though.

I should have mentioned the complaints go into a seperate window xD
[color="#9ACD32"]How do you Skyrim? Show Us in TES Alliance's [url="http://tesalliance.org/forums/index.php?/forum/112-official-skyrim-contest/"]Salute to Skyrim Contest[/url]![/color]
Reply
01-02-2011, 04:04 PM,
#19
 
Just for future link n' click handiness (since I don't see a linky for this yet) -

Here is the Bethesda RELZ thread for shademe's CSE:

http://forums.bethsoft.com/index.php?/to...-extender/

He/she has included a quick listing of the features and fixes, within the "spoiler" tags, in their OP of the above thread.

Of course, you still have to read the multi-page "README" that comes with the CS extender, to fully grasp what has changed, how, and how to use the new features.

I have not downloaded the CSE - yet. I plan to eventually, though.

Koniption
Yeah, don't let those little turds get you down. Dingleberries stick for a while, but eventually they fall off. Cool
Reply
01-02-2011, 09:44 PM,
#20
 
Quote:· Creation and modification of master files:
Master files can be actively edited and saved in the CS by setting them as active plugins. They will retain their master file status upon saving.
· Modification of master file header info:
The Author and Description fields of master files are no longer disabled by default and can be edited like any other plugin file.
· Removal of the need for mod de-isolation:
The CS will now automatically save loaded ESP files as masters of the active plugin.
· Enhanced Find Text tool:
Entries in the find text dialog can directly be invoked for editing, i.e., double clicking the results of a search will bring up the corresponding item’s dialog box or load the object into the render window if it is a reference.
· Loading of plugins with missing masters:
The CS no longer exits with an error message when a loaded plugin has a missing master. It will now skip the master altogether.
· Door markers have property dialogs:
Double clicking on door markers will now bring up their reference properties dialog box.
· Warning message boxes are forever banished:
Warnings generated by the CS are now logged to the new Console window.
· Fast Exit for the CS:
Similar to the FastExit plugin for the runtime; quickly exits the CS.
· Saving plugins as ESM files:
The CS can now save plugins as either ESP or ESM files.
· Enhanced Save Script confirmation box:
The confirmation message box now has a cancel option.
· Enhanced Recompile All Scripts tool:
The recompile all scripts tool now only parses scripts in the active plugin.
· Logging of recompile results:
The results of a recompile operation are logged to the Console.
· Icons with mipmaps are allowed as usable textures:
Icons with mipmaps can be previewed correctly and the CS no longer generates errors about the matter.
· Unknown record and group types are allowed:
Plugins containing unknown records, sub records or group types no longer crash the CS.
· Maximum compiled script size doubled:
Compiled bytecode size has been increased to 32KB.
· Script compiler errors accumulate:
Compiler errors are displayed on a per-script basis.
· Saving plugins when there are open dialogs:
The ‚Allow Unsafe Saves CS INI setting is permanently enabled.
· BSA Archives are no longer loaded selectively:
All BSA archives in the Data folder are loaded at startup, regardless of their connection to an active plugin.
Fixes for existing bugs
· Response editor microphone bug:
Fix for the CTD that occurs on machines with Realtek soundcards, when the response window is initialized without a microphone plugged in its socket.
· Topic info data reset bug:
Fix for the bug that automatically clears result script text and info flags if they are visible when a new topic is added to the topic list.
· Face-Gen bug:
Fix for the CTD that occurs due to the improper initialization of the facegen renderer in NPC and creature dialogs.
· Identical-to-master dialog and worldspace edit bug:
Fix for the version control related bug that makes unnecessary edits to cells, dialogs and worldspaces should one of the plugin’s masters have an active record of the same.
· Race description dirty-edit bug:
Fix for the bug that copies race description from one race record to another if the latter were to invoke the spell checker.
· Pink water bug:
Not a bug per-se, but what the heck! Fix for the ugly pink water used by default.
· BS-Assertion bug:
This bug is deep rooted in the editor code and tends to cause a fairly large number of CTDs for no reason.
· Render window menu item bug:
Fix for the bug that prevented the Render window for being closed when using the View > Render Window main menu item.
· Topic info copy bug:
Fix for the bug that caused the wrong topic info record to be flagged as modified during a copy operation.
· Lip Sync Generator:
The infamous lip sync tool has been finally fixed! More details in the next section.
Construction Set Extender
· · ·
New tools
· Script Editor:
The CSE Editor is a complete replacement for the CS’ vanilla script editor. It has been written from scratch and is basically superior to the vanilla in every way. Its design is supposed to be intuitive enough to allow even new CS users to get used to it and its many advanced features.
I’d denote important points of interest in the screenshot below but my Photoshop skills are all but extant.
The CSE Editor is a tabbed script editor, as obvious as it may seem. Each editor window is called a tab container while the actual editor component (the one with the text editor control) is called a workspace. A tab container is always spawned with an empty workspace (think of a workspace as a vanilla editor). It can hold an arbitrary number of workspaces and allows operations such as tab rearranging and tab tearing. The very first tab seen above is the ‘New tab’ button; it creates a new workspace in its tab container.
Tabs can be rearranged by dragging them across the tab strip. Tab tearing too is centered on the tab strip. There are two operations related to tab tearing:
1. Allocation – This involves dragging a tab out of its tabstrip and elsewhere. This spawns a new tab container at the point of release and moves the torn tab into it.
2. Relocation – Tabs can be moved b’ween tab containers seamlessly. This is done by tearing a tab and releasing it at another tab strip. If done correctly, the torn tab will be relocated to its new container.
On to the workspace - This is the primary component of the editor. Every component below the main tool bar is a child of the workspace. Each workspace is isolated, meaning each has its own controls (text editor, line number margin and such). Here are the list of the buttons/controls and their significance in the order of appearance (New button – Progress bar in the bottom right):
· New – Creates a new script. On initial use in a workspace, all controls become enabled and usable.
· Open – Opens the ‘Select Script’ dialog for script selection. More on this:
Construction Set Extender
· · ·
The list view displays all the loaded scripts and the text box to the right shows a preview of the selected script. The textbox at the bottom can be used to select a particular script by its editorID or formID. Multiple scripts can be selected in the list view during an ‘Open’ operation and this is where the ‘Select Script(s)’ button comes to play. The selected scripts are loaded neatly into their own tab on clicking it. The list view can be sorted by each column. The first column denotes the state of each script – A golden star denotes that the script is from an active plugin and an ‘X’ mark denotes that the script is deleted. The list view is sorted by status on initialization.
· Save – Attempts to compile and save the loaded script. This button has a drop down
o Save script but don’t compile – This does as it says. On loading a non-compiled script, the editor will generate an error warning you about the script’s status.
o Save script and active plugin – This tool is mostly a luxury. It attempts to compile and save the loaded script but saves the active plugin regardless of the compilation result.
· Previous – Loads the previous script, if any.
· Next – Loads the next script, if any.
· Recompile all active scripts – Attempts to compile and save every script in the active plugin. Failed compilation results in an entry in the console.
· Recompile dependencies – Attempts to compile and save any scripts (regular and result scripts) that might reference the loaded script and prints a detailed report to the console.
· Delete – Opens the ‘Select Script’ dialog for the selection of the script to be deleted.
· Script type – Selects the loaded script’s type.
· Save all open scripts – Attempts to compile and save every script in the tab container.
· Navigate back – Jump back in the navigation stack (more on it later).
· Navigate forward – Jumps forward in the navigation stack.
· Preferences – Opens the preferences window. Some changes may require a restart of the editor.
The ‘Modified’ status of a script is shown in its tab – A dark icon represents ‘No change’, a colored icon denotes ‘Script changed’.
The bottom status bar is actually a splitter bar which can be moved to resize the editor area and show the controls beneath it. The buttons on it are as follows:
· Toggle offsets – Redraws the line number margin to display line offsets in place of line numbers. These offsets are useful when debugging OBSE errors as they only mention script offsets. The button disables itself if the ‘Modified’ status changes, and stays that way until the script is compiled.
· Common textbox – Take input for the various functions in the Edit menu.
· Edit menu:
o Find – Find all instances of a string in the loaded script. Results are displayed in a list view below the bottom status bar and pointers are placed at the locations of the query text.
o Replace – Replaces all instances of a string in the loaded script. The search string must first be entered, and then the replace string. The replacement string can be a null string, in which case all occurrences of the search string will be purged.
o Go to Line – Jumps to the given line number.
o Go to Offset – Jumps to the given script offset.
· Message list – Standard output for the script validator, preprocessor and the compiler. Custom messages are also displayed here. Double clicking on a non-message item will move the caret to the appropriate line; otherwise remove it from the list.
· Find results – Displays a find operator’s results. Closing this list view will also remove all placed pointers. Double clicking on an item will move the caret to the appropriate line.
· Bookmark list – Displays stored bookmarks for the loaded script, if any. Double clicking on an item will move the caret to the appropriate line.
· Dump script – Saves the loaded script as a file of arbitrary type in a selected folder.
o Dump all tabs – Saves all open scripts to a selected folder as text files.
· Load script – Loads a plain text type file from disk into the editor. Replaces any existing content.
o Load multiple scripts into tabs – Loads multiple scripts into a tab of their own.
· Get variable indices – Attempts to compile and save the loaded script. If successful, enumerates every variable in the script and its type and index. Indices can be edited by double clicking on the desired index cell.
· Update variable indices – Only used in conjunction with the above tool. Updates the script with the modified (if any) variable indices. This is an advanced tool and must be used with care as it can easily break scripts.
· Progress bar – Show the compiled byte code size of the loaded script.
Construction Set Extender
· · ·
The editor’s context menu offers quick access to some of its features. ‘Toggle comment’ places or removes
a semicolon at the line under the mouse cursor. ‘Toggle bookmark’ allows the creation of bookmarks
based on particular lines. Since they are saved with each script, every script can have its own set
bookmarks. ‘Copy to edit box’ copies the text under the mouse cursor to the common text box. Find
quickly searches for the same. ‘Developer Page’ is a special menu item that appears on select keywords. In
most cases, such keywords turn out to be command/function identifiers. OBSE plugin writers can interoperate
with CSE to add specific links to each of their commands though this interface. Another special
menu item is the ‘Jump to <’ button. It appears when the text under the mouse cursor is a legal scriptable
object or script (like a quest or an object reference). Clicking it can either create a new workspace and load
the jump script if it isn’t open in the parent tab container, or switch to the workspace that has the script
loaded. Each jump is tracked internally by a navigation stack. The main tool bar’s ‘Navigate Forward’ and
‘Navigate Backward’ can be used in this context. The ‘Add Message’ tool can be used to add notification
messages that will show on script load. Existing messages can be deleted by double clicking them in the message list.
The CSE editor has further more features:
· Auto-indentation – Script lines are automatically indented and outdented depending upon the script structure. The script writer can carry
on with coding without having to worry about indentation.
· Toggle comment – Single and multiple line(s) can be commented in/out with this tool. It uses the first line in its selection as a reference to
the operation it performs i.e., if the first line in the selection is already commented, the operation will uncomment all of the selected lines.
· Line limit indicator – The editor displays an indicator when the number of characters in a script line exceeds the maximum limit of 512.
· Tab indentation – Lines can be batch indented and outdented by using the Tab key with and without the Shift key modifier.
· Persistent Fonts – Not much of a feature but something that many have pined for.
Beyond the above, the editor has 3 main components to it:
· IntelliSense
· Script Validator
· A preprocessing engine called ‘A preprocessing engine’
INTELLISENSE
This component provides easy referencing of commands, local
variables, remote scripts and their variables. The component maintains
a database of usable commands/functions, vanilla or OBSE-related, user
defined functions and quests. This database is updated every 10
minutes to keep recent changes accessible to the user. The interface it
uses is similar to Microsoft Visual Studio’s – A context specific list of
reference items. The interface popup will appear after a custom number
of characters following a delimiter (adjustable in the Preferences
window) and will filter its items as you type. When visible, the Up and
Down keys are used to navigate the list and the Tab key to insert the
selected item. The Escape key can be used to close the popup. Each
item has a description of its down that is determined by its type:
· Commands – Descriptions include command alias, description, number of parameters, command source and return type. Those that require a
calling reference aren’t displayed unless the last typed identifier is a dot operator and the calling reference is an object placed in the world or a
reference variable.
· Variables – Descriptions include delimited comments following their declaration and their type. E.g. short sSomeVar ; Stores some
value
· Quests – Descriptions include the name field of the quest and the editorID of the quest script, if any.
· User Defined Functions – Take the following UDF script
Scn test
; this is an UDF script
; some text – foo
; more foo
Short sArg1 ; Some arg
Float fArg2 ; Another arg
Begin function {sArg1 fArg2}
Let sArg1 := 111
Setfunctionvalue sArg1
End
The description will include the comment text b’ween the script name declaration and the first local variable’s. Arguments are treated as
variables and enumerated. And finally, the return type of the UDF is stated.
Furthermore, IntelliSense tracks what you type and displays the interface list in a fairly intelligent manner. It supports 3 identifiers:
· Set or Let – Both of these populate the list with local variables and quests.
· Call – Populates the list with user defined functions.
· Dot (.) – Context sensitive. If the identifier before the dot operator is a scriptable object, such as a quest, it will display its script’s variables
and also commands that require a calling reference (if the calling reference is an object placed in the world or a reference variable).
IntelliSense allows the quick lookup of a valid identifier by double clicking it; this brings up an info tip describing it.
Construction Set Extender
· · ·
SCRIPT VALIDATOR
The script validator catches errors that the vanilla script compiler doesn’t. The following errors are those that are caught:
· Invalid block types for non-object scripts.
· Script name re-declarations.
· Superfluous expressions in commands.
· Identifiers that start with integers.
· Identifiers with invalid characters.
· Nested variable declarations.
· Variable re-declarations.
· Unreferenced variables.
The token parser expects operators, operands and function arguments to be delimited by one of the following characters: ., (){}[]\t
A PREPROCESSOR ENGINE
The editor has a preprocessor engine that allows script writers to use various preprocessor directives similar to Visual Studio’s.
· //define – Defines a preprocessor macro, similar to #define in VS. Macro names must be in uppercase and can only contain alpha-numerics
and underscores. They must be delimited with one of the following chars to be recognized: ., (){}[]\t. Macro values can have any
character and aren’t limited by delimiters. They can be used in any context as the preprocessor simply replaces the macro identifier with its
value before compilation. For instance,
//DEFINE _DEBUG 1
IF _DEBUG
PRINT "THIS MESSAGE WILL BE PRINTED IF _DEBUG IS SET TO A NON-ZERO VALUE"
ENDIF
Standard macros can be defined in the ‘STDPreProcDefs.txt’ file. These macros are always parsed during a second pass to keep those
defined in scripts from being invalidated.
· //import – Allows external text to be inserted into scripts, similar to #include in VS. The text files to be inserted must be present in the
‘Data\Scripts’ directory. Consider the following example,
DATA\SCRIPT\TESTSNIP.TXT
FLOAT FQUESTDELAYTIME
SHORT DOONCE
LONG GOLDVALUE
SCRIPT ZZTESTQS
SCN ZZTESTQS
//IMPORT “TESTSNIP”
BEGIN GAMEMODE
PRINT “FOO”
END
PREPROCESSED SCRIPT
SCN ZZTESTQS
FLOAT FQUESTDELAYTIME
SHORT DOONCE
LONG GOLDVALUE
BEGIN GAMEMODE
PRINT “FOO”
END
The //import directive is recursive, so imported scripts/snippets can have their own preprocessor directives.
· //enum – Defines an enumeration (enum for short). An enumeration is basically a single line definition that allows multiple macros
to be defined in order. Enum items can only have numeric values. They need not be continuous i.e., an item may be declared without
an initialization value, in which case it will be assigned one more than the value of its predecessor. The default value starts with 0.
The syntax for an enumeration is as follows:
//ENUM ENUM_NAME {ITEMA=VALUE ITEMB=VALUE ...}
Enum items can be used as any other macro, by their identifier.
There are a few rules associated with the usage of the directives:
· Directive definitions must be on line of their own. They mustn’t have any trailing comments.
· The code that uses macros or enumerations must not be modified outside the CSE editor.
Construction Set Extender
·
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)