https://www.lavishsoft.com/wiki/index.php?title=Inner_Space:Build_4332_to_4828_Release_Notes&feed=atom&action=historyInner Space:Build 4332 to 4828 Release Notes - Revision history2024-03-28T11:51:36ZRevision history for this page on the wikiMediaWiki 1.33.0https://www.lavishsoft.com/wiki/index.php?title=Inner_Space:Build_4332_to_4828_Release_Notes&diff=6997&oldid=prevCyberTech at 08:40, 4 February 20092009-02-04T08:40:40Z<p></p>
<p><b>New page</b></p><div> Inner Space<br />
Version 1.09<br />
(c) 2004-2008 Lavish Software<br />
---------------------------------<br />
<br />
1.09 Build 4828<br />
- Fixed issue with mouse cursor in EVE Online in background windows (e.g. with<br />
Repeater)<br />
- Fixed issue with cursor positioning in scaled windows<br />
<br />
1.09 Build 4818<br />
- Fixed a crash on game exit that would happen sometimes with Windows XP<br />
- Fixed a bug with the new ismenu data type that prevented adding sub-menus or<br />
separators in some cases<br />
<br />
1.09 Build 4816<br />
- Fixed issue with DirectInput sometimes not accepting input on new sessions<br />
(example: Mouse sometimes would not work in EverQuest)<br />
- Fixed issue with crash reporter coming up multiple times<br />
- Sessions will now properly automatically reconnect to the Uplink (main program)<br />
if it is closed and restarted<br />
<br />
1.09 Build 4811<br />
- Restored Windows 2000 compatibility (fixed the message that said GetProcessId<br />
could not be located in KERNEL32.dll)<br />
- Improved DirectInput support. There is no longer a "mouse flickering" issue in<br />
Star Wars Galaxies<br />
- Custom menu items can now be added to the Inner Space menu<br />
- DefaultStartup.iss (the default startup script) is now additionally used by the <br />
Uplink, and now has functionality to scan new Scripts\init-uplink and <br />
Scripts\init-session folders for scripts to automatically run any time the uplink<br />
or a session is launched, respectively. The scripts in these folders should not<br />
be scripts that stay running (but can launch scripts that do) because the "init"<br />
script functionality will run each script and wait for it to end before running<br />
the next. The scripts will be run in alphabetical order.<br />
- Uplink<br />
* New data types:<br />
- ismenuitem<br />
- ismenu<br />
- ismenucommand<br />
- ismenuseparator<br />
* New Top-Level Objects:<br />
- ismenu ISMenu<br />
... ISMenu[#] (return type is an ismenuitem-derived type)<br />
* Documentation for the above data types and TLOs:<br />
http://www.lavishsoft.com/wiki/index.php/IS:Uplink#Object_Types<br />
<br />
1.09 Build 4799<br />
- Press command will now translate Mouse1 through Mouse5 to mouse clicks of that<br />
button, giving another alternative to the mouseclick command and enabling (e.g.)<br />
press ctrl+mouse1<br />
- Press command now accepts a -nomodifiers switch, which will release any modifiers<br />
for the duration of pressing the given combo. It may not be used with -release or<br />
-hold. <br />
Examples: <br />
press -nomodifiers 2<br />
press -nomodifiers alt+2<br />
press -nomodifiers ctrl+mouse1<br />
- Bind -delete will now accept the wildcard character '*' (asterisk) at the end of<br />
the name<br />
- Alias -delete will now accept the wildcard character '*' (asterisk) at the end of<br />
the name<br />
<br />
1.09 Build 4794<br />
- Fixed Num Enter, Num 5, and Clear (Clear is Num 5 without Num Lock)<br />
<br />
1.09 Build 4791<br />
- New object members:<br />
* bool gdiwindow.IsForeground (Ex: ${Display.Window.IsForeground})<br />
* monitor gdiwindow.Monitor<br />
<br />
1.09 Build 4790<br />
- Fixed a recently-introduced crash in Age of Conan and probably other games<br />
- New commands:<br />
* FocusClick application|eat|click<br />
Sets focus click behavior. Default is now "application" meaning it follows the<br />
host application's default behavior (build 4786 made the default "eat", spurring some<br />
complaints). Eat means a click used to focus the window will be eaten. Click means <br />
a click used to focus the window will also be interpreted as a click in the host.<br />
- Support added for G11 keyboards (G-key and M-key binds; G15 keyboards were <br />
already supported). Also added support for 6 G-key G15 keyboards.<br />
- New object types:<br />
* g15 - used for querying or setting M-key lights, keyboard and LCD backlight levels.<br />
Also works for G11 keyboards.<br />
- New object members:<br />
* g15 input.G15<br />
<br />
1.09 Build 4786<br />
- Experimental EverQuest II window sizing support (note: EQ2 doesn't make this easy,<br />
so there may be some wonky behavior)<br />
- Improved process launcher behavior -- now supports more games, tested to include <br />
Lord of the Rings Online. May also include D&D Online and Entropia Universe, among<br />
others.<br />
- Fixed display scaling issue with Lord of the Rings Online<br />
- Fixed FileRedirect command functionality for some cases that were not working, <br />
such as config.wtf in World of Warcraft<br />
- Game detection process will no longer modify existing default profiles<br />
- LavishScript<br />
* Fixed auto-destruction of global scope arrays<br />
<br />
1.09 Build 4761<br />
- New command "WindowCharacteristics" combines WindowFrame, WindowVisibility, <br />
WindowPosition and WindowFrame commands into a single command for improved<br />
performance when setting multiple characteristics<br />
- Hopefully fixed issue where multiple sessions launched fast enough could think<br />
they could use the same name (e.g. 2 sessions saying is1)<br />
- Fixed handling of Right Control, Right Alt and Right Shift <br />
- New data types<br />
* monitor<br />
- Added object members<br />
* uint display.Monitors<br />
- New events<br />
* OnMouseWheel[Offset] - Offset is a multiple of 120, for example 120 is one<br />
click up, -120 is one click down, -240 is two clicks down<br />
* OnMouseEnter - Mouse has entered the display window<br />
* OnMouseExit - Mouse has left the display window<br />
- The following events now have a bool Context object (a Context object is used<br />
with many different events to provide contextual information for the event). For<br />
these events, setting the Context bool to FALSE will block the input from being<br />
processed by the game or by binds:<br />
* OnAxisMove<br />
* OnButtonDown<br />
* OnButtonUp<br />
* OnButtonMove<br />
* OnDPadMove<br />
* OnMouseWheel <br />
- Added new MouseWheel <Offset> command for emulating mouse wheel movement<br />
- Added mouse:Wheel[Offset] method for emulating mouse wheel movement<br />
- Added new command in Uplink, only available from sessions<br />
Syntax: RelayGroup -list|-join <name>|-leave <name><br />
Example: Uplink relaygroup -join tanks<br />
- Relay command now accepts relay group names, and <br />
"other <relay group name>" (to send to all OTHER in that group)<br />
- Some crashes related to IS-D3D9 fixed<br />
- LavishScript<br />
* Added uint system.Processors<br />
- LavishGUI<br />
* When Left and Right clickthru are set, scroll wheel will automatically<br />
fall through as well<br />
* MessageBox and InputBox commands now accept a -skin parameter<br />
- Note: Avoid using either where possible<br />
<br />
1.09 Build 4740<br />
- Frame locking will now always occur at the soonest opportunity<br />
- MouseTo command now has an optional -relative parameter<br />
- mouse object type<br />
* mouse:SetPosition now has an optional -relative parameter<br />
* bool mouse.Cursor is TRUE if the mouse cursor is visible<br />
- New events<br />
* OnMouseMove[ChangeInX,ChangeInY]<br />
- Uplink<br />
* New events<br />
- OnRemoteSessionConnected[uplink name,full session name]<br />
- OnRemoteSessionDisconnected[uplink name,full session name]<br />
- OnUplinkRenamed[ipaddress,name]<br />
* Updated events<br />
- OnUplinkDisconnected[ipaddress,name]<br />
* New object types<br />
- session<br />
- remoteuplink<br />
* New Top-Level Objects<br />
- session Session[#]<br />
- remoteuplink RemoteUplink[name]<br />
* Updated Top-Level Objects<br />
- session Session[name]<br />
<br />
1.09 Build 4711<br />
- Added "all other" and "all other local" targets to relay command<br />
- Relay should be more friendly when quoting the command to send<br />
- LavishScript<br />
* Added -repeat # switch to Execute command<br />
<br />
1.09 Build 4700<br />
- Added -stealth switch to windowframe command<br />
<br />
1.09 Build 4698<br />
- Fixed sticky CTRL / SHIFT / ALT keys<br />
- Added 'GlobalKey' command which can allow specified buttons to bypass Inner Space's virtualized<br />
input states and use the global key state, for a given session. An example use for this feature <br />
is to allow game-specific voice chat keys to activate voice chat when the window is not foreground.<br />
* Syntax: GlobalKey -keylist|-list|-clear [key]|<key><br />
Examples:<br />
GlobalKey ctrl<br />
GlobalKey mouse3<br />
- Non-3D applications will now have an emulated 30 frames per second, thusly allowing, for example,<br />
relaying commands to non-3D applications such as Notepad.exe (though they will still not have<br />
full Inner Space display and input support)<br />
- Fixed IS-D3D9.dll related crash on shutdown in Age of Conan and EVE<br />
- Fixed mouse wheel issues in Warhammer Online<br />
- LavishGUI<br />
- Added SkinPrefix attribute to SkinTemplate tag to simplify skinning a little<br />
- ScrollBar:<br />
* Skinning improved. Instead of 3 different properties per button and 2 for the slider,<br />
new templatable UpButton, DownButton and Slider tags define the actual buttons and slider.<br />
* Can now be created via XML<br />
- TabControl:<br />
* Skinning improved. Instead of 3 different properties per button, new templatable LeftButton <br />
and RightButton tags define the actual buttons. Some properties (size and positioning) will be <br />
overridden by the TabControl. If the new tags are not present, the old functionality will be <br />
used for compatibility.<br />
- TextEdit:<br />
* VerticalScrollBar tag is now a container for the actual scroll bar<br />
- Console:<br />
* ScrollBar tag is now a container for the actual scroll bar<br />
- ListBox:<br />
* ScrollBar tag is now a container for the actual scroll bar<br />
- TextEntry:<br />
* Now supports Texture and TextureFocused<br />
- Gauge:<br />
* Now inherits Frame, allowing BackgroundColor, etc<br />
* Now has a TopTexture, which will be overlayed on top of the filler. A solid filler can now appear<br />
behind a semi-transparent top layer.<br />
- Window:<br />
* Percent-based window sizes no longer add the border size to the height/width of the window<br />
- Added Tree control<br />
- LavishScript object changes:<br />
* Added string lavishgui.CurrentSkin - During loading a UI with a skin, this is the name of the skin.<br />
For example, in an OnLoad embedded script, this could be stored for later use.<br />
* Added lguitexture:Copy[lguitexture] - Copies the given texture details into this one. For example,<br />
from a cache of textures (such as a set of hidden frame elements)<br />
* Added optional 4th parameter to lguielement:AddChild, which if present specifies the skin to use.<br />
* Added lguielement.AddChild, identical to lguielement:AddChild, but returns the created element.<br />
* Added lguielement:SetMetadata[key,value]<br />
* Added lguielement:UnsetMetadata[key]<br />
* Added string lguielement.GetMetadata[key]<br />
* Added lguibutton.Texture, lguibutton.TexturePressed, lguibutton.TextureHover<br />
* Added lguicheckbox.Texture, lguicheckbox.TexturePressed, lguicheckbox.TextureHover,<br />
lguicheckbox.TextureChecked, lguicheckbox.TextureCheckedPressed, lguicheckbox.TextureCheckedHover<br />
* Added lguilistbox.Texture<br />
* Added lguicombobox.Texture, lguicombobox.ButtonTexture<br />
* Added lguitabcontrol.TabTexture, lguitabcontrol.TabSelectedTexture<br />
* Added lguitextentry.Texture, lguitextentry.TextureFocused, lguitextentry.TextureCaret, <br />
lguitextentry.TextureCaretOverwrite,<br />
- DefaultSkin.xml has been updated to reflect the LavishGUI changes<br />
- LavishScript<br />
- Implemented 'persistentref' type<br />
Members:<br />
* ... Reference<br />
Methods:<br />
* SetReference[object]<br />
- Implemented 'type' type members:<br />
* string PersistentClass<br />
<br />
1.09 Build 4676<br />
- Reimplemented delay on emulated keypress release, which should help solve key emulation issues <br />
with games that have poorly implemented input systems (e.g. EverQuest II)<br />
- LavishGUI<br />
- OnLeftDown and OnRightDown embedded script actions are now implemented<br />
- OnMouseWheel event now executes instead of OnLeftClick when the mouse wheel is moved<br />
- lguilistbox:Sort method (and by inheritance, the same for combo boxes) now allows for an optional<br />
parameter containing the name of a global atom to be used for sort comparison.<br />
atom(global) my_custom_sort(int A, int B)<br />
{<br />
// ${This.Item[${A}]} vs ${This.Item[${B}]} <br />
// where This is the list box, A is the ID of the first item, B is the ID of the second<br />
// return -1 (less than 0) if item A should be before (above) item B (aka "A is less than B")<br />
// return 0 if item A is equal to item B<br />
// return 1 (greater than 0) if item A should be after (below) item B<br />
// ... just like string comparison functions<br />
}<br />
- LavishScript<br />
- Improved data sequence error messages, and there was much rejoicing. <br />
- Applied a performance optimization to query evaluation. Some (most?) queries should now run 2 to 3 times faster.<br />
- Implemented 'lavishscript' type members:<br />
* uint CreateQuery[expression] - Creates a query with the given expression -- e.g. ${LavishScript.CreateQuery[Name=="Bonkers"]}<br />
* string RetrieveQueryExpression[ID] - Retrieves the query expression for a previously created query<br />
* bool QueryEvaluate[ID,object] - Determines if the given object matches the given query<br />
- Implemented 'lavishscript' type methods:<br />
* FreeQuery[ID] - Frees a previously created query<br />
- Added 'inputdevice' type<br />
- Implemented 'input' type methods:<br />
* GetBindIterator<br />
* GetAxisIterator<br />
* GetDPadIterator<br />
* GetDeviceIterator<br />
<br />
1.09 Build 4665<br />
- LavishScript query system memory leaks fixed<br />
- Graphical glitch fixed in some games<br />
<br />
1.09 Build 4653<br />
- Warhammer Online input-related issues solved<br />
- Age of Conan input-related issues solved<br />
- .NET initialization failure code 3 now provides additional information. We are working on fixing<br />
this issue.<br />
<br />
1.09 Build 4618<br />
- LavishScript<br />
- Math errors now generally show the math sequence being processed (due to certain limitations,<br />
you may see two different failure messages in a row)<br />
- Setting uint at declaration time now works identically to uint:Set<br />
<br />
1.09 Build 4614<br />
- .NET 2.0<br />
- Most LavishScriptAPI functions that enforce explicit frame locking when requested <br />
(LavishScript.RequireExplicitFrameLock=true) now frame lock themselves when explicit frame locking <br />
is not enforced. <br />
<br />
1.09 Build 4611<br />
- .NET 2.0<br />
- Fixed adding LavishScript commands<br />
- Relay command no longer adds an unecessary layer of escaping internally. This fixes some <br />
relay-related bugs, but MAY break some workarounds.<br />
<br />
1.09 Build 4602<br />
- Fixed Final Fantasy XI Online keyboard and mouse issues<br />
- .NET 2.0<br />
* Fixed bug with InnerSpaceAPI.InnerSpace.Memory.WriteMemory not getting the modification protected<br />
<br />
1.09 Build 4601<br />
- Fixed mouse functionality in Hellgate London<br />
- Fixed issue with "black console window" in Age of Conan (beta)<br />
- Improved handling and output of "DotNet" command where the given assembly could not be found, and<br />
added display of the inner exception if there is an unhandled exception in the assembly's main thread<br />
- Misc other fixes<br />
<br />
1.09 Build 4600<br />
- Fixed "mouse not working" bug in EVE Online (this should also fix Final Fantasy XI Online, though<br />
it has not yet been confirmed).<br />
<br />
1.09 Build 4598<br />
- Most of the old navigation system deprecation messages have been removed. The "navigation" command<br />
is now the only thing that will display the message in the console. The deprecation message now says:<br />
Navigation command has been deprecated since March 2006 (over a year and a half).<br />
It's really not that hard to convert to LavishNav, and we've been patiently waiting for people to do so, so that we can remove this command.<br />
So please, instead of whining that it is spamming, at least make some effort to see that the old, deprecated system does not get used anymore.<br />
It crashes anyway, and those crashes will not be fixed.<br />
Also, this is not something for regular users to worry about. If you're not creating scripts, then<br />
all you need to do is complain to the people who wrote the scripts you are using that give the message.<br />
<br />
1.09 Build 4595<br />
- .NET Initialization failure code 3 should be fixed<br />
- To make it easier to convert paths to LavishNav, the old navigation system now has the ability to<br />
export loaded data (all, or individual worlds) to LavishNav-compatible XML files. Any of the export<br />
methods in the old system (navigation -dump, navigation:Export, and navworld:Export) now accept a<br />
-lavishnav switch as a parameter prior to the output filename. For example, to convert foo.xml:<br />
navigation -load foo.xml<br />
navigation -dump -lavishnav foo-lnav.xml<br />
navigation -reset<br />
<br />
1.09 Build 4594<br />
- The "Open" command (only available in the Uplink) now accepts an optional third parameter, which is<br />
a command to be executed upon launch. The execution of the command will take place at the end of<br />
the session's Startup Sequence. <br />
- .NET 2.0<br />
* Performance of GetMember<T> / GetObject<T> where the retrieved object is one of the base 32-bit (max)<br />
LavishScript numeric types should be a bit better. Such conversion usually happens by converting<br />
to and from strings, but now has a more direct path for those instances.<br />
<br />
1.09 Build 4589<br />
- Stability fixes, including:<br />
* NearestConnectedRegion in LavishNav should no longer cause crashes<br />
* Fixed additional session launch bugs, including the EverQuest II patcher<br />
<br />
1.09 Build 4577<br />
- Fixed various bugs with FFXI Online (still working on a keyboard issue)<br />
- Lord of the Rings Online mouselook issue fixed<br />
- DotNetScript fixed for launching .NET scripts within games<br />
- Windows 2000 launch crashes fixed<br />
<br />
1.09 Build 4547<br />
- Session launches now use a new loader. This should hopefully fix launch crashes with EVE. Sorry, this<br />
probably does not affect the win2k issues with Vanguard, that's still coming.<br />
<br />
1.09 Build 4529<br />
- Stability fixes, including:<br />
* System:APICall crash should be fixed<br />
* Fixed EVE launch bug<br />
<br />
1.09 Build 4528<br />
- Stability fixes, including:<br />
* Fixed remaining Vanguard launch crashes, hopefully<br />
* Fixed LavishScript crash with ... construct when not supplying all prior parameters to the function call<br />
- LavishNav:<br />
* Improved Fully-Qualified Name resolution algorithm<br />
<br />
1.09 Build 4505<br />
- Stability fixes, including:<br />
* DecodePointer error messages will no longer pop up on Windows versions earlier than Windows XP w/ SP2<br />
* Vanguard sound-related crash on startup should be fixed<br />
<br />
1.09 Build 4501<br />
- Stability fixes, including:<br />
* Fixed LavishGUI crash when a command button destroys itself in OnLeftClick (hint for Vanguard script<br />
devs: if you're using OnLeftClick, you don't need to use a command button!)<br />
* Hopefully fixed LavishNav-related crashes with vgcraftbot and some other Vanguard scripts<br />
- Fixed EVE launching under Windows Vista<br />
- World of Warcraft safety updates (requires new version of Warden protection)<br />
<br />
1.09 Build 4476<br />
- Fixed .NET initialization error<br />
- Fixed mouselook issue with EverQuest 1, and probably other games that use certain features of DirectX<br />
for mouse control<br />
<br />
1.09 Build 4473<br />
- When loading an extension with the Extension command, and the extension is already loaded, the message<br />
will now indicate that the extension "is already loaded", rather than "could not be loaded".<br />
- The DotNet command now converts relative file paths (for the "assembly name" parameter) into<br />
absolute file paths, with the Inner Space .NET Programs folder as its root. This should not change any<br />
other usage of the DotNet command, and should not adversely affect anyone.<br />
- Fixed graphics incompatibility with The Lord of the Rings Online, as well as other games that may have<br />
had similar graphics glitches<br />
<br />
1.09 Build 4472<br />
- World of Warcraft can no longer be launched through Inner Space without Warden protection.<br />
<br />
1.09 Build 4466<br />
- Stability fixes, including:<br />
* Fixed crashes with Warcraft III<br />
* Fixed .NET application random crash on unload (the infamous "LavishVM Frame Ends" crash)<br />
* Fixed LavishScript bug when entering a command starting with a special character<br />
- Added a .NET scripting engine. This engine works by reading an XML file that describes<br />
how to build a temporary assembly to execute. The XML file can be used with the RunScript <br />
command to run the script (e.g. "run myscript"). Any .NET language available on your computer can be <br />
used -- if the .NET framework is installed, this usually includes C#, C++, VB, and JScript. Additional <br />
languages may require separate installation. If an invalid language name is used, then the list of <br />
languages that are available is displayed. Documentation for this feature is available at<br />
http://www.lavishsoft.com/wiki/index.php/DotNetScript<br />
<br />
1.09 Build 4456<br />
- Stability fixes, including but not limited to:<br />
* Threads (e.g. in .NET) that terminate (e.g. via an unhandled exception) while having active <br />
frame locks no longer result in a permanent frame lock<br />
* Fixed DEP crashes, e.g. those caused as a side effect of the World of Warcraft patch<br />
<br />
1.09 Build 4447<br />
- Stability fixes, including but not limited to:<br />
* Fixed potential crashes when launching games. The crashes could happen with various malware<br />
present, such as Wine (jab jab), or other programs installed.<br />
* Fixed LavishSettings iterator crashes and iterator:Jump on LavishSettings iterators<br />
* Fixed crash in LavishScript preprocessor with empty preprocessor #macros<br />
- Added TLO to uplink:<br />
* bool Session[name]<br />
<br />
1.09 Build 4443<br />
- Stability fixes<br />
- Added 3rd and 4th monitor selection to game profile configuration<br />
- .NET 2.0<br />
* LavishVMAPI.FrameLock now implements IDisposable and its Lock and Unlock members are now public,<br />
as they were meant to be. The class is actually usable now.<br />
* LavishNav API now properly handles the AllPointsValid flag when creating regions<br />
<br />
1.09 Build 4438<br />
- Stability fixes<br />
- ISXDK 30b changes LavishScript object container classes to use virtual functions. Extensions<br />
that use these classes should be recompiled with the new ISXDK to avoid crashes when accessing<br />
them through LavishScript.<br />
- Numpad Enter should now work properly for games that use standard Win32 input<br />
- Modifier key emulation (e.g. shift, alt, ctrl) should now work properly for games that use <br />
standard Win32 input<br />
- Per-thread frame lock management is now implemented directly in Inner Space (in addition to<br />
the .NET API functionality previously added). Frame locks held by the application's main thread<br />
(e.g. due to locks in event execution not cleaning up) should now be automatically released to<br />
prevent deadlock, and will echo a warning to the console.<br />
- LavishScript<br />
* The global script's CWD (current working directory) is now properly set to the LavishScript<br />
base path<br />
- .NET 2.0<br />
* Command and Event handlers now count thread frame locks. If a command or event handler executes<br />
and locks without unlocking or successfully unlocks without locking (due to unlocking a lock<br />
held by the thread, but not in the command or event handler), a warning will echo to the console.<br />
* Fixed bug from build 4419 that caused commands added by .NET apps to be removed by garbage <br />
collection<br />
* InnerSpaceAPI.InnerSpace.Memory.WriteMemory now has an overload that does not require the Size <br />
of the byte array. WriteMemory and UnwriteMemory are now implemented.<br />
<br />
1.09 Build 4421<br />
- Stability fixes including LavishNav:Clear and console resizing<br />
* Note to the guy with the irate message about console resizing: one crash report per day<br />
per issue is just fine. Reporting the same issue many times won't help. One person<br />
submitting tons of identical crash reports only gets that person filtered out of our<br />
crash reports. The issue is fixed because it has been around for a while, and we've gotten<br />
crash reports from several people over a period of time. Besides, you don't need a negatively<br />
sized console anyway.<br />
- .NET 2.0<br />
* LavishVMAPI<br />
- New class LavishVMAPI.FrameLockManager helps resolve Frame Locking issues by retaining<br />
a count of locks. Problematic operations will result in thrown exceptions (see <br />
LavishVMAPI.Exceptions). Can be instantiated, but is automatically used by the API (see below).<br />
- LavishVMAPI.Frame now uses a thread-static FrameLockManager (a separate FrameLockManager<br />
per thread). All user-created FrameLockManagers use LavishVMAPI.Frame.<br />
- New class LavishVMAPI.FrameLock wraps frame locking in a friendly, beige package. Maintains<br />
a single lock (may use a custom FrameLockManager), and automatically unlocks upon destruction.<br />
* LavishScriptAPI<br />
- LavishScriptAPI.LavishScript.Events.AttachEventTarget, DetachEventTarget and ExecuteEvent <br />
now have overloads for passing the event name as the first parameter, instead of having to use<br />
the event ID.<br />
<br />
1.09 Build 4419<br />
- Fixed EverQuest II crash on startup after today's EQ2 patch<br />
- .NET 2.0<br />
* Various APIs have been improved<br />
* Direct usage of delegates as methods is no longer used. The delegates have been internalized <br />
to improve code documentation as well as provide better cross-language compatibility.<br />
* LavishScript events now use a standard event handler mechanism, using LSEventArgs. All<br />
event usage must be converted. Unhandled .NET exceptions during event execution will be <br />
trapped and echoed to the console. Events are automatically cleaned up for you, if not<br />
done explicitly.<br />
* Commands now use public delegate int CommandTarget([In] string[] args). Unhandled .NET<br />
exceptions during command execution will be trapped and echoed to the console. Commands<br />
are automatically cleaned up for you, if not done explicitly.<br />
* Documented all Lavish.InnerSpace.dll API<br />
* When the .NET functionality fails to initialize, more information is now given<br />
- LavishScript<br />
* Object query support has been added. Extensions can use ISXDK 30a (or later) for direct<br />
access to this functionality. An object query is a math formula where all variables<br />
are relative to a specific object, and results in a boolean value -- the query is either<br />
true, or it is false. Query math can compare and manipulate text, decimals, or integers <br />
(note that bool counts as an integer for this purpose) with standard math operators. Text<br />
comparisons are not case sensitive. One intended use for object queries is a uniform search <br />
mechanism, to find an object or set of objects from a larger set of objects (compare to a <br />
SQL SELECT statement, where a LavishScript object query is the WHERE clause).<br />
See http://www.lavishsoft.com/wiki/index.php/LavishScript:Object%20Queries for more info.<br />
<br />
1.09 Build 4402<br />
- Stability fixes<br />
- LavishNav<br />
* Added lnavregion:SetBounds[] -- same parameter ordering as AddChild, starting with<br />
region-specific information (e.g. the size and position, not name or type)<br />
<br />
1.09 Build 4396<br />
- Restored XP64 compatibility<br />
<br />
1.09 Build 4394<br />
- Stability fixes<br />
- New games successfully tested<br />
* Final Fantasy XI Online<br />
* Lord of the Rings Online<br />
These games have not yet been added to auto-detection. FFXI can be added via Add Game<br />
by selecting pol.exe, and LOTR can be added by selecting TurbineInvoker.exe. The games<br />
were tested under Windows Vista. There are reports that they may not yet work with<br />
Windows XP.<br />
- LavishNav<br />
* Fixed -dynamic flag for lnavpathfinder:SelectPath<br />
* Added lnavpathfinder.NearestConnectedRegion<br />
- .NET 2.0<br />
* Stability updates<br />
* Documentation updates<br />
<br />
1.09 Build 4371<br />
- Stability fixes<br />
- .NET 2.0<br />
* API documentation XML files are now included<br />
<br />
1.09 Build 4369<br />
- Fixed a nasty memory leak<br />
<br />
1.09 Build 4367<br />
- Stability fixes<br />
<br />
1.09 Build 4366<br />
- ISXDK v30 - Stability fix involving the LavishScript index type.<br />
- LavishNav<br />
* Fixed inaccuracy in A* pathfinding algorithm<br />
* Fixed BestContainer algorithm when traversing backward<br />
* Added optional "max cost" parameter to lnavregion:SelectPath<br />
- LavishScript 1.96<br />
* LSModule v17<br />
* Crash fixed when executing a command with a parameter that only contains a quote, such<br />
as echo "<br />
- .NET 2.0<br />
* Fixed LavishNavAPI.Region.AddSphere and AddRadius -- they previously mixed up part of<br />
the coordinates with the radius.<br />
* LavishScript-related API that accepts argc,argv now translates the args to LavishScript <br />
rules (i.e. null args are translated to empty strings) -- the actual string values are <br />
not modified<br />
* Fixed LavishNavAPI functions returning List<Region><br />
<br />
1.08 Build 4347<br />
- Video capture technically works again. Sound is not confirmed to correctly record.<br />
- .NET 2.0<br />
* Added static function IsNullOrInvalid to LavishScriptObject and LavishScriptPersistentObject,<br />
equivalent to string.IsNullOrEmpty<br />
* Fixed crash bug in LavishScriptObject.GetPersistentIndex<br />
- LavishNav<br />
* Automatic region naming is now available when dynamically creating regions (i.e. not from<br />
permanent storage). Use "auto" as the name to have a name automatically generated.<br />
* .NET API now includes Add methods for regions without supplying a name, for auto-naming<br />
<br />
1.08 Build 4338<br />
- LavishNav<br />
* Fixed discrepancy between lnavregion.Connect and lnavregion:Connect. Both work identically now.<br />
<br />
1.08 Build 4337<br />
- Some stability fixes, including but not limited to:<br />
* LavishGUI user input boxes should no longer crash (this is usually shown as heap corruption<br />
under Windows XP, and as a crash every time under Vista)<br />
* LavishScript should no longer crash when cleaning up global variables of script-defined type<br />
* LavishSettings iterators should no longer crash when pointing to a node that was just<br />
removed<br />
- LavishScript<br />
* The default precision for the float and relative types (floatptr, float64ptr) when<br />
reduced to text is now undefined, instead of 2 decimal places. The "Centi" member<br />
of float can be used to reduce the precision to the old format for display. For<br />
example: ${Float[3.14159].Centi}. The intended effect of this is to improve<br />
overall precision in calculations -- for example, this makes it much easier to<br />
use trigonometry functions. This could fix some trig-related crashes as well.<br />
- LavishNav<br />
* Added lnavregion:AddToGroup[name] - shortcut for creating a named region group and<br />
adding the region. This is also available in the .NET API.<br />
- .NET 2.0<br />
* Added LavishScriptAPI.ExecuteCommandEx, which is a near-direct path to the command<br />
implementation -- performing no LavishScript parsing, etc.<br />
<br />
1.08 Build 4335<br />
- LavishGUI API v11 - Extensions that provide custom GUI element types (such as radars)<br />
must be updated, or the GUI elements will not be available -- the extensions will<br />
otherwise work, however. ISXDK 29f is available for download.<br />
- Windows Vista stability fixes<br />
<br />
1.08 Build 4332<br />
- .NET 2.0<br />
* LavishSettingsAPI added to Lavish.InnerSpace.dll (thanks to Tenshi for providing<br />
the base for the wrapper)<br />
<br />
== See Also ==<br />
* [[Inner Space:Release Notes|Release Notes]]</div>CyberTech