Changelog for next UOX3 version (post v0.99.4)

Where we archive the version changelog threads
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

26/04/2021 - Xuri
	Increased default timer for worldsaves from 5 to 10 minutes
	Fixed an issue where the tile command could spawn items with incorrect ID because tempInt2 wasn't reset properly
	Additional string handling modernization in cAccountClass.cpp, cHTMLSystem.cpp, CResponse.cpp, cServerData.cpp, cServerData.h, cServerDefinitions.cpp, cSocket.cpp, cSpawnRegion.cpp, cSpawnRegion.h, cWeather.cpp, Dictionary.cpp, effect.cpp and uox3.cpp (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

27/04/2021 - Xuri
	Fixed some missing icons in dfndata/creatures/creatures.dfn
	Updated server status HTML template page (dfndata/html/online.htf) to match other templates
	Fixed an issue where using JS Method PopUpTarget with ID 12 could crash the server
	Additional string handling modernization in magic.cpp, JSEncapsulate.cpp, jail.cpp, house.cpp, fileio.cpp, network.cpp, msgboard.cpp, mapstuff.cpp, pcmanage.cpp, scriptc.cpp, SEFunctions.cpp, sound.cpp, speech.cpp (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

27/04/2021 - Xuri (0.99.4j)
	Removed ustring.h and ustring.cpp and references to these from the project as they have now been completely phased out by the move to std::string and the use of StringUtility.cpp/hpp
	Finalized string handling modernization in cRaces.cpp, house.cpp, items.cpp, npcs.cpp, skills.cpp, ssection.cpp, ssection.h and targeting.cpp (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

28/04/2021 - Xuri
	Reorganized teleport.scp file with logical groupings by map and area for easier maintenance
	All teleport locations in teleport.scp without a source/target world specified will now work for both Felucca and Trammel facets
	Deleted ustring.cpp/ustring.h from repository and removed last few straggling references to these	Teleport locations from teleport.scp are now sorted upon initial load, and no longer require being sorted in the file itself (punt)
	Modified handling of CONT and PACKITEM tags loaded from worldfiles to no longer corrupt pointers (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

03/05/2021 - Xuri (0.99.4k)
	Added layer=1 to spellbooks in dfndata/items/magic/misc_magic.dfn to allow NPCs to equip them (dragon slayer)
	Fixed issue with wipe command (js/commands/targeting/wipe.js) not working because script was referencing wrong name for socket
	Randomized initial position of items added inside containers via DFN tag PACKITEM
	Fixed issue with get (js/commands/targeting/get.js) and set (js/commands/target/set.js) commands where wrong property name was used for getting/setting old npcwander type
	Fixed various issues with in-game bulletin boards; posts can now be made, read and replied to using both regular client and ClassicUO client
	Fixed issue with bulletin board post removal that could cause infinite loops
	Fixed issues with and re-enabled bulletin board maintenance. Should no longer cause infinite loops, nor corrupt bulletin board posts when removing posts marked for deletion! This also fixes NPC escort quests not appearing on bulletin boards after initial quests were accepted and related posts removed.
	Added new GM command in js/commands/msgmod.js:
		'msgmod on/off 		// If on, GMs who open a bulletin board while using ClassicUO client will be able to remove any individual message
	Added additional teleport locations in teleport.scp for Dragon Turtle Spawn area, Khaldun, Terathan Keep, Valley of Eodon, Minax Fortress, Stygian Abyss, Underworld
	Some minor fixes to regions.dfn - Name of Covetous dungeon, a set of coordinates for Ice Dungeon
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

03/05/2021 - Xuri
	Fixed an issue where bulletin board posts submitted from client with lines of text longer than 255 bytes were stored with no null-terminator at end of the such lines, since they got cut off in wrong place
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

04/05/2021 - giwo
	Fixed server crash related to JS timers/other tempeffects by replacing the use of CDataList (which uses std::deque) in tempEffects with GenericList (which uses std::list), which is more optimized for removing records in the middle of the array
	Updated Sort() methods in GenericList to use std::list member function sort instead of std::sort (Xuri)
	Applied some code style changes for consistency :art: (Xuri)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

07/05/2021 - Xuri
	Replaced CDataList with the new GenericList class throughout UOX3, and removed CDataList from the project files
	Reverted an earlier change where scriptsections were supposed to be reapplied to items bought from NPC shopkeepers - didn't actually work!
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

07/05/2021 - Xuri (0.99.4l)
	Updated LeaveBoat() function to use ValidSpawnLocation() instead of ValidMultiLocation() for more reliable disembarking from boats
	Added support for the following boat commands (and their triggerword aliases):
		raise anchor 		// Raise anchor, allowing boat to move
		drop anchor 		// Drops anchor, preventing boat from moving
		forward one 		// Moves boat one tile forward
		backward one 		// Moves boat one tile backward
		left one 			// Moves boat one tile in port direction
		right one 			// Moves boat one tile in starboard direction
		forward left 		// Moves boat forward left diagonally
		forward right 		// Moves boat forward right diagonally
		backward left 		// Moves boat backward left diagonally
		backward right 		// Moves boat backward right diagonally
		forward left one 	// Moves boat one tile diagonally, forward left
		forward right one 	// Moves boat one tile diagonally, forward right
		backward left one 	// Moves boat one tile diagonally, backward left
		backward right one 	// Moves boat one tile diagonally, backward right
	Added new enum BoatMoveType to keep track of all the additional boat movement types, and changed moveType from UI08 to SI08, in order to use -1 as a representation of an "anchored" and immovable boat
	Boats now start out with anchor dropped when initially placed, and must also have anchor dropped before they can be packed up into model ships, while anchor must be raised in order for tiller man to accept orders to sail
	Added support for two new DFN tags in houses.dfn, primarily for the use of boats/boat holds:
		MAXITEMS=#			// Max items that can be stored in a boat's hold
		WEIGHTMAX=#			// Max weight that a boat's hold can... hold (40000 = 400.00 stones)
	Updated dfndata/house/house.dfn to include default MAXITEMS (125 items) and WEIGHTMAX (400 stones) values for boats
	Fixed an issue where large dragon ships would be spawned with incorrect names due to server assuming they're houses
	Fixed an issue where it was not possible to turn a boat around under certain circumstances
	Tiller men on boats will now be named "a tiller man" if the boat is unnamed, and "The tiller man of [ship name]" if the ship has been named
	Boats now cannot be dry-docked if there are items in the hold
	Boats now cannot be dry-docked if either of the planks are open
	Names of boats are now stored in the title property of ship models, and is used to reapply the boat's name when unpacking the boat, while the ship model itself is named after the boat with a [Dry Docked] tag slapped on at the end.
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

25/05/2021 - Xuri (0.99.4m)
	Fixed a long-standing (20+ years old) issue with objects not being sent/removed consistently when players login, teleport or move around, or when items are being removed, areas wiped, etc.
	Added new class RegionSerialList to store serial references to objects added to/removed from regions (both on worldfile load and when objects move in-game). This allows for faster lookup, insertion tests, etc. and results in worldfiles loading up to ~41% faster
	Fixed an issue where characters in different world instances could shove each-other when moving
	Fixed server crash related to using incorrect argument for REGSPAWN command
	Fixed an issue where characters would not get world changes updated properly in some older (5.x) client versions
	UOX3 will now attempt to resist being closed if a world-save is in progress, to avoid corruption of worldfile data
	Added TryParseJSVal() helper function in cScript.cpp, used to parse jsval values returned from script events. Provides results matching 0 (0, false), 1 (1, true) or any specific int value returned from script.
	JS events updated to use new TryParseJSVal helper function (no change in behaviour):
		onDecay, onResurrect, onCommand, onBuyFromVendor, onSellToVendor, onPickup, onCharDoubleClick, onSkillGump, onUseBandageMacro, onCombatStart, onCombatEnd, onDeathBlow, onBuy, onSell
	JS events with slight change of behaviour after update to use TryParseJSVal:
		onDrop, onDropItemOnItem, onDropItemOnNpc - previously, a blank or non-existent return value would be treated the same as a return true. This will now be treated as a return false. Update scripts accordingly!
	JS events updated to support return values from scripts:
		onCollide, onTalk, onSnooped, OnHungerChange
			Return false or nothing to prevent hard code from running
			Return true to allow hard code to run like normal
		onStolenFrom, onAISliver, onLightChange, onVirtueGumpPress, onQuestGump, onSpecialMove, onSwing, onClick, onHouseCommand, onSellToVendor, onSkillCheck, onSpellGain, onSpellLoss
			Return false to allow hard code and other scripts with event to run like normal
			Return true to prevent hard code and other scripts with event from running
		onSteal
			Return false or nothing to allow hard code and other scripts with event to run like normal
			Return true to prevent hard code and onStolenFrom event from running (theft failed?)
			Return 2 to prevent hard code, but allow onStolenFrom event to run (theft succeeded, but handled in script?)
		onLeaving, onEntrance, onEquip, onUnequip, onEnterEvadeState, onSoldToVendor, onBoughtFromVendor, onSpellSuccess, onSpellTarget, onFlagChange, onDeath
			Return false or nothing to allow other scripts with event to run like normal
			Return true to prevent other scripts with event from running
	Added new JS events that run prior to items being equipped/unequipped, with support for return values:
		onEquipAttempt( pEquipper, iEquipping )
		onUnequipAttempt( pEquipper, iUnequipping )
			Return false or nothing to reject attempt to equip/unequip item, and prevent hard-code or other scripts with event from running
			Return true to allow hard code to run like normal
	Added new JS event that runs prior to onSnooped event, for character doing the snooping:
		onSnoopAttempt( snooped, snooper )
			Return false or nothing to prevent hard code and other snooping-related events from running
			Return true to allow hard code and other snooping-related events to run like normal
	Updated onSnooped JS event to accept return values:
		Return true when success state is true to prevent other scripts with event from running
		Return true when success state is false to prevent hard code and other scripts with event from running
	Added second parameter to onCommand() JS event to match it up with the documented version. New syntax:
		onCommand( socket, cmdString )
	Updated onClick JS event to also run for characters with event attached (return 1 to prevent showing hard-coded name for whatever object is clicked)
	Updated onSteal JS event to include a third parameter, an object reference for the target of the theft
	Fixed an issue where the JS function TriggerEvent() didn't restore the original JSContext and JSObject of the calling script after calling an event in a separate script, causing timers to be associated with the wrong script when both TriggerEvent and StartTimer were used in same script
	Updated KillTimers JS method to support an optional argument specifying the timerID of the timer to be killed. If no arguments are provided, it will - as previously - kill all timers for the object
	Added support for assigning multiple JS scripts per object (item, multi, char, region).
		Any time a scriptID is added to an object, the list of such IDs for that object will be sorted from lowest to highest scriptID, which also determines the execution order for the scripts. Note that if the same JS event is present in several scripts assigned to an object, each of those events will trigger, unless the rules about return values for said event prevent this
	DFNs for Items, Multis, Characters and Regions can now contain multiple SCRIPT=scriptID tags per definition. Each such SCRIPT tag will be applied to the object in question, then sorted from lowest to highest scriptID by server.
	Added new JS property for Items, Multis, Characters and Regions:
		.scriptTriggers 		// If used to get property, will return array object with all script IDs assigned to object. If used to set property, will add script ID to existing list of script IDs for object.
	Modified JS property for Items, Multis, Characters and Regions, which for backwards compatibility functions similar to in older versions:
		.scripttrigger 			// If used to get property, will return last script ID in list of script IDs assigned to object. If used to set property, will clear list of script IDs and assign only the new ID
	Added new JS Methods for Items, Multis, Characters and Regions:
		.AddScriptTrigger( scriptID ) 	// Adds a new scriptID to list of scripts assigned to object
		.RemoveScriptTrigger( scriptID ) // Remove a specific scriptID from object (0 = remove all)
	Removed all traces of SETSCPTRIG and TWEAK commands from source. These commands are now entirely handled in JS.
	Stats and Tweak buttons in list of online characters ('WHOLIST) will now execute the CSTATS or TWEAK command respectively, with target automatically set to character being viewed in list
	Fixed an issue with TWEAK command where items equipped on a character's paperdoll could not be targeted
	Moved SETSCPTRIG command from code to JS (js/commands/targeting/scptrig.js), and supplemented it with some additional commands:
		GETSCPTRIG				// List out all scriptIDs assigned to object
		SETSCPTRIG scriptID 	// Clears list of scriptIDs for object, then assigns the specified scriptID
		ADDSCPTRIG scriptID 	// Adds specified scriptID to list of scriptsIDs assigned to object
		REMOVESCPTRIG scriptID 	// Removes specified scriptID from list of scriptIDs assigned to object (0 = remove all)
	Fixed issue where sub-commands would still execute despite cancelling target cursor when using AREACOMMAND, just without being limited by such pesky things as coordinates (js/commands/targeting/areacommand.js)
	Updated AREACOMMAND to support adding/removing script triggers (js/commands/targeting/areacommand.js)
	Updated CSTATS command to support showing all script triggers attached to an object (js/commands/targetin/gumps.js)
	Updated GET (js/commands/targeting/get.js) and SET (js/commands/targeting/set.js) commands to support adding/removing script triggers from objects
	Updated the following JS scripts to use AddScriptTrigger() method instead of .scripttrigger property:
		kindling script (js/item/kindling.js)
		key script (js/item/key.js)
		pitchers script (js/server/resource/pitchers.js)
		houseSign script (js/server/house/houseSign.js)
		banker script (js/npc/ai/banker.js)
	Fixed some missing/incorrect brackets in the following DFN files (thanks, punt!):
		dfndata/items/gear/armor/base_armors.dfn
		dfndata/items/gear/armor/leather_armor/ninja_leather.dfn
		dfndata/items/skills/misc/misc.dfn
		dfndata/items/building/walls/tent_walls.dfn
		dfndata/items/building/decs/stoneart.dfn
		dfndata/location/location.dfn
	Added decay=0 tag to bulletin boards
	Updated JS docs with updated return value details for events
	Updated UOX3 docs to latest version
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

27/05/2021 - Xuri
	Replaced UOX_MIN and UOX_MAX with std::min and std::max (punt)
	Moved StringUtility functions into a new namespace: strutil (punt)
	Updated MsgBoardMaintenance() to use standard filesystem directory listing (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

30/05/2021 - Xuri (0.99.4n)
	Fixed return value logic for onUseChecked/onUsedUnchecked JS events - was reversed by mistake!
	Initiated start of revamped mul/uop handling, with some new files added to project: (punt)
		MultiMul.cpp/hpp, IDXMul.cpp/hpp and UOPData.cpp/hpp
	Updated code for loading and seeking in multis (punt)
	Added new files to VS project and project filter
	Added new files to source/CMakeLists.txt
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

01/06/2021 - Xuri (0.99.4o)
	Added support for MultiCollections.uop. If present in the specified datafolder, this file will be preferred over the traditional multi.mul/idx files, and will enable access to the new multis contained within (punt)
	Added dependency for static library of zlib-1.2.11, of which a minimal version is included in a subfolder alongside spidermonkey in the root UOX3 project folder. This is needed for compression matters related to UOP files and certain UO network packets
	Added VS Solution (zlib.sln) to compile static-library of zlib-1.2.11 for Windows. Makefile for Linux/macOS also included.
	Updated CMakeList.txt to include zlib references
	Updated default DATADIRECTORY path in uox.ini to match current day default installation path of UO (thanks, dragonslayer!)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

03/06/2021 - Xuri
	Removed RemoveFromSight() from CItem::Update() in cItem.cpp, to address flickering issues with animated items, and for smoother updates of items on boats when sailing.
	Added new flag in CBaseObject - damageable - which determines if an Item or Multi should be considered a damageable object.
	Added new DFN tag for Items and Multis to mark objects as damageable objects
		DAMAGEABLE=0/1 // If enabled, allows client to display healthbar for object, using object's hp/maxhp values as basis. Note that any changes to a damageable object's health will not be reflected in the client until a stat update has been sent.
	Added new JS Property for Items and Multis and Characters to get/set an object's damageable flag
		.isDamageable // 1 or 0
	Added new JS Method for Items, Multis and Characters to force an update of the object's health bar to nearby players:
		.UpdateStats( statType ) // statType can be 0 (Health, only one that works for items), 1 (Mana) or 2 (Stamina)
	Updated DFN entries for training dummies (dfndata/items/houseaddons/house_addons.dfn) to include DAMAGEABLE=1 and HP=100 tags, and also updated script for training dummies (js/item/trainingdummy.js) with some extra features for dummies marked as damageable:
		Show damage numbers over the training dummy when hit
		Update health of training dummy based on damage received when hit
		Restore health of training dummy to max after 4 seconds of inactivity
	Updated 'fullstats and 'heal commands (js/commands/targeting/stats.js) to support restoring the health of a damageable object
	Updated 'get (js/commands/targeting/get.js) and 'set (js/commands/targeting/set.js) commands to support getting and setting the damageable flag on objects
	Updated updateStats() in uox3.cpp to work with CBaseObject instead of CChar
	Updated statwindow() in CSocket.cpp to work with CBaseObject instead of CChar
	Updated CPUpdateStat in CPacketSend.cpp to work with CBaseObject instead of CChar, to support sending packet 0xA1 to client for Items/Multis
	Updated CPStatWindow in CPacketSend.cpp to work with CBaseObject instead of CChar, to support sending packet 0x11 to client for Items/Multis
	Fixed an issue with outgoing packet 0x11 where a character's current HP might sometimes incorrectly be displayed as zero
	Updated CPNewObjectInfo in CPacketSend.cpp to send object information packet 0xF3 to client with datatype set to 0x03 for Items/Multis marked as damageable objects, to enable the client's ability to display health-bars for these items.
	Fixed an issue with JS Method for Items - .Refresh() - which previously did nothing, but now instead sends an update of item to all sockets in range
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

03/06/2021 - Xuri
	Cleaned up some warnings caused by 64 bit/32 bit difference between macOS and Windows (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

04/06/2021 - Xuri
	Fixed an issue that could cause player characters created in older versions of UOX3 to end up with backpacks without max item capacity set, thus being unable to add any items to their backpack
	More warnings cleanup, and some fixes to address size_t differences between Windows and Unix platforms (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

11/06/2021 - Dragon Slayer
	Added thirst system that works similarly to existing hunger system, where characters (and optionally, pets) grow thirsty over time, and gradually draining their stamina (down to a minimum of 1) if too thirsty
	Added new settings to uox.ini under a new [thirst] section to control thirst system:
		THIRSTRATE=6000 	// The rate at which characters grow more thirsty
		THIRSTDRAINVAL=2 	// The amount of stamina drained per thirst cycle when too thirsty
		PETTHIRSTOFFLINE=0 	// Enable/disable whether pets grow more thirsty over time while owners are offline
	Added new JS properties for Characters related to thirst system (Xuri)
		.thirst 			// Get/Set current thirst level of character
		.thirstRate 		// Get character's thirst rate, based on racial properties or global settings
		.willthirst/ 		// Get/Set whether character will get thirsty
		.tamedThirstRate 	// Get/Set tamed pet's thirst rate
		.thirstWildChance 	// Get/Set tamed pet's chance at going wild if too thirsty
	Updated JS script for drinks (js/server/resource/pitchers.js) to reduce character thirst when consumed, with appropriate system messages displayed based on character's thirst level (Xuri)
	Updated JS commands get (js/commands/targeting/get.js), set (js/commands/targeting/set.js) and tweak (js/commands/targeting/tweak.js) to support getting/setting character hunger levels (Xuri)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

11/06/2021 - Xuri
	Added some error-checking to JS function AreaItemFunction() to avoid potential server crash
	Fixed an issue introduced in 0.99.4m, where objects being added to/moved to specific worlds or instances were still visible to players in other worlds/instances
	Fixed issue with loading SCPTRIG tag with value 65535 in older worldfiles, now treats these as if the value was 0
	Updated JS Methods .AddCheckbox() and .AddRadio() to support specifying the gumpImageID to display when button is checked/selected.
		Updated syntaxes:
			.AddCheckbox( topHeight, topLeft, checkImage, defaultStatus, unk2 )
			.AddCheckbox( topHeight, topLeft, checkImageOff, checkImageOn, defaultStatus, unk2 )
			.AddRadio( topHeight, topLeft, radioImage, pressed, id )
			.AddRadio( topHeight, topLeft, radioImageOff, radioImageOn, pressed, id )
	Added new Socket JS Method to close a specific generic gump:
		.CloseGump( gumpID, buttonID ) // gumpID is normally equal to 0xffff + scripttrigger of script gump is created in, while buttonID is the buttonID response we want the client to send when gump closes
	Added new Gump JS Method to end a group of radio buttons started with AddGroup():
		.EndGroup()	// Ends previously started group element
	Re-enabled Gump JS Method MasterGump(), in case someone can use it for something
		.MasterGump( masterGumpID ) // Define master gump of gump?
	Added facet support for 'wipe and 'iwipe commands (js/commands/targeting/wipe.js). Updated syntax:
		'wipe/iwipe
			Brings up target cursors. Wipes all objects in area between target locations, on same facet as user
		'wipe/iwipe x1 y1 x2 y2
			Wipes all objects in specified area, on same facet as user
		'wipe [objType] [facet]
			Wipes all objects of specified type. If facet is specified, wipes only on that facet.
			objTypes: items, multis, boats, npcs, spawners or all
		'wipe all
			Wipes ALL objects, on ALL facets, regardless of object type
		'wipe all force
			Wipes ALL objects, on ALL facets, regardless of object type and whether wipeable flag is set
	Fixed an issue with getTileName() in uox3.cpp that could cause a server crash when fetching the names of certain items
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

11/06/2021 - Xuri (0.99.4q)
	Added entry for a new directory path in uox.ini:
		SCRIPTDATADIRECTORY=./js/jsdata/ - dedicated to generic data read/written by JS scripts, data not directly linked to live content, which should not live or die by the state of the SHAREDDIRECTORY. Existing scripts will continue to write/read files in the SHAREDDIRECTORY if no changes are made.
	Updated JS File Method .Open() to support an optional fourth argument (requires third argument):
		useScriptDataDir (boolean) - when this fourth argument is included as true, UOX3 will look for the file in the SCRIPTDATADIRECTORY instead of the SHAREDDIRECTORY. Third argument - folderName - is required for this fourth argument to be used. New syntaxes:
			.Open( fileName, fileMode )
			.Open( fileName, fileMode, folderName )
			.Open( fileName, fileMode, folderName, useScriptDataDir )
	Updated JS File Function DeleteFile() to support an optional third argument (requires second argument):
		useScriptDataDir (boolean) - when this third argument is included as true, UOX3 will look for the file in the SCRIPTDATADIRECTORY instead of the SHAREDDIRECTORY. Second argument - folderName - is required for this third argument to be used. New syntaxes:
			DeleteFile( fileName )
			DeleteFile( fileName, folderName )
			DeleteFile( fileName, folderName, useScriptDataDir )
	Added new admin command (js/commands/decorate.js) to allow saving/loading world templates. These templates are essentially text files (with .jsdata file extension) that contain the bare minimum amount of details needed to decorate an entire game world, a facet or even a specific area of a facet. The files can be bundled with UOX3 for a smoother first-time-user-experience, can be easily shared with other people as blueprints for world decoration, and they can be saved and loaded on the fly without impacting existing data on a shard. By default, the command will save/load items to/from different files per facet based on the following item categories: doors, signs, lights, moongates, teleporters, misc (everything else).
		Command syntax:
			'decorate save
				Save all items to the default templates, based on each item's objectCategory and facet
			'decorate save [objectCategory]
				Save all items of specified objectCategory, regardless of facet
			'decorate save [facetName]
				Save all items on specified facet, regardless of objectCategory
			'decorate save [customFileName]
				Save all items of all objectCategories on all facets to custom template file
			'decorate save [objectCategory] [facetName]
				Save all items of specified objectCategory in the specified facet
			'decorate save [customFileName] [facetName] x1 y1 x2 y2
				Save all items within specified coordinates on specified facet to customFileName
			'decorate load
				Load all items from the default templates, regardless of objectCategory and facet
			'decorate load [objectCategory]
				Load all items of specified objectCategory, regardless of facet
			'decorate load [facetName]
				Load all items on specified facet, regardless of objectCategory
			'decorate load [customFileName]
				Load all items from file named [customFileName]
			'decorate load [objectCategory] [facetName]
				Load all items of specified objectCategory in the specified facet
			'decorate copy [sourceFacet] [targetFacet]
				Copy all items from one facet to another
			'decorate clean
				Clean up duplicate decorations that might have been loaded/added by accident.
		Note that world templates are by default stored in and read from a subfolder named "worldtemplates" under the new SCRIPTDATADIRECTORY (which defaults to UOX3/js/jsdata/)
	Added welcome gump that is displayed automatically for characters on the admin account (account 0) on first login. This welcome gump gives new shard admins the option to either start with a blank and empty world, or to load the default UOX3 world - based on the default set of worldfile templates provided with UOX3, if any. It also provides a few tips to get started, as well as links to various documentation pages, forum and Discord server. The welcome gump can also be re-opened at a later stage using a new admin command: 'welcome
	Updated Item JS Method Dupe() to support passing NULL instead of a socket, for duplicating items without needing to place them in a player's backpack
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

12/06/2021 - Xuri
	Updated decorate command to support two additional object categories - containers and spawners - and the properties needed by these to function
	Fixed an issue with appending folder names to paths in File JS Method .Open() and JS File Function DeleteFile()
	Renamed default UOX3 server name (was too long) to My UOX3 Shard
	Rewrote server IP handling (new files: IP4Address.hpp/cpp) and did away with the need for the [play server list] section and SERVERLIST entries in uox.ini. UOX3 now automatically accepts and responds to connections on both local and LAN IPs, as well as an optional external/WAN ip defined in uox.ini tag EXTERNALIP, with server name defined by the existing SERVERNAME tag in the ini (punt)
-= Ho Eyo He Hum =-
Locked