I'll fix that Vadi, I could have swore I had it setup to snap back to your location on centerview.
Here's a list of the changes incorporated from my end:
A New module system:
This allows you to share a package across multiple sessions, which works great for things like mapper scripts or chat windows. Only general aspects of the script that are universal (ie, not profile specific) should be in a module. There is a versioning system for automatically backing up modules, which resides in the folder above your mudlet profiles. Priorities also exist, which is the loading order of the modules (in case a module depends on another one, such as a module containing convenience functions with lua, you can make sure all the needed methods exist). Two methods exist to set them from the command line (in addition to setting them from the module manager window), getModulePriority, and setModulePriority.
Mapper Changes:
2D/3D Mapper pans with the mouse. Use control+click to use the old functionality of left clicking on the map where a light grey box can select multiple rooms. Double click on a room as always to speedwalk.
searchRoomUserData(key, query) function to search the user data of all rooms
Zone list in the mapper is alphabetical
Labels respect the z axis and don't show up everywhere. This also means you now need to add a z component to the add label function.
Area switching places the view field of the mapper in the first room of the area now.
Right-click menu to set player location on map
Fixed setCustomEnvColor to provide the alpha channel as well. New syntax: setCustomEnvColor(id, r, g, b, alpha) This was the reason there were inconsistencies in the color scheme from custom colors.
Incorporated Vadi's loadMap function
getSpecialExits(id) has been changed to output a table of tables. The new format is: roomid = {exit name, exit lock status).
new method: updateMap() to cause the map view to update
new method: getMapLabel(area #, label or id #). Returns a table with x,y,z,height,width, and text of label. If multiple labels exist with same text, returns them all.
change: searchRoom returns room id as key
Built in exit stubs in mapper:
direction in the following cases corresponds to their numerical mapping (ie 1=north)
setExitStub(roomid, direction, status) -status 1 or 0 to turn off/on
getExitStubs(roomid) - table with all exit stubs (value is stub direction, key is just iterator)
connetExitStub(roomid, direction) - searches for closest room in given direction, if it finds a matching exit stub on that room, automatically removes stubs and creates exit.
connectExitStub(roomid, toroom, direction) - will connect a stub from roomid to toroom in the given direction.
The mapper will show your stubs as incomplete links.
Access to mapper internals
The user can now interface with some of the mapper internals. There is limited support for manipulating a couple of variables (roomid, zooms, view coordinates, etc.). use the method getMapVar() to list all available variables and some variables are specific to the map mode (2D map in particular). Use getMapVar(var) to get the value of that variable returned, and getMapVar() to see the value and name of all variables currently accessible. Use setMapVar(var, value) to change a variable. Here is a small example of what is possible in an alias/label where you can set up your map scroller:
setMapVar("XView", getMapVar("XView")+1)
updateMap()
Other changes:
tempComplexRegexTrigger added to make triggers from a script/command line that can be multilined, etc.
Two new label callbacks: setOnEnter and setOnLeave to call a given function when a label is entered/left with the mouse. Here's an example code for using this:
example code for a label, labels[tab]
labels[tab]:setOnEnter("onEnter", tab)
function onEnter(tab)
display("entered!")
end
Bug fix: tempTrigger and a few other methods now return their trigger id instead of pattern, thus killTrigger can work.
Nestable Labels in Geysey
Added a lua change within Geyser, you can nest labels much easier. One nuance: You cannot put a nested label within a container (it must be its own container).
Here's a trivial example:
b = Geyser.Label:new({name="testa", x=400,y=50,height=100,width=100,nestable=true, h_policy=Geyser.Fixed, v_policy=Geyser.Fixed, message="CLICK ME!"})
c = {}
for i=1,20 do
c[i] = b:addChild({name="test"..tostring(i),height=30,width=60, layoutDir="BH", flyOut=true,h_policy=Geyser.Fixed, v_policy=Geyser.Fixed, message="test"..tostring(i)})
end
d = {}
for i=21,40 do
d[i]=c[5]:addChild({name="test"..tostring(i),height=30,width=60, layoutDir="RV", flyOut=true,h_policy=Geyser.Fixed, v_policy=Geyser.Fixed, message="test"..tostring(i)})
end