2022-10-24 18:39:33 +08:00
|
|
|
//o------------------------------------------------------------------------------------------------o
|
Instance-support and misc code cleanup
Misc code and documentation cleanup:
Updated and standardized function comment blocks throughout entire codebase
Grouped getters and setters together in pairs and documented them as one
Removed empty and/or non-useful information from comment blocks
Removed unused function from cItem.cpp/h - IncID() - formerly used to change IDs for doors
Added new feature - Instances
Objects (characters, items, multis, spawnregions) can now make use of a 5th parameter to determine their location in the game world. In addition to the traditional X, Y, Z and WORLDNUMBER parameters, a new one has been added - INSTANCEID - that allows objects to exist at the same coordinates in the same world, but in different "dimensions". Code has been updated in multiple places to support this, and a default instanceID of 0 is assumed if nothing else is specified.
Added support for new DFN tag in town regions, spawn regions and locations - INSTANCEID (defaults to 0 if not present)
Added support for another start location parameter after worldNum in UOX.INI representing instanceID (defaults to 0 if not present)
Updated TWEAK menu to include WorldNumber and instanceID
Fixed BaseWeight option in TWEAK menu
Updated CBase_Teleport - now takes an optional 5th parameter instanceID
Updated SE_SpawnNPC now takes an optional 5th parameter - instanceID
Updated SE_FindMulti now takes an optional 5th parameter - instanceID
Updated SE_GetItem now takes an optional 5th parameter - instanceID
Updated SE_FindItem now takes an optional 6th parameter - instanceID
Added new JS property for Items, Characters, Regions: .instanceID
Added JS property for Regions: .members - returns comma-separated list of town member serials
Updated JS scripts making use of the above-mentioned JS Methods/Functions
Updated dictionaries with new tweak menu entry texts
Exposed SpawnRegions to JS engine, and updated JS docs with details:
SpawnRegion JS Functions
IterateOverSpawnRegions()
GetSpawnRegion( spawnRegNum )
GetSpawnRegionCount()
SpawnRegion JS Properties
name
regionNum
itemList
npcList
item
npc
maxItems
maxNpcs
itemCount
npcCount
onlyOutside
prefZ
x1
y1
x2
y2
world
instanceID
minTime
maxTime
call
2020-08-08 13:57:15 +08:00
|
|
|
//| File - UOXJSMethods.cpp
|
2022-10-24 18:39:33 +08:00
|
|
|
//o------------------------------------------------------------------------------------------------o
|
Instance-support and misc code cleanup
Misc code and documentation cleanup:
Updated and standardized function comment blocks throughout entire codebase
Grouped getters and setters together in pairs and documented them as one
Removed empty and/or non-useful information from comment blocks
Removed unused function from cItem.cpp/h - IncID() - formerly used to change IDs for doors
Added new feature - Instances
Objects (characters, items, multis, spawnregions) can now make use of a 5th parameter to determine their location in the game world. In addition to the traditional X, Y, Z and WORLDNUMBER parameters, a new one has been added - INSTANCEID - that allows objects to exist at the same coordinates in the same world, but in different "dimensions". Code has been updated in multiple places to support this, and a default instanceID of 0 is assumed if nothing else is specified.
Added support for new DFN tag in town regions, spawn regions and locations - INSTANCEID (defaults to 0 if not present)
Added support for another start location parameter after worldNum in UOX.INI representing instanceID (defaults to 0 if not present)
Updated TWEAK menu to include WorldNumber and instanceID
Fixed BaseWeight option in TWEAK menu
Updated CBase_Teleport - now takes an optional 5th parameter instanceID
Updated SE_SpawnNPC now takes an optional 5th parameter - instanceID
Updated SE_FindMulti now takes an optional 5th parameter - instanceID
Updated SE_GetItem now takes an optional 5th parameter - instanceID
Updated SE_FindItem now takes an optional 6th parameter - instanceID
Added new JS property for Items, Characters, Regions: .instanceID
Added JS property for Regions: .members - returns comma-separated list of town member serials
Updated JS scripts making use of the above-mentioned JS Methods/Functions
Updated dictionaries with new tweak menu entry texts
Exposed SpawnRegions to JS engine, and updated JS docs with details:
SpawnRegion JS Functions
IterateOverSpawnRegions()
GetSpawnRegion( spawnRegNum )
GetSpawnRegionCount()
SpawnRegion JS Properties
name
regionNum
itemList
npcList
item
npc
maxItems
maxNpcs
itemCount
npcCount
onlyOutside
prefZ
x1
y1
x2
y2
world
instanceID
minTime
maxTime
call
2020-08-08 13:57:15 +08:00
|
|
|
//| Notes - Version History
|
|
|
|
|
//| 1.0 Dark-Storm 20th December, 2001 Initial implementation
|
|
|
|
|
//| Methods for the javascript objects
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
//|
|
Instance-support and misc code cleanup
Misc code and documentation cleanup:
Updated and standardized function comment blocks throughout entire codebase
Grouped getters and setters together in pairs and documented them as one
Removed empty and/or non-useful information from comment blocks
Removed unused function from cItem.cpp/h - IncID() - formerly used to change IDs for doors
Added new feature - Instances
Objects (characters, items, multis, spawnregions) can now make use of a 5th parameter to determine their location in the game world. In addition to the traditional X, Y, Z and WORLDNUMBER parameters, a new one has been added - INSTANCEID - that allows objects to exist at the same coordinates in the same world, but in different "dimensions". Code has been updated in multiple places to support this, and a default instanceID of 0 is assumed if nothing else is specified.
Added support for new DFN tag in town regions, spawn regions and locations - INSTANCEID (defaults to 0 if not present)
Added support for another start location parameter after worldNum in UOX.INI representing instanceID (defaults to 0 if not present)
Updated TWEAK menu to include WorldNumber and instanceID
Fixed BaseWeight option in TWEAK menu
Updated CBase_Teleport - now takes an optional 5th parameter instanceID
Updated SE_SpawnNPC now takes an optional 5th parameter - instanceID
Updated SE_FindMulti now takes an optional 5th parameter - instanceID
Updated SE_GetItem now takes an optional 5th parameter - instanceID
Updated SE_FindItem now takes an optional 6th parameter - instanceID
Added new JS property for Items, Characters, Regions: .instanceID
Added JS property for Regions: .members - returns comma-separated list of town member serials
Updated JS scripts making use of the above-mentioned JS Methods/Functions
Updated dictionaries with new tweak menu entry texts
Exposed SpawnRegions to JS engine, and updated JS docs with details:
SpawnRegion JS Functions
IterateOverSpawnRegions()
GetSpawnRegion( spawnRegNum )
GetSpawnRegionCount()
SpawnRegion JS Properties
name
regionNum
itemList
npcList
item
npc
maxItems
maxNpcs
itemCount
npcCount
onlyOutside
prefZ
x1
y1
x2
y2
world
instanceID
minTime
maxTime
call
2020-08-08 13:57:15 +08:00
|
|
|
//| List of supported Classes:
|
|
|
|
|
//| - Gumps
|
|
|
|
|
//| - Char
|
|
|
|
|
//| - Item
|
|
|
|
|
//| - Socket
|
2022-10-24 18:39:33 +08:00
|
|
|
//o------------------------------------------------------------------------------------------------o
|
2002-04-07 20:53:41 +00:00
|
|
|
#ifndef __UOXJSMethods__
|
|
|
|
|
#define __UOXJSMethods__
|
|
|
|
|
|
|
|
|
|
// Object Constructors
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool Gump( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool GumpData( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool UOXCFile( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool Packet( JSContext *cx, uintN argc, jsval *vp );
|
2012-11-03 18:11:04 +00:00
|
|
|
|
|
|
|
|
// Packet Methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CPacket_Free( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CPacket_WriteByte( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CPacket_WriteShort( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CPacket_WriteLong( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CPacket_WriteString( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CPacket_ReserveSize( JSContext *cx, uintN argc, jsval *vp );
|
2002-04-07 20:53:41 +00:00
|
|
|
|
|
|
|
|
// Gump Methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CGump_Free( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddBackground( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddButton( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddButtonTileArt( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddPageButton( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddCheckbox( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddCheckerTrans( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddCroppedText( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddGroup( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_EndGroup( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddGump( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddGumpColor( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddHTMLGump( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddPage( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddPicture( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddPictureColor( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddPicInPic( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddItemProperty( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddRadio( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddText( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddTextEntry( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddTextEntryLimited( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddTiledGump( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddToolTip( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddXMFHTMLGump( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddXMFHTMLGumpColor( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_AddXMFHTMLTok( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_MasterGump( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_NoClose( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_NoDispose( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_NoMove( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_NoResize( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGump_Send( JSContext *cx, uintN argc, jsval *vp );
|
2002-04-07 20:53:41 +00:00
|
|
|
|
2003-01-21 15:59:30 +00:00
|
|
|
// GumpData Methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CGumpData_Free( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGumpData_GetId( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGumpData_GetEdit( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGumpData_GetButton( JSContext *cx, uintN argc, jsval *vp );
|
2003-01-21 15:59:30 +00:00
|
|
|
|
2002-04-07 20:53:41 +00:00
|
|
|
// Character Methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CChar_DoAction( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_EmoteMessage( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_OpenBank( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_DirectionTo( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_TurnToward( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_CheckSkill( JSContext *cx, uintN argc, jsval *vp );
|
2025-04-28 05:54:32 +10:00
|
|
|
JSBool CChar_AddSkill( JSContext *cx, uintN argc, jsval *vp );
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CChar_FindItemLayer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_SpeechInput( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_CastSpell( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_MagicEffect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Wander( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Follow( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Dismount( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_SetPoisoned( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_ExplodeItem( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_SetInvisible( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_YellMessage( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_WhisperMessage( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_AddSpell( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_SpellFail( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_ExecuteCommand( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_WalkTo( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_RunTo( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_OpenLayer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_BoltEffect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Gate( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Recall( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Mark( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_SetSkillByName( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Kill( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Resurrect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Dupe( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Jail( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Release( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_SpellMoveEffect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_SpellStaticEffect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_BreakConcentration( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_FindItemType( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_FindItemSection( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_InitWanderArea( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_ReactOnDamage( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Damage( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_InitiateCombat( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_InvalidateAttacker( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_AddAggressorFlag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_RemoveAggressorFlag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_CheckAggressorFlag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_UpdateAggressorFlagTimestamp( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_IsAggressor( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_ClearAggressorFlags( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_AddPermaGreyFlag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_RemovePermaGreyFlag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_CheckPermaGreyFlag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_UpdatePermaGreyFlagTimestamp( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_IsPermaGrey( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_ClearPermaGreyFlags( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Heal( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_Defense( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_AddFriend( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_RemoveFriend( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_GetFriendList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_ClearFriendList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_GetPetList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_GetFollowerList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_AddFollower( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_RemoveFollower( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_HasBeenOwner( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CChar_CalculateControlChance( JSContext *cx, uintN argc, jsval *vp );
|
2002-04-07 20:53:41 +00:00
|
|
|
|
|
|
|
|
// Item Methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CItem_OpenPlank( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_SetCont( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_ApplyRank( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_IsOnFoodList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_Glow( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_UnGlow( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_PlaceInPack( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_Dupe( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_LockDown( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_Carve( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_GetTileName( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_GetMoreVar( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_SetMoreVar( JSContext *cx, uintN argc, jsval *vp );
|
2002-04-07 20:53:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
// BaseObject Methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CBase_TextMessage( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_Delete( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_Teleport( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_StaticEffect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_GetTag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_SetTag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_GetTempTag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_SetTempTag( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_GetNumTags( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_GetTagMap( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_GetTempTagMap( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_InRange( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_StartTimer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_KillTimers( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_GetJSTimer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_SetJSTimer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_KillJSTimer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_ApplySection( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_FirstItem( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_NextItem( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_FinishedItems( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_DistanceTo( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_GetSerial( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_UpdateStats( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_Resist( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_IsBoat( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_CanSee( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_ResourceCount( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_UseResource( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_AddScriptTrigger( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_HasScriptTrigger( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_RemoveScriptTrigger( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_Refresh( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_SetRandomName( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_SetRandomColor( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_GetTempEffect( JSContext *cx, uintN argc, jsval *vp );
|
2025-05-13 06:58:53 +10:00
|
|
|
JSBool CBase_ReverseTempEffect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_PauseTempEffect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_ResumeTempEffect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_PauseJSTimer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CBase_ResumeJSTimer( JSContext *cx, uintN argc, jsval *vp );
|
2002-04-07 20:53:41 +00:00
|
|
|
|
Exposed various map and statics related functions to JS engine
Updated JS item properties MORE, MOREX, MOREY, MOREZ and SERIAL, and character property SERIAL, to pass values to JS scripts using JS_NewNumberValue() instead of INT_TO_JSVAL if the property value cannot fit inside JSVAL (checked with INT_FITS_IN_JSVAL)
Added support in CResponse.cpp for client trigger word for securing containers in houses - TW_HOUSESECURE
Updated CMulHandler::CheckStaticFlag() to match with statics that cover/extend across the specified Z coordinate, not just ones that have the same base Z level
Updated CMulHandler::DoesMapBlock() to not deem map tiles as blocking if they are more than 16 Z (height of a character) higher than the specified Z coordinate to check
Exposed method for finding corners of a multi to JS engine:
.GetMultiCorner( cornerID ) - Gets coordinates for specified corner of multi (0 = NW, 1 = NE, 2 = SW, 3 = SE)
Exposed various functions related to map, statics and multis to JS engine:
CalcMultiFromSer( serial ) - Find a multi from a provided serial
GetMapElevation( x, y, z, world) - Returns the map elevation at specified coordinates
IsInBuilding( x, y, z, world, instance, checkHeight ) - Returns true if the specified location is inside a static building (underneath static items), or if player is inside a multi. If the checkHeight argument is true, player is only deemed inside a multi if there are multi-items above the player's head. If player is in a courtyard/on a rooftop, they will be deemed to be NOT in the building. checkHeight is not used for the static part of the function.
CheckStaticFlag( x, y, z, world, tileFlagID ) - Checks to see if any statics at given coordinates has specified tile flag
DoesStaticBlock( x, y, z, world, checkWater ) - Checks if statics at/above given location blocks characters
DoesDynamicBlock( x, y, z, world, instance, checkWater, waterWalk ) - Checks if dynamics at/above given location blocks characters
DoesMapBlock( x, y, z, world, checkWater, waterWalk ) - Checks if map tile at/above given location blocks characters
2020-10-05 23:12:34 +08:00
|
|
|
// Multi Methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CMulti_GetMultiCorner( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_SecureContainer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_UnsecureContainer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_IsSecureContainer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_LockDownItem( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_ReleaseItem( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_AddTrashCont( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_RemoveTrashCont( JSContext *cx, uintN argc, jsval *vp );
|
2026-03-09 14:36:07 -05:00
|
|
|
JSBool CMulti_AddVendor( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_RemoveVendor( JSContext *cx, uintN argc, jsval *vp );
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CMulti_KillKeys( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CItem_IsMulti( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_IsInMulti( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_IsOnBanList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_IsOnFriendList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_IsOnGuestList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_IsOnOwnerList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_IsOwner( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_AddToBanList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_AddToFriendList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_AddToGuestList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_AddToOwnerList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_RemoveFromBanList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_RemoveFromFriendList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_RemoveFromGuestList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_RemoveFromOwnerList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_ClearBanList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_ClearFriendList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_ClearGuestList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_ClearOwnerList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_FirstChar( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_NextChar( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMulti_FinishedChars( JSContext *cx, uintN argc, jsval *vp );
|
2025-04-28 05:54:32 +10:00
|
|
|
JSBool CMulti_TurnBoat( JSContext *cx, uintN argc, jsval *vp );
|
2025-04-30 08:56:23 +10:00
|
|
|
JSBool CMulti_GetTiller( JSContext *cx, uintN argc, jsval *vp );
|
Housing Revamp and more
Updated JS SysMessage function to accept up to 10 extra, optional arguments, which can be used with dictionary messages that require additional parameters like %s or %i
Added new type of house privilege in cMultiObj.cpp to keep track of friends of the multi - HOUSEPRIV_FRIEND - which is stored during worldsaves as one or more Friend=<player serial> tags in house.wsc
Added new type of house privilege in cMultiObj.cpp to keep track of guests of the multi - HOUSEPRIV_GUEST - which is stored during worldsaves as one or more Guest=<player serial> tags in house.wsc
When items are created for houses upon house placement, a reference to the multi's serial is now stored in the house sign's MORE property to allow easier tracking of which house a particular sign belongs to
Added tracking of new, persistent properties for houses via cMultiObj.cpp/h:
lockdowns, secure containers, vendors, guests, friends, owners, ban location, public status, number of visits, timestamps
Added a multitude of new methods in cMultiObj.cpp/h to assist in improving the functionality of houses
Added new tags for houses in house.dfn (default values applied if tag not specified):
MAXSECURECONTAINERS=4 - Max amount of secure containers allowed in a multi
MAXLOCKDOWNS=256 - Max amount of lockdowns allowed in a multi
MAXVENDORS=10 - Max amount of vendors allowed in a multi
MAXBANS=50 - Max amount of bans in a multi's ban list
MAXFRIENDS=50 - Max amount of friends in a multi's friend list
MAXGUESTS=50 - Max amount of guests in a multi's guest list
MAXOWNERS=8 - Max amount of owners and co-owners in a multi's owner list
MAXTRASHCONTAINERS=1 - Max amount of trash containers allowed in multi
SCRIPT=<scriptID> - Assign a JS script-ID directly to a multi
FRONTDOOR - indicates that a door is the front door of a house. Cannot be locked in public houses!
INTERIORDOOR - indicates that a door is an interior door of a house. Can be locked in public houses.
BANX - Location X offset for multi's ban location, if not used, will try to use SE corner of multi instead
BANY - Location Y offset for multi's ban location, if not used, will try to use SE corner of multi instead
Added JS Event:
onHouseCommand( tSock, multiObj, cmdID ) - For handling spoken house commands via JS scripts attached to multi.
Updated JS Events:
onEntrance() - can now trigger both for multi being entered and/or object entering
onLeaving() - can now trigger both for multi being left and/or object entering
onSpeech() - can now also trigger for items (in addition to chars) with event & script attached, if UOX.INI setting ITEMSDETECTSPEECH is enabled
Added JS Multi methods:
.IsBoat() - Returns whether the item (or multi) is a boat
.IsOwner( playerToCheck ) - Returns whether a player is the owner of a multi
.IsOnOwnerList( playerToCheck ) - Returns whether a player is on the (co-)owner list of a multi
.IsOnFriendList( playerToCheck ) - Returns whether a player is on the friend list of a multi
.IsOnGuestList( playerToCheck ) - Returns whether a player is on the guest list of a multi
.IsOnBanList( playerToCheck ) - Returns whether a player is on the ban list of a multi
.AddToFriendList( playertoAdd ) - Adds player to the friend list of a multi
.RemoveFromFriendList( playertoRemove ) - Removes player from the friend list of a multi
.AddToGuestList( playertoAdd ) - Adds player to the guest list of a multi
.RemoveFromGuestList( playertoRemove ) - Removes player from the guest list of a multi
.ClearOwnerList() - Clears all entries from a multi's (co-)owner list
.ClearFriendList() - Clears all entries from a multi's friend list
.ClearGuestList() - Clears all entries from a multi's guest list
.ClearBanList() - Clears all entries from a multi's ban list
.SecureContainer( itemToSecure ) - Secures a container in a multi
.UnsecureContainer( itemToUnsecure ) - Unsecures a container in a multi
.IsSecureContainer( itemToCheck ) - Checks if specified item is a secure container in a multi
.LockDownItem( itemToLockDown) - Locks down an item in a multi
.ReleaseItem( itemToRelease ) - Releases a locked down item in a multi
.KillKeys() - Deletes ALL keys associated with a multi
.AddTrashCont( itemToAdd ) - Add trash container to multi's list of trash containers
.RemoveTrashCont( itemToRemove ) - Remove trash container from multi's list of trash containers
Added JS Item (Multi only) properties:
.lockdowns - Get the number of lockdowns in a multi
.maxLockdowns - Get/Set the max number of lockdowns allowed in a multi
.secureContainers - Get the number of secure containers in a multi
.maxSecureContainers - Get/Set the max number of secure containers allowed in a multi
.trashContainers - Get the number of trash containers in a multi
.maxTrashContainers - Get/Set the max number of trash containers allowed in a multi
.friends - Get the number of friends in a multi's friend list
.maxFriends - Get/Set the max number of friends allowed in a multi's friend list
.guests - Get the number of guests in a multi's guest list
.maxGuests - Get/Set the max number of guests allowed in a multi's guest list
.owners - Get the number of owners in a multi's owner list
.maxOwners - Get/Set the max number of owners allowed in a multi's owner list
.bans - Get the number of banned players in a multi's ban list
.maxBans - Get/Set the max number of banned players allowed in a multi's ban list
.vendors - Get the number of player vendors in a multi
.maxVendors - Get the max number of player vendors allowed in a multi
.deed - Get the item sectionID for deed used to place multi
.isPublic - Get/Set the private/public state of a multi
.buildTimestamp - Get the timestamp for when the house was originally placed
.tradeTimestamp - Get the timestamp for when the house was last traded to another player
.banX - Get/Set the ban location X offset for the multi
.banY - Get/Set the ban location Y offset for the multi
Added JS Character properties:
.multi = Get/Set the multi object the character is in
.accountNum = Get the account number the character belongs to
.housesOwned = Get a count of houses owned by the character
.housesCoOwned = Get a count of houses co-owned by the character
Updated JS cBaseObject Methods .FirstItem(), .NextItem() and .FinishedItems() to also support iterating through items in multis
Updated JS multi Methods .FirstChar(), .NextChar() and .FinishedChars() to support an additional parameter to specify what kind of characters to loop through:
"default" or no parameter - all characters inside the multi
"owner" - players on multi's owner list
"friend" - players on multi's friend list
"guest" - players on multi's guest list
"banned" - players on multi's ban list
Added new INI tags to a new section of uox.ini called [houses]
DECAYTIMERINHOUSE=3600 // Decay timer in seconds for non-locked down items inside houses
PROTECTPRIVATEHOUSES=1 // Toggles whether private houses will automatically boot unauthorized visitors (1) or not (0)
TRACKHOUSESPERACCOUNT=1 // Toggles whether to track (and restrict) house ownership per account (1) or per character (0)
MAXHOUSESOWNABLE=1 // Specifies the max amount of houses a player can own per account/char, depending on how house ownership is tracked
MAXHOUSESCOOWNABLE=10 // Specifies the max amount of houses a player can co-own per character
CANOWNANDCOOWNHOUSES=1 // Toggles whether players can own and co-own houses at the same time
COOWNHOUSESONSAMEACCOUNT=1 // Toggles whether characters on same account as house owner will be treated as co-owners
Added new INI tags in [settings] section of uox.ini:
ITEMSDETECTSPEECH=0 // If enabled, server will search for nearby items with onSpeech JS event running whenever a character speaks. Disabled by default.
MAXPLAYERPACKITEMS=125 // Defines max item capacity for player (and NPC) backpacks. Defaults to 125.
Moved most of the existing house functionality to JS and expanded upon it to reach feature parity with houses in regular UO around Publish 15/16, with various extras thrown in for good measure and all functionality being customizable:
js/server/house/house.js (15000) - handles detection of house commands and characters entering/leaving houses
js/server/house/houseSign.js (15001) - contains and handles all house-related gumps/menus and what is shown when players interact with house sign
js/server/house/houseCommands.js (15002) - handles functionality of house commands and other functionality such as transfer of ownership, demolishing house, etc.
js/server/house/houseDeed.js (15003) - handles initial rules that allow/disallow placement of additional houses for players
All house-related menus now fully handled through JS
All house commands and other functionality now fully handled through JS
Removed redundant hard-coded house functionality
Implemented Co-owners, friends, guests for houses, with access rules in place for entry, lockdowns, house commands, etc.
Implemented Private and Public houses
Implemented Secure Containers and Trash Barrels
Definable max lockdowns, secure containers, player vendors, bans, friends, guests, owners, trash containers and more - per house type
JS scripts can now be attached directly to houses
Doors in houses can be marked as front doors or interior doors, and will be treated differently with regards to private and public houses
Added new item to dfndata/items/containers/misc.dfn - [trashbarrel]
Added new JS script (js/items/trashbarrel.js) with trash barrel functionality for houses. Trash barrels that are marked as secure containers are only accessible by owners, co-owners and friends of the house. Various options available at top of script.
Updated js/items/axe.js to support chopping up trash barrels and house add-ons in houses owned by the player
Fixed an issue with house doors being left behind after demolishing houses while their doors were open
Fixed an issue where GMs could be banned from player houses
Added Line of Sight checks to speech, to give players some privacy in their own homes
Updated house placement code to more accurately check for other multis, dynamic and static objects when placing houses; now requires free space around each house that cannot be blocked by other houses or items that can block player movement, and disallows placement of houses on roads
Updated house placement code to move characters blocking house placement to SE corner of the house
Updated house placement code to disallow placing houses in guarded regions, or in dungeons
Added new DFN tag for regions to enable/disable player houses in specific regions: HOUSING=0/1
Added new region (247) that covers path to Valley of Eodon in Felucca
Added new region (248) that covers Valley of Eodon in Ter-Mur, with player housing disabled
Added new region (249) that covers entire T2A lands, with player housing disabled
Updated SPACEX and SPACEY values for all houses in dfndata/house/house.dfn to match updated house placement code
Added new JS property to Regions that can be used to determine or change state of player housing in a region: .canPlaceHouse()
Updated rules for usage of dye tubs to dye locked down items; now only house owners or co-owners may dye locked down items
Updated rules for usage of the following locked down items in a house, which are now only usable by house owners and co-owners
Dyes, Guildstone Deeds, Recall Runes (renaming), Rename Deeds, Townstone Deeds, House Deeds, Boat Models, Player Vendor Deeds, Ore, Hair Dye
Updated rules for usage of the following locked down items in a house, which are now only usable by house owners, co-owners and friends:
Keys, Dye Tubs, Magic Scrolls, Fireworks Wands, Magic Wands, Smithing Tools, Mining Tools, Fishing Poles
Updated item lockdown rules to allow locking down (and releasing) items in a container as long as the container is locked down, and to only allow releasing a locked down container if it's empty of locked down items
Updated item lockdown rules to only allow locking down movement-blocking items further than 2 tiles away from doors
Updated rules for releasing items in houses - now the house owner can release any locked down items, co-owners can release items locked down by themselves or by friends, while friends can release only items locked down by themselves
Added some feedback to player about why their attempted house placement failed
Items added by GMs directly into multis will now decay based on the house-specific decay timer instead of the regular one
Fixed an issue that could cause items to almost instantly decay after being released from lockdown in a house
Placing house add-ons now properly takes into account SPACEX and SPACEY values when checking if they can fit in selected area of houses
Re-added SPACEX and SPACEY values for Pentagram and Loom house add-ons
House add-ons can now be converted back into house add-on deeds by chopping them with an axe
Added new item type - IT_HOUSEADDON (201) - used by house add-ons placed in player houses
Fixed a bug where keys would stop working after being added to a keyring, and would turn into blank keys upon release from the keyring
Added visitor count for public player houses, which keeps track of how many visits a public house has received, with each player counted max 1 time every 24 hours
Fixed an issue with FindPlayersInOldVisrange() where it didn't take into account that players could see buildings further away than the standard update range. This could cause players to see ghost images of buildings if they were at the "right" distance when the building was being demolished
Added NODECAY tag to all signs and doors in dfndata/house/house.dfn
Added FRONTDOOR or INTERIORDOOR (as appropriate) to all doors in dfndata/house/house.dfn
Added BANX and BANY to specify ban location for some houses in dfndata/house/house.dfn instead of relying on finding SE corner automatically
Implemented strongboxes (js/server/house/strongbox.js) for co-owners of a house, which can be placed with the house command "i wish to place a strongbox". Max capacity is 25 items
Updated 'REMOVE command to take an optional parameter - itemID. If supplied, the command will remove all items with this itemID from a targeted container
Fixed a bug when checking if dynamic items were blocking valid spawn locations for NPCs, some function arguments were in the wrong order!
Improved code that finds valid spawn locations for items and NPCs spawned via spawn regions. As server gradually builds up lists of valid spawn locations per region over time, it will start using these lists more often, rather than always look for brand new spawn locations.
Fixed a bug with CMulHandler::CheckStaticFlag() that prevented NPCs from spawning inside buildings with no static floors!
Fixed an issue with repeating commands that prevented GMs from being able to cancel them when using the ClassicUO client
Exposed character property .accountNum to JS engine
Extended CDataList class to include a Clear() method for clearing lists
Updated JS File method .Open() to support an optional, third argument - subFolderName - that defines in which sub-folder of UOX3/shared/ to store/look for a file. If no third argument is supplied, UOX3 will default to using the shared folder itself.
Updated JS File method .Length() to return a value of -1 for files that don't exist
Added new code function, exposed to JS engine with same parameters, which simply checks if a given tile ID has a specific flag
bool CheckTileFlag( UI16 itemID, TILEFLAG flagToCheck )
Added JS function used to find the root container of an item (if any)
FindRootContainer( itemSerial )
FindRootContainer( item )
Added new JS function that allows deleting files from UOX3/shared/ folder or subfolders of shared folder. If no subFolderName is provided, looks for file directly in shared folder itself. Restrictions on file- and folder-names apply.
bool DeleteFile( fileName, subFolderName )
Added new JS functions for checking if a specific client or server feature is enabled. See documentation for full list of client/server features.
GetClientFeature( bitNum ) // Returns true if specified client feature is enabled on server
GetServerFeature( bitNum ) // Returns true if specified server feature is enabled on server
Added new JS function for returning the value of almost any server setting from UOX.INI
GetServerSetting( settingNameInDoubleQuotes )
Updated JS function DoesDynamicBlock() with two new parameters - checkOnlyMultis and checkOnlyNonMultis
Updated JS function DoesMapBlock() with two new parameters - checkMultiPlacement and checkForRoad
Fixed an issue where a LoS check would prevent players from accessing containers in their own backpack
Added new functions in findfuncs.cpp to make it easier to find items near another object or location:
findNearbyItems( object, distance )
findNearbyItems( x, y, worldNumber, instanceID, distance )
Added new Item property - maxItems - used by containers to determine their max item capacity
Added new Item property - totalItemCount - used to get total item count in a container (including sub-containers)
Added check for max item capacity when creating new items that are added to a character's backpack - items will be created below character's feet if backpack is full!
Added new DFN tag for items, used by containers to determine item capacity for a given container:
MAXITEMS=# // 125 is the default for all containers if not set
Added new JS Item properties:
.maxItems // gets/sets item capacity for a given container
.totalItemCount // gets total item count in a container, including sub-containers
Updated item tooltips for containers to show accurate total item count, as well as to display max item capacity
Fixed a bug where picking up items from a non-locked down pile of items on the floor inside a multi could cause the remaining pile to be seen as no longer inside the multi, disallowing locking it back down and causing it to decay based on regular decay timer instead of house-specific one
Updated JS command set to allow setting poison-level on items ('set poison #) and hunger-level on characters ('set hunger #)
Fixed an issue with js/item/food.js that prevented poisoned food from poisoning characters when eaten
Fixed an issue with js/skill/poisoning.js that prevented players from poisoning food!
Updated various JS scripts and hardcoded targeting functions to disallow the targeting of locked down resources using skills and tools
Updated JS Method TextMessage() to support three extra, optional parameters. Note that if one optional parameter is included, all preceding optional parameters are also required!
speechTarget - What kind of target is this message intended for?
0 - Only visible for sender and receiver of message
1 - Visible to all players in range
2 - Visible to all NPCs and players in range
3 - Visible to all PCs everywhere + NPCs in range
4 - Visible to all PCs everywhere (broadcast)
5 - Only visible for the receiver of the message
speechTargetSerial - The serial of the receiver of the message, used if speechTarget is 0 or 5
speechFontType - The type of font to display the text in. Defaults to normal.
0 - Bold
1 - Normal with shadow
2 - Bold with shadow
3 - Normal
4 - Gothic
5 - Italic
6 - Small, dark
7 - Colourful
8 - Runic (only works with CAPS)
9 - Small, light
Added timestamp to worldsaves in console, to make it easier to see when a particular world-save was done
Added info about compiler/environment displayed at the top of the UOX3 console during startup
Updated dictionary files with new messages primarily related to housing
2020-11-04 02:00:37 +08:00
|
|
|
|
2002-04-07 20:53:41 +00:00
|
|
|
// Socket Methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CSocket_Disconnect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_OpenURL( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_GetByte( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_GetWord( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_GetDWord( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_GetSByte( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_GetSWord( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_GetSDWord( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_GetString( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_SetByte( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_SetWord( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_SetDWord( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_SetString( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_ReadBytes( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_OpenContainer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_OpenGump( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_CloseGump( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_WhoList( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_Music( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_SendAddMenu( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_Send( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_DisplayDamage( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_Page( JSContext *cx, uintN argc, jsval *vp );
|
2002-04-07 20:53:41 +00:00
|
|
|
|
|
|
|
|
// Guild Methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CGuild_AcceptRecruit( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGuild_IsAtPeace( JSContext *cx, uintN argc, jsval *vp );
|
2025-08-05 04:05:43 +08:00
|
|
|
JSBool CGuild_AddMember( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGuild_AddRecruit( JSContext *cx, uintN argc, jsval *vp );
|
2025-04-13 18:27:00 -05:00
|
|
|
JSBool CGuild_RemoveRecruit( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGuild_RemoveMember( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGuild_RecruitToMember( JSContext *cx, uintN argc, jsval *vp );
|
2025-08-05 04:05:43 +08:00
|
|
|
JSBool CGuild_IsAtWar( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGuild_IsAlly( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CGuild_IsNeutral( JSContext *cx, uintN argc, jsval *vp );
|
2002-04-07 20:53:41 +00:00
|
|
|
|
|
|
|
|
// Misc
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CMisc_SoundEffect( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_SellTo( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_BuyFrom( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_HasSpell( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_RemoveSpell( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_CustomTarget( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_PopUpTarget( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_GetTimer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_SetTimer( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_MakeMenu( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CMisc_SysMessage( JSContext *cx, uintN argc, jsval *vp );
|
2012-11-03 18:11:04 +00:00
|
|
|
|
|
|
|
|
// Race methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CRace_CanWearArmour( JSContext *cx, uintN argc, jsval *vp );
|
2025-11-05 20:32:45 -06:00
|
|
|
JSBool CRace_CanEquip( JSContext *cx, uintN argc, jsval *vp );
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CRace_IsValidHairColour( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CRace_IsValidSkinColour( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CRace_IsValidBeardColour( JSContext *cx, uintN argc, jsval *vp );
|
2012-11-03 18:11:04 +00:00
|
|
|
|
|
|
|
|
// File methods
|
|
|
|
|
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CFile_Open( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CFile_Close( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CFile_Free( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CFile_Write( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CFile_ReadUntil( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CFile_Read( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CFile_EOF( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CFile_Length( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CFile_Pos( JSContext *cx, uintN argc, jsval *vp );
|
2012-11-03 18:11:04 +00:00
|
|
|
|
|
|
|
|
// Account methods
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CAccount_AddAccount( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CAccount_DelAccount( JSContext *cx, uintN argc, jsval *vp );
|
2025-03-25 16:10:53 +10:00
|
|
|
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CConsole_Print( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_Log( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_Error( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_Warning( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_PrintSectionBegin( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_TurnYellow( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_TurnRed( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_TurnGreen( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_TurnBlue( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_TurnNormal( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_TurnBrightWhite( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_PrintDone( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_PrintFailed( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_PrintPassed( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_ClearScreen( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_PrintBasedOnVal( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_MoveTo( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_PrintSpecial( JSContext *cx, uintN argc, jsval *vp );
|
2025-10-24 16:13:17 +08:00
|
|
|
JSBool CConsole_BeginRestart( JSContext *cx, uintN argc, jsval *vp );
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CConsole_BeginShutdown( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CConsole_Reload( JSContext *cx, uintN argc, jsval *vp );
|
2025-03-25 16:10:53 +10:00
|
|
|
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CParty_GetMember( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CParty_Add( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CParty_Remove( JSContext *cx, uintN argc, jsval *vp );
|
2025-03-25 16:10:53 +10:00
|
|
|
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CSocket_FirstTriggerWord( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_NextTriggerWord( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CSocket_FinishedTriggerWords( JSContext *cx, uintN argc, jsval *vp );
|
2025-03-25 16:10:53 +10:00
|
|
|
|
2025-03-27 17:53:11 +10:00
|
|
|
JSBool CRegion_AddScriptTrigger( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CRegion_RemoveScriptTrigger( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CRegion_GetOrePref( JSContext *cx, uintN argc, jsval *vp );
|
|
|
|
|
JSBool CRegion_GetOreChance( JSContext *cx, uintN argc, jsval *vp );
|
2012-11-03 18:11:04 +00:00
|
|
|
|
2022-11-04 17:12:13 -04:00
|
|
|
inline JSFunctionSpec CGump_Methods[] =
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "Free", CGump_Free, 0, 0 },
|
|
|
|
|
{ "AddBackground", CGump_AddBackground, 5, 0 },
|
|
|
|
|
{ "AddButton", CGump_AddButton, 6, 0 },
|
|
|
|
|
{ "AddButtonTileArt", CGump_AddButtonTileArt, 11, 0 },
|
|
|
|
|
{ "AddPageButton", CGump_AddPageButton, 4, 0 },
|
|
|
|
|
{ "AddCheckbox", CGump_AddCheckbox, 6, 0 },
|
|
|
|
|
{ "AddCheckerTrans", CGump_AddCheckerTrans, 4, 0 },
|
|
|
|
|
{ "AddCroppedText", CGump_AddCroppedText, 6, 0 },
|
|
|
|
|
{ "AddGroup", CGump_AddGroup, 1, 0 },
|
|
|
|
|
{ "EndGroup", CGump_EndGroup, 0, 0 },
|
|
|
|
|
{ "AddGump", CGump_AddGump, 4, 0 },
|
|
|
|
|
{ "AddGumpColor", CGump_AddGumpColor, 4, 0 },
|
|
|
|
|
{ "AddHTMLGump", CGump_AddHTMLGump, 7, 0 },
|
|
|
|
|
{ "AddPage", CGump_AddPage, 1, 0 },
|
|
|
|
|
{ "AddPicture", CGump_AddPicture, 3, 0 },
|
|
|
|
|
{ "AddPictureColor", CGump_AddPictureColor, 4, 0 },
|
|
|
|
|
{ "AddPicInPic", CGump_AddPicInPic, 7, 0 },
|
|
|
|
|
{ "AddItemProperty", CGump_AddItemProperty, 1, 0 },
|
|
|
|
|
{ "AddRadio", CGump_AddRadio, 6, 0 },
|
|
|
|
|
{ "AddText", CGump_AddText, 4, 0 },
|
|
|
|
|
{ "AddTextEntry", CGump_AddTextEntry, 8, 0 },
|
|
|
|
|
{ "AddTextEntryLimited", CGump_AddTextEntryLimited, 9, 0 },
|
|
|
|
|
{ "AddTiledGump", CGump_AddTiledGump, 5, 0 },
|
|
|
|
|
{ "AddToolTip", CGump_AddToolTip, 11, 0 },
|
|
|
|
|
{ "AddXMFHTMLGump", CGump_AddXMFHTMLGump, 7, 0 },
|
|
|
|
|
{ "AddXMFHTMLGumpColor", CGump_AddXMFHTMLGumpColor, 8, 0 },
|
|
|
|
|
{ "AddXMFHTMLTok", CGump_AddXMFHTMLTok, 8, 0 },
|
|
|
|
|
{ "MasterGump", CGump_MasterGump, 1, 0 },
|
|
|
|
|
{ "NoClose", CGump_NoClose, 0, 0 },
|
|
|
|
|
{ "NoDispose", CGump_NoDispose, 0, 0 },
|
|
|
|
|
{ "NoMove", CGump_NoMove, 0, 0 },
|
|
|
|
|
{ "NoResize", CGump_NoResize, 0, 0 },
|
|
|
|
|
{ "Send", CGump_Send, 1, 0 },
|
|
|
|
|
JS_FS_END
|
2002-04-07 20:53:41 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 00:52:37 -04:00
|
|
|
inline JSFunctionSpec CChar_Methods[] =
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
{
|
2025-04-28 05:54:32 +10:00
|
|
|
{ "AddSkill", CChar_AddSkill, 3, 0 },
|
|
|
|
|
{ "SpeechInput", CChar_SpeechInput, 1, 0 },
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "KillTimers", CBase_KillTimers, 1, 0 },
|
|
|
|
|
{ "GetJSTimer", CBase_GetJSTimer, 2, 0 },
|
|
|
|
|
{ "SetJSTimer", CBase_SetJSTimer, 3, 0 },
|
|
|
|
|
{ "KillJSTimer", CBase_KillJSTimer, 2, 0 },
|
|
|
|
|
{ "TextMessage", CBase_TextMessage, 1, 0 },
|
|
|
|
|
{ "YellMessage", CChar_YellMessage, 1, 0 },
|
|
|
|
|
{ "WhisperMessage", CChar_WhisperMessage, 1, 0 },
|
|
|
|
|
{ "EmoteMessage", CChar_EmoteMessage, 1, 0 },
|
|
|
|
|
{ "Delete", CBase_Delete, 0, 0 },
|
|
|
|
|
{ "DoAction", CChar_DoAction, 1, 0 },
|
|
|
|
|
{ "StaticEffect", CBase_StaticEffect, 3, 0 },
|
|
|
|
|
{ "Teleport", CBase_Teleport, 5, 0 },
|
|
|
|
|
{ "SetLocation", CBase_Teleport, 5, 0 },
|
|
|
|
|
{ "SoundEffect", CMisc_SoundEffect, 2, 0 },
|
|
|
|
|
{ "SellTo", CMisc_SellTo, 1, 0 },
|
|
|
|
|
{ "BuyFrom", CMisc_BuyFrom, 1, 0 },
|
|
|
|
|
{ "HasSpell", CMisc_HasSpell, 1, 0 },
|
|
|
|
|
{ "RemoveSpell", CMisc_RemoveSpell, 1, 0 },
|
|
|
|
|
{ "GetTag", CBase_GetTag, 1, 0 },
|
|
|
|
|
{ "SetTag", CBase_SetTag, 2, 0 },
|
|
|
|
|
{ "GetTempTag", CBase_GetTempTag, 1, 0 },
|
|
|
|
|
{ "SetTempTag", CBase_SetTempTag, 2, 0 },
|
|
|
|
|
{ "GetNumTags", CBase_GetNumTags, 0, 0 },
|
|
|
|
|
{ "GetTagMap", CBase_GetTagMap, 0, 0 },
|
|
|
|
|
{ "GetTempTagMap", CBase_GetTempTagMap, 0, 0 },
|
|
|
|
|
{ "OpenBank", CChar_OpenBank, 1, 0 },
|
|
|
|
|
{ "DirectionTo", CChar_DirectionTo, 1, 0 },
|
|
|
|
|
{ "TurnToward", CChar_TurnToward, 1, 0 },
|
|
|
|
|
{ "ResourceCount", CBase_ResourceCount, 2, 0 },
|
|
|
|
|
{ "UseResource", CBase_UseResource, 3, 0 },
|
|
|
|
|
{ "CustomTarget", CMisc_CustomTarget, 1, 0 },
|
|
|
|
|
{ "PopUpTarget", CMisc_PopUpTarget, 1, 0 },
|
|
|
|
|
{ "InRange", CBase_InRange, 2, 0 },
|
|
|
|
|
{ "FindItemLayer", CChar_FindItemLayer, 1, 0 },
|
|
|
|
|
{ "StartTimer", CBase_StartTimer, 2, 0 },
|
|
|
|
|
{ "CheckSkill", CChar_CheckSkill, 4, 0 },
|
|
|
|
|
{ "SpeechInput", CChar_SpeechInput, 1, 0 },
|
|
|
|
|
{ "CastSpell", CChar_CastSpell, 2, 0 },
|
|
|
|
|
{ "SysMessage", CMisc_SysMessage, 10, 0 },
|
|
|
|
|
{ "MagicEffect", CChar_MagicEffect, 2, 0 },
|
|
|
|
|
{ "GetSerial", CBase_GetSerial, 1, 0 },
|
|
|
|
|
{ "UpdateStats", CBase_UpdateStats, 1, 0 },
|
|
|
|
|
{ "MakeMenu", CMisc_MakeMenu, 2, 0 },
|
|
|
|
|
{ "Wander", CChar_Wander, 3, 0 },
|
|
|
|
|
{ "Follow", CChar_Follow, 1, 0 },
|
|
|
|
|
{ "Dismount", CChar_Dismount, 0, 0 },
|
|
|
|
|
{ "SetPoisoned", CChar_SetPoisoned, 2, 0 },
|
|
|
|
|
{ "ExplodeItem", CChar_ExplodeItem, 3, 0 },
|
|
|
|
|
{ "SetInvisible", CChar_SetInvisible, 2, 0 },
|
|
|
|
|
{ "ApplySection", CBase_ApplySection, 1, 0 },
|
|
|
|
|
{ "Refresh", CBase_Refresh, 0, 0 },
|
|
|
|
|
{ "AddSpell", CChar_AddSpell, 1, 0 },
|
|
|
|
|
{ "SpellFail", CChar_SpellFail, 0, 0 },
|
|
|
|
|
{ "FirstItem", CBase_FirstItem, 0, 0 },
|
|
|
|
|
{ "NextItem", CBase_NextItem, 0, 0 },
|
|
|
|
|
{ "FinishedItems", CBase_FinishedItems, 0, 0 },
|
|
|
|
|
{ "ExecuteCommand", CChar_ExecuteCommand, 0, 0 },
|
2026-04-26 21:13:48 +08:00
|
|
|
{ "WalkTo", CChar_WalkTo, 2, 0 },
|
|
|
|
|
{ "RunTo", CChar_RunTo, 2, 0 },
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "DistanceTo", CBase_DistanceTo, 1, 0 },
|
|
|
|
|
{ "OpenLayer", CChar_OpenLayer, 2, 0 },
|
|
|
|
|
{ "BoltEffect", CChar_BoltEffect, 0, 0 },
|
|
|
|
|
{ "Gate", CChar_Gate, 1, 0 },
|
|
|
|
|
{ "Recall", CChar_Recall, 1, 0 },
|
|
|
|
|
{ "Mark", CChar_Mark, 1, 0 },
|
|
|
|
|
{ "SetRandomName", CBase_SetRandomName, 1, 0 },
|
|
|
|
|
{ "SetRandomColor", CBase_SetRandomColor, 1, 0 },
|
|
|
|
|
{ "SetSkillByName", CChar_SetSkillByName, 2, 0 },
|
|
|
|
|
{ "Kill", CChar_Kill, 0, 0 },
|
|
|
|
|
{ "Resurrect", CChar_Resurrect, 0, 0 },
|
|
|
|
|
{ "Dupe", CChar_Dupe, 0, 0 },
|
|
|
|
|
{ "Jail", CChar_Jail, 0, 0 },
|
|
|
|
|
{ "Release", CChar_Release, 0, 0 },
|
|
|
|
|
{ "GetTimer", CMisc_GetTimer, 1, 0 },
|
|
|
|
|
{ "SetTimer", CMisc_SetTimer, 2, 0 },
|
|
|
|
|
{ "SpellMoveEffect", CChar_SpellMoveEffect, 2, 0 },
|
|
|
|
|
{ "SpellStaticEffect", CChar_SpellStaticEffect,1, 0 },
|
|
|
|
|
{ "BreakConcentration", CChar_BreakConcentration,0, 0 },
|
|
|
|
|
{ "FindItemType", CChar_FindItemType, 1, 0 },
|
|
|
|
|
{ "FindItemSection", CChar_FindItemSection, 1, 0 },
|
|
|
|
|
{ "InitWanderArea", CChar_InitWanderArea, 0, 0 },
|
|
|
|
|
{ "CanSee", CBase_CanSee, 1, 0 },
|
|
|
|
|
{ "ReactOnDamage", CChar_ReactOnDamage, 1, 0 },
|
|
|
|
|
{ "Damage", CChar_Damage, 1, 0 },
|
|
|
|
|
{ "InitiateCombat", CChar_InitiateCombat, 1, 0 },
|
|
|
|
|
{ "InvalidateAttacker", CChar_InvalidateAttacker, 0, 0 },
|
|
|
|
|
{ "AddAggressorFlag", CChar_AddAggressorFlag, 1, 0 },
|
|
|
|
|
{ "RemoveAggressorFlag", CChar_RemoveAggressorFlag, 1, 0 },
|
|
|
|
|
{ "CheckAggressorFlag", CChar_CheckAggressorFlag, 1, 0 },
|
|
|
|
|
{ "UpdateAggressorFlagTimestamp", CChar_UpdateAggressorFlagTimestamp, 1, 0 },
|
|
|
|
|
{ "IsAggressor", CChar_IsAggressor, 1, 0 },
|
|
|
|
|
{ "ClearAggressorFlags", CChar_ClearAggressorFlags, 0, 0 },
|
|
|
|
|
{ "AddPermaGreyFlag", CChar_AddPermaGreyFlag, 1, 0 },
|
|
|
|
|
{ "RemovePermaGreyFlag", CChar_RemovePermaGreyFlag, 1, 0 },
|
|
|
|
|
{ "CheckPermaGreyFlag", CChar_CheckPermaGreyFlag, 1, 0 },
|
|
|
|
|
{ "UpdatePermaGreyFlagTimestamp", CChar_UpdatePermaGreyFlagTimestamp, 1, 0 },
|
|
|
|
|
{ "IsPermaGrey", CChar_IsPermaGrey, 1, 0 },
|
|
|
|
|
{ "ClearPermaGreyFlags", CChar_ClearPermaGreyFlags, 0, 0 },
|
|
|
|
|
{ "Heal", CChar_Heal, 1, 0 },
|
|
|
|
|
{ "Resist", CBase_Resist, 1, 0 },
|
|
|
|
|
{ "Defense", CChar_Defense, 3, 0 },
|
|
|
|
|
{ "AddScriptTrigger", CBase_AddScriptTrigger, 1, 0 },
|
|
|
|
|
{ "HasScriptTrigger", CBase_HasScriptTrigger, 1, 0 },
|
|
|
|
|
{ "RemoveScriptTrigger",CBase_RemoveScriptTrigger, 1, 0 },
|
|
|
|
|
{ "AddFriend", CChar_AddFriend, 1, 0 },
|
|
|
|
|
{ "RemoveFriend", CChar_RemoveFriend, 1, 0 },
|
|
|
|
|
{ "GetFriendList", CChar_GetFriendList, 0, 0 },
|
|
|
|
|
{ "ClearFriendList", CChar_ClearFriendList, 0, 0 },
|
|
|
|
|
{ "GetPetList", CChar_GetPetList, 0, 0 },
|
|
|
|
|
{ "GetFollowerList", CChar_GetFollowerList, 0, 0 },
|
|
|
|
|
{ "AddFollower", CChar_AddFollower, 1, 0 },
|
|
|
|
|
{ "RemoveFollower", CChar_RemoveFollower, 1, 0 },
|
|
|
|
|
{ "HasBeenOwner", CChar_HasBeenOwner, 1, 0 },
|
|
|
|
|
{ "CalculateControlChance", CChar_CalculateControlChance, 1, 0 },
|
|
|
|
|
{ "GetTempEffect", CBase_GetTempEffect, 1, 0 },
|
2025-05-13 06:58:53 +10:00
|
|
|
{ "ReverseTempEffect", CBase_ReverseTempEffect, 1, 0 },
|
|
|
|
|
{ "PauseTempEffect", CBase_PauseTempEffect, 1, 0 },
|
|
|
|
|
{ "ResumeTempEffect", CBase_ResumeTempEffect, 1, 0 },
|
|
|
|
|
{ "PauseJSTimer", CBase_PauseJSTimer, 1, 0 },
|
|
|
|
|
{ "ResumeJSTimer", CBase_ResumeJSTimer, 1, 0 },
|
2025-03-25 16:10:53 +10:00
|
|
|
JS_FS_END
|
2002-04-07 20:53:41 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 00:52:37 -04:00
|
|
|
inline JSFunctionSpec CItem_Methods[] =
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "KillTimers", CBase_KillTimers, 1, 0 },
|
|
|
|
|
{ "GetJSTimer", CBase_GetJSTimer, 2, 0 },
|
|
|
|
|
{ "SetJSTimer", CBase_SetJSTimer, 3, 0 },
|
|
|
|
|
{ "KillJSTimer", CBase_KillJSTimer, 2, 0 },
|
|
|
|
|
{ "Delete", CBase_Delete, 0, 0 },
|
|
|
|
|
{ "TextMessage", CBase_TextMessage, 1, 0 },
|
|
|
|
|
{ "Teleport", CBase_Teleport, 5, 0 },
|
|
|
|
|
{ "StaticEffect", CBase_StaticEffect, 4, 0 },
|
|
|
|
|
{ "SetLocation", CBase_Teleport, 5, 0 },
|
|
|
|
|
{ "SoundEffect", CMisc_SoundEffect, 2, 0 },
|
|
|
|
|
{ "HasSpell", CMisc_HasSpell, 1, 0 },
|
|
|
|
|
{ "RemoveSpell", CMisc_RemoveSpell, 1, 0 },
|
|
|
|
|
{ "GetTag", CBase_GetTag, 1, 0 },
|
|
|
|
|
{ "SetTag", CBase_SetTag, 1, 0 },
|
|
|
|
|
{ "GetTempTag", CBase_GetTempTag, 1, 0 },
|
|
|
|
|
{ "SetTempTag", CBase_SetTempTag, 2, 0 },
|
|
|
|
|
{ "GetNumTags", CBase_GetNumTags, 0, 0 },
|
|
|
|
|
{ "GetTagMap", CBase_GetTagMap, 0, 0 },
|
|
|
|
|
{ "GetTempTagMap", CBase_GetTempTagMap, 0, 0 },
|
|
|
|
|
{ "InRange", CBase_InRange, 2, 0 },
|
|
|
|
|
{ "StartTimer", CBase_StartTimer, 2, 0 },
|
|
|
|
|
{ "OpenPlank", CItem_OpenPlank, 0, 0 },
|
|
|
|
|
{ "IsMulti", CItem_IsMulti, 0, 0 },
|
|
|
|
|
{ "IsBoat", CBase_IsBoat, 0, 0 },
|
|
|
|
|
{ "IsInMulti", CMulti_IsInMulti, 1, 0 },
|
|
|
|
|
{ "IsOnBanList", CMulti_IsOnBanList, 1, 0 },
|
|
|
|
|
{ "IsOnFriendList", CMulti_IsOnFriendList, 1, 0 },
|
|
|
|
|
{ "IsOnGuestList", CMulti_IsOnGuestList, 1, 0 },
|
|
|
|
|
{ "IsOwner", CMulti_IsOwner, 1, 0 },
|
|
|
|
|
{ "IsOnOwnerList", CMulti_IsOnOwnerList, 1, 0 },
|
|
|
|
|
{ "AddToBanList", CMulti_AddToBanList, 1, 0 },
|
|
|
|
|
{ "AddToFriendList", CMulti_AddToFriendList, 1, 0 },
|
|
|
|
|
{ "AddToGuestList", CMulti_AddToGuestList, 1, 0 },
|
|
|
|
|
{ "AddToOwnerList", CMulti_AddToOwnerList, 1, 0 },
|
|
|
|
|
{ "RemoveFromBanList", CMulti_RemoveFromBanList, 1, 0 },
|
|
|
|
|
{ "RemoveFromFriendList", CMulti_RemoveFromFriendList, 1, 0 },
|
|
|
|
|
{ "RemoveFromGuestList", CMulti_RemoveFromGuestList, 1, 0 },
|
|
|
|
|
{ "RemoveFromOwnerList", CMulti_RemoveFromOwnerList, 1, 0 },
|
|
|
|
|
{ "ClearBanList", CMulti_ClearBanList, 1, 0 },
|
|
|
|
|
{ "ClearFriendList", CMulti_ClearFriendList, 1, 0 },
|
|
|
|
|
{ "ClearGuestList", CMulti_ClearGuestList, 1, 0 },
|
|
|
|
|
{ "ClearOwnerList", CMulti_ClearOwnerList, 1, 0 },
|
|
|
|
|
{ "GetSerial", CBase_GetSerial, 1, 0 },
|
|
|
|
|
{ "UpdateStats", CBase_UpdateStats, 1, 0 },
|
|
|
|
|
{ "SetCont", CItem_SetCont, 1, 0 },
|
|
|
|
|
{ "ApplySection", CBase_ApplySection, 1, 0 },
|
|
|
|
|
{ "Refresh", CBase_Refresh, 0, 0 },
|
|
|
|
|
{ "ApplyRank", CItem_ApplyRank, 2, 0 },
|
|
|
|
|
{ "IsOnFoodList", CItem_IsOnFoodList, 1, 0 },
|
|
|
|
|
{ "FirstItem", CBase_FirstItem, 0, 0 },
|
|
|
|
|
{ "NextItem", CBase_NextItem, 0, 0 },
|
|
|
|
|
{ "FinishedItems", CBase_FinishedItems, 0, 0 },
|
|
|
|
|
{ "DistanceTo", CBase_DistanceTo, 1, 0 },
|
|
|
|
|
{ "Glow", CItem_Glow, 1, 0 },
|
|
|
|
|
{ "UnGlow", CItem_UnGlow, 1, 0 },
|
|
|
|
|
{ "PlaceInPack", CItem_PlaceInPack, 0, 0 },
|
|
|
|
|
{ "Dupe", CItem_Dupe, 1, 0 },
|
|
|
|
|
{ "LockDown", CItem_LockDown, 0, 0 },
|
|
|
|
|
{ "Carve", CItem_Carve, 1, 0 },
|
|
|
|
|
{ "GetTileName", CItem_GetTileName, 0, 0 },
|
|
|
|
|
{ "GetMoreVar", CItem_GetMoreVar, 2, 0 },
|
|
|
|
|
{ "SetMoreVar", CItem_SetMoreVar, 3, 0 },
|
|
|
|
|
{ "Resist", CBase_Resist, 1, 0 },
|
|
|
|
|
{ "ResourceCount", CBase_ResourceCount, 2, 0 },
|
|
|
|
|
{ "UseResource", CBase_UseResource, 3, 0 },
|
|
|
|
|
{ "AddScriptTrigger", CBase_AddScriptTrigger, 1, 0 },
|
|
|
|
|
{ "HasScriptTrigger", CBase_HasScriptTrigger, 1, 0 },
|
|
|
|
|
{ "RemoveScriptTrigger",CBase_RemoveScriptTrigger, 1, 0 },
|
|
|
|
|
{ "GetMultiCorner", CMulti_GetMultiCorner, 1, 0 },
|
|
|
|
|
{ "SecureContainer", CMulti_SecureContainer, 1, 0 },
|
|
|
|
|
{ "UnsecureContainer", CMulti_UnsecureContainer, 1, 0 },
|
|
|
|
|
{ "IsSecureContainer", CMulti_IsSecureContainer, 1, 0 },
|
|
|
|
|
{ "LockDownItem", CMulti_LockDownItem, 1, 0 },
|
|
|
|
|
{ "ReleaseItem", CMulti_ReleaseItem, 1, 0 },
|
|
|
|
|
{ "AddTrashCont", CMulti_AddTrashCont, 1, 0 },
|
|
|
|
|
{ "RemoveTrashCont", CMulti_RemoveTrashCont, 1, 0 },
|
2026-03-09 14:36:07 -05:00
|
|
|
{ "AddVendor", CMulti_AddVendor, 1, 0 },
|
|
|
|
|
{ "RemoveVendor", CMulti_RemoveVendor, 1, 0 },
|
2025-03-25 16:10:53 +10:00
|
|
|
|
|
|
|
|
{ "KillKeys", CMulti_KillKeys, 1, 0 },
|
|
|
|
|
|
|
|
|
|
{ "FirstChar", CMulti_FirstChar, 1, 0 },
|
|
|
|
|
{ "NextChar", CMulti_NextChar, 1, 0 },
|
|
|
|
|
{ "FinishedChars", CMulti_FinishedChars, 1, 0 },
|
|
|
|
|
|
2025-04-28 05:54:32 +10:00
|
|
|
{ "TurnBoat", CMulti_TurnBoat, 1, 0 },
|
2025-04-30 08:56:23 +10:00
|
|
|
{ "GetTiller", CMulti_GetTiller, 0, 0 },
|
Misc Fixes and Updates
Added support for MAXWEIGHTBONUS DFN tag for races, to allow increasing weight that can be carried by specific race, and a new GetWeightMax() code function to do the necessary calculations on demand
Updated [default race bonuses] UOX.INI section with the following new settings for the 3 default playable races (only used if nothing else specified in races.dfn):
HUMANMAXWEIGHTBONUS=0
ELFMAXWEIGHTBONUS=0
GARGOYLEMAXWEIGHTBONUS=0
Added support for ALLSKILLSG and ALLSKILLSL DFN tags for races, which allow defining skill bonus or loss across all skills for a given race
Added new Character JS Method for adding skill points without triggering skillchange JS Events:
.AddSkill( skillID, skillAmt, triggerEvents[true/false] )
Added new Boat JS Property to allow getting/setting movement types for Boats via scripts:
.moveType // See UOX3 JS Engine Docs > JS Object Properties > Multi Properties for a detailed list of all supported movement types
Added new Boat JS Method to allow turning boats via scripts:
.TurnBoat( turnDir ) // 0 = straight (no turning), 1 = turn left, 2 = turn right, 3 = flip around
Updated IterateOver/OnIterate JS Function/Event to support passing in optional socket parameter. New syntax:
IterateOver( objectType[, socket ]);
.OnIterate( sourceObject, targetObject, socket )
Updated Character/Item JS Method .Refresh() to support an optional socket argument, to specify which player to refresh the object for. New syntax:
.Refresh( [socket] )
Added support for new region setting that can define a region as disabled/enabled via DFN (tag) or script (JS property). Disabled regions will be ignored by UOX3:
DISABLED=0/1 // Region DFN tag
.isDisabled // Region JS Property
Fixed issue where JS tags and temporary JS tags would not be copied over when duplicating a character or item
Removed strength requirements from base shield definitions - stats like these are handled per era (dfndata/items/gear/armor/base_armor.dfn)
Fixed an issue where necromancer newbie armor would incorrectly inherit base versions of leather armor without stats (dfndata/items/gear/armor/leather_armor/leather.dfn)
Fixed an issue where players would not correctly leave combat after hiding (js/skill/hiding.js)
Fixed an issue with Healing skill where skill-checks for healing/veterinary would fail due to a misspelled variable (js/skill/healing.js)
Updated smart-turn furniture script to prevent players from being able to turn furnitures that are occupied by characters (js/server/misc/furniture_smartturn.js)
Updated Buff-bar script to only add buffs for client versions higher than 5.0.2, the client patch where this feature was added (js/server/network/0xDF_buffBar.js)
Updated Vendor BDO Dispenser script to add alternative reward-table for AoS era (js/npc/ai/vendor_bdo_dispenser.js)
Cleaned up some code (spaces to tabs, indentation, spacing)
2025-04-23 00:01:53 +08:00
|
|
|
|
Housing Revamp and more
Updated JS SysMessage function to accept up to 10 extra, optional arguments, which can be used with dictionary messages that require additional parameters like %s or %i
Added new type of house privilege in cMultiObj.cpp to keep track of friends of the multi - HOUSEPRIV_FRIEND - which is stored during worldsaves as one or more Friend=<player serial> tags in house.wsc
Added new type of house privilege in cMultiObj.cpp to keep track of guests of the multi - HOUSEPRIV_GUEST - which is stored during worldsaves as one or more Guest=<player serial> tags in house.wsc
When items are created for houses upon house placement, a reference to the multi's serial is now stored in the house sign's MORE property to allow easier tracking of which house a particular sign belongs to
Added tracking of new, persistent properties for houses via cMultiObj.cpp/h:
lockdowns, secure containers, vendors, guests, friends, owners, ban location, public status, number of visits, timestamps
Added a multitude of new methods in cMultiObj.cpp/h to assist in improving the functionality of houses
Added new tags for houses in house.dfn (default values applied if tag not specified):
MAXSECURECONTAINERS=4 - Max amount of secure containers allowed in a multi
MAXLOCKDOWNS=256 - Max amount of lockdowns allowed in a multi
MAXVENDORS=10 - Max amount of vendors allowed in a multi
MAXBANS=50 - Max amount of bans in a multi's ban list
MAXFRIENDS=50 - Max amount of friends in a multi's friend list
MAXGUESTS=50 - Max amount of guests in a multi's guest list
MAXOWNERS=8 - Max amount of owners and co-owners in a multi's owner list
MAXTRASHCONTAINERS=1 - Max amount of trash containers allowed in multi
SCRIPT=<scriptID> - Assign a JS script-ID directly to a multi
FRONTDOOR - indicates that a door is the front door of a house. Cannot be locked in public houses!
INTERIORDOOR - indicates that a door is an interior door of a house. Can be locked in public houses.
BANX - Location X offset for multi's ban location, if not used, will try to use SE corner of multi instead
BANY - Location Y offset for multi's ban location, if not used, will try to use SE corner of multi instead
Added JS Event:
onHouseCommand( tSock, multiObj, cmdID ) - For handling spoken house commands via JS scripts attached to multi.
Updated JS Events:
onEntrance() - can now trigger both for multi being entered and/or object entering
onLeaving() - can now trigger both for multi being left and/or object entering
onSpeech() - can now also trigger for items (in addition to chars) with event & script attached, if UOX.INI setting ITEMSDETECTSPEECH is enabled
Added JS Multi methods:
.IsBoat() - Returns whether the item (or multi) is a boat
.IsOwner( playerToCheck ) - Returns whether a player is the owner of a multi
.IsOnOwnerList( playerToCheck ) - Returns whether a player is on the (co-)owner list of a multi
.IsOnFriendList( playerToCheck ) - Returns whether a player is on the friend list of a multi
.IsOnGuestList( playerToCheck ) - Returns whether a player is on the guest list of a multi
.IsOnBanList( playerToCheck ) - Returns whether a player is on the ban list of a multi
.AddToFriendList( playertoAdd ) - Adds player to the friend list of a multi
.RemoveFromFriendList( playertoRemove ) - Removes player from the friend list of a multi
.AddToGuestList( playertoAdd ) - Adds player to the guest list of a multi
.RemoveFromGuestList( playertoRemove ) - Removes player from the guest list of a multi
.ClearOwnerList() - Clears all entries from a multi's (co-)owner list
.ClearFriendList() - Clears all entries from a multi's friend list
.ClearGuestList() - Clears all entries from a multi's guest list
.ClearBanList() - Clears all entries from a multi's ban list
.SecureContainer( itemToSecure ) - Secures a container in a multi
.UnsecureContainer( itemToUnsecure ) - Unsecures a container in a multi
.IsSecureContainer( itemToCheck ) - Checks if specified item is a secure container in a multi
.LockDownItem( itemToLockDown) - Locks down an item in a multi
.ReleaseItem( itemToRelease ) - Releases a locked down item in a multi
.KillKeys() - Deletes ALL keys associated with a multi
.AddTrashCont( itemToAdd ) - Add trash container to multi's list of trash containers
.RemoveTrashCont( itemToRemove ) - Remove trash container from multi's list of trash containers
Added JS Item (Multi only) properties:
.lockdowns - Get the number of lockdowns in a multi
.maxLockdowns - Get/Set the max number of lockdowns allowed in a multi
.secureContainers - Get the number of secure containers in a multi
.maxSecureContainers - Get/Set the max number of secure containers allowed in a multi
.trashContainers - Get the number of trash containers in a multi
.maxTrashContainers - Get/Set the max number of trash containers allowed in a multi
.friends - Get the number of friends in a multi's friend list
.maxFriends - Get/Set the max number of friends allowed in a multi's friend list
.guests - Get the number of guests in a multi's guest list
.maxGuests - Get/Set the max number of guests allowed in a multi's guest list
.owners - Get the number of owners in a multi's owner list
.maxOwners - Get/Set the max number of owners allowed in a multi's owner list
.bans - Get the number of banned players in a multi's ban list
.maxBans - Get/Set the max number of banned players allowed in a multi's ban list
.vendors - Get the number of player vendors in a multi
.maxVendors - Get the max number of player vendors allowed in a multi
.deed - Get the item sectionID for deed used to place multi
.isPublic - Get/Set the private/public state of a multi
.buildTimestamp - Get the timestamp for when the house was originally placed
.tradeTimestamp - Get the timestamp for when the house was last traded to another player
.banX - Get/Set the ban location X offset for the multi
.banY - Get/Set the ban location Y offset for the multi
Added JS Character properties:
.multi = Get/Set the multi object the character is in
.accountNum = Get the account number the character belongs to
.housesOwned = Get a count of houses owned by the character
.housesCoOwned = Get a count of houses co-owned by the character
Updated JS cBaseObject Methods .FirstItem(), .NextItem() and .FinishedItems() to also support iterating through items in multis
Updated JS multi Methods .FirstChar(), .NextChar() and .FinishedChars() to support an additional parameter to specify what kind of characters to loop through:
"default" or no parameter - all characters inside the multi
"owner" - players on multi's owner list
"friend" - players on multi's friend list
"guest" - players on multi's guest list
"banned" - players on multi's ban list
Added new INI tags to a new section of uox.ini called [houses]
DECAYTIMERINHOUSE=3600 // Decay timer in seconds for non-locked down items inside houses
PROTECTPRIVATEHOUSES=1 // Toggles whether private houses will automatically boot unauthorized visitors (1) or not (0)
TRACKHOUSESPERACCOUNT=1 // Toggles whether to track (and restrict) house ownership per account (1) or per character (0)
MAXHOUSESOWNABLE=1 // Specifies the max amount of houses a player can own per account/char, depending on how house ownership is tracked
MAXHOUSESCOOWNABLE=10 // Specifies the max amount of houses a player can co-own per character
CANOWNANDCOOWNHOUSES=1 // Toggles whether players can own and co-own houses at the same time
COOWNHOUSESONSAMEACCOUNT=1 // Toggles whether characters on same account as house owner will be treated as co-owners
Added new INI tags in [settings] section of uox.ini:
ITEMSDETECTSPEECH=0 // If enabled, server will search for nearby items with onSpeech JS event running whenever a character speaks. Disabled by default.
MAXPLAYERPACKITEMS=125 // Defines max item capacity for player (and NPC) backpacks. Defaults to 125.
Moved most of the existing house functionality to JS and expanded upon it to reach feature parity with houses in regular UO around Publish 15/16, with various extras thrown in for good measure and all functionality being customizable:
js/server/house/house.js (15000) - handles detection of house commands and characters entering/leaving houses
js/server/house/houseSign.js (15001) - contains and handles all house-related gumps/menus and what is shown when players interact with house sign
js/server/house/houseCommands.js (15002) - handles functionality of house commands and other functionality such as transfer of ownership, demolishing house, etc.
js/server/house/houseDeed.js (15003) - handles initial rules that allow/disallow placement of additional houses for players
All house-related menus now fully handled through JS
All house commands and other functionality now fully handled through JS
Removed redundant hard-coded house functionality
Implemented Co-owners, friends, guests for houses, with access rules in place for entry, lockdowns, house commands, etc.
Implemented Private and Public houses
Implemented Secure Containers and Trash Barrels
Definable max lockdowns, secure containers, player vendors, bans, friends, guests, owners, trash containers and more - per house type
JS scripts can now be attached directly to houses
Doors in houses can be marked as front doors or interior doors, and will be treated differently with regards to private and public houses
Added new item to dfndata/items/containers/misc.dfn - [trashbarrel]
Added new JS script (js/items/trashbarrel.js) with trash barrel functionality for houses. Trash barrels that are marked as secure containers are only accessible by owners, co-owners and friends of the house. Various options available at top of script.
Updated js/items/axe.js to support chopping up trash barrels and house add-ons in houses owned by the player
Fixed an issue with house doors being left behind after demolishing houses while their doors were open
Fixed an issue where GMs could be banned from player houses
Added Line of Sight checks to speech, to give players some privacy in their own homes
Updated house placement code to more accurately check for other multis, dynamic and static objects when placing houses; now requires free space around each house that cannot be blocked by other houses or items that can block player movement, and disallows placement of houses on roads
Updated house placement code to move characters blocking house placement to SE corner of the house
Updated house placement code to disallow placing houses in guarded regions, or in dungeons
Added new DFN tag for regions to enable/disable player houses in specific regions: HOUSING=0/1
Added new region (247) that covers path to Valley of Eodon in Felucca
Added new region (248) that covers Valley of Eodon in Ter-Mur, with player housing disabled
Added new region (249) that covers entire T2A lands, with player housing disabled
Updated SPACEX and SPACEY values for all houses in dfndata/house/house.dfn to match updated house placement code
Added new JS property to Regions that can be used to determine or change state of player housing in a region: .canPlaceHouse()
Updated rules for usage of dye tubs to dye locked down items; now only house owners or co-owners may dye locked down items
Updated rules for usage of the following locked down items in a house, which are now only usable by house owners and co-owners
Dyes, Guildstone Deeds, Recall Runes (renaming), Rename Deeds, Townstone Deeds, House Deeds, Boat Models, Player Vendor Deeds, Ore, Hair Dye
Updated rules for usage of the following locked down items in a house, which are now only usable by house owners, co-owners and friends:
Keys, Dye Tubs, Magic Scrolls, Fireworks Wands, Magic Wands, Smithing Tools, Mining Tools, Fishing Poles
Updated item lockdown rules to allow locking down (and releasing) items in a container as long as the container is locked down, and to only allow releasing a locked down container if it's empty of locked down items
Updated item lockdown rules to only allow locking down movement-blocking items further than 2 tiles away from doors
Updated rules for releasing items in houses - now the house owner can release any locked down items, co-owners can release items locked down by themselves or by friends, while friends can release only items locked down by themselves
Added some feedback to player about why their attempted house placement failed
Items added by GMs directly into multis will now decay based on the house-specific decay timer instead of the regular one
Fixed an issue that could cause items to almost instantly decay after being released from lockdown in a house
Placing house add-ons now properly takes into account SPACEX and SPACEY values when checking if they can fit in selected area of houses
Re-added SPACEX and SPACEY values for Pentagram and Loom house add-ons
House add-ons can now be converted back into house add-on deeds by chopping them with an axe
Added new item type - IT_HOUSEADDON (201) - used by house add-ons placed in player houses
Fixed a bug where keys would stop working after being added to a keyring, and would turn into blank keys upon release from the keyring
Added visitor count for public player houses, which keeps track of how many visits a public house has received, with each player counted max 1 time every 24 hours
Fixed an issue with FindPlayersInOldVisrange() where it didn't take into account that players could see buildings further away than the standard update range. This could cause players to see ghost images of buildings if they were at the "right" distance when the building was being demolished
Added NODECAY tag to all signs and doors in dfndata/house/house.dfn
Added FRONTDOOR or INTERIORDOOR (as appropriate) to all doors in dfndata/house/house.dfn
Added BANX and BANY to specify ban location for some houses in dfndata/house/house.dfn instead of relying on finding SE corner automatically
Implemented strongboxes (js/server/house/strongbox.js) for co-owners of a house, which can be placed with the house command "i wish to place a strongbox". Max capacity is 25 items
Updated 'REMOVE command to take an optional parameter - itemID. If supplied, the command will remove all items with this itemID from a targeted container
Fixed a bug when checking if dynamic items were blocking valid spawn locations for NPCs, some function arguments were in the wrong order!
Improved code that finds valid spawn locations for items and NPCs spawned via spawn regions. As server gradually builds up lists of valid spawn locations per region over time, it will start using these lists more often, rather than always look for brand new spawn locations.
Fixed a bug with CMulHandler::CheckStaticFlag() that prevented NPCs from spawning inside buildings with no static floors!
Fixed an issue with repeating commands that prevented GMs from being able to cancel them when using the ClassicUO client
Exposed character property .accountNum to JS engine
Extended CDataList class to include a Clear() method for clearing lists
Updated JS File method .Open() to support an optional, third argument - subFolderName - that defines in which sub-folder of UOX3/shared/ to store/look for a file. If no third argument is supplied, UOX3 will default to using the shared folder itself.
Updated JS File method .Length() to return a value of -1 for files that don't exist
Added new code function, exposed to JS engine with same parameters, which simply checks if a given tile ID has a specific flag
bool CheckTileFlag( UI16 itemID, TILEFLAG flagToCheck )
Added JS function used to find the root container of an item (if any)
FindRootContainer( itemSerial )
FindRootContainer( item )
Added new JS function that allows deleting files from UOX3/shared/ folder or subfolders of shared folder. If no subFolderName is provided, looks for file directly in shared folder itself. Restrictions on file- and folder-names apply.
bool DeleteFile( fileName, subFolderName )
Added new JS functions for checking if a specific client or server feature is enabled. See documentation for full list of client/server features.
GetClientFeature( bitNum ) // Returns true if specified client feature is enabled on server
GetServerFeature( bitNum ) // Returns true if specified server feature is enabled on server
Added new JS function for returning the value of almost any server setting from UOX.INI
GetServerSetting( settingNameInDoubleQuotes )
Updated JS function DoesDynamicBlock() with two new parameters - checkOnlyMultis and checkOnlyNonMultis
Updated JS function DoesMapBlock() with two new parameters - checkMultiPlacement and checkForRoad
Fixed an issue where a LoS check would prevent players from accessing containers in their own backpack
Added new functions in findfuncs.cpp to make it easier to find items near another object or location:
findNearbyItems( object, distance )
findNearbyItems( x, y, worldNumber, instanceID, distance )
Added new Item property - maxItems - used by containers to determine their max item capacity
Added new Item property - totalItemCount - used to get total item count in a container (including sub-containers)
Added check for max item capacity when creating new items that are added to a character's backpack - items will be created below character's feet if backpack is full!
Added new DFN tag for items, used by containers to determine item capacity for a given container:
MAXITEMS=# // 125 is the default for all containers if not set
Added new JS Item properties:
.maxItems // gets/sets item capacity for a given container
.totalItemCount // gets total item count in a container, including sub-containers
Updated item tooltips for containers to show accurate total item count, as well as to display max item capacity
Fixed a bug where picking up items from a non-locked down pile of items on the floor inside a multi could cause the remaining pile to be seen as no longer inside the multi, disallowing locking it back down and causing it to decay based on regular decay timer instead of house-specific one
Updated JS command set to allow setting poison-level on items ('set poison #) and hunger-level on characters ('set hunger #)
Fixed an issue with js/item/food.js that prevented poisoned food from poisoning characters when eaten
Fixed an issue with js/skill/poisoning.js that prevented players from poisoning food!
Updated various JS scripts and hardcoded targeting functions to disallow the targeting of locked down resources using skills and tools
Updated JS Method TextMessage() to support three extra, optional parameters. Note that if one optional parameter is included, all preceding optional parameters are also required!
speechTarget - What kind of target is this message intended for?
0 - Only visible for sender and receiver of message
1 - Visible to all players in range
2 - Visible to all NPCs and players in range
3 - Visible to all PCs everywhere + NPCs in range
4 - Visible to all PCs everywhere (broadcast)
5 - Only visible for the receiver of the message
speechTargetSerial - The serial of the receiver of the message, used if speechTarget is 0 or 5
speechFontType - The type of font to display the text in. Defaults to normal.
0 - Bold
1 - Normal with shadow
2 - Bold with shadow
3 - Normal
4 - Gothic
5 - Italic
6 - Small, dark
7 - Colourful
8 - Runic (only works with CAPS)
9 - Small, light
Added timestamp to worldsaves in console, to make it easier to see when a particular world-save was done
Added info about compiler/environment displayed at the top of the UOX3 console during startup
Updated dictionary files with new messages primarily related to housing
2020-11-04 02:00:37 +08:00
|
|
|
//{ "SetMoreSerial", CBase_SetMoreSerial, 1, 0, 0 },
|
2025-03-25 16:10:53 +10:00
|
|
|
//{ "SetMoreSerial", CBase_SetMoreSerial, 1, 0 },
|
|
|
|
|
{ "SetRandomName", CBase_SetRandomName, 1, 0 },
|
|
|
|
|
{ "SetRandomColor", CBase_SetRandomColor, 1, 0 },
|
|
|
|
|
{ "GetTempEffect", CBase_GetTempEffect, 1, 0 },
|
2025-05-13 06:58:53 +10:00
|
|
|
{ "ReverseTempEffect", CBase_ReverseTempEffect, 1, 0 },
|
|
|
|
|
{ "PauseTempEffect", CBase_PauseTempEffect, 1, 0 },
|
|
|
|
|
{ "ResumeTempEffect", CBase_ResumeTempEffect, 1, 0 },
|
|
|
|
|
{ "PauseJSTimer", CBase_PauseJSTimer, 1, 0 },
|
|
|
|
|
{ "ResumeJSTimer", CBase_ResumeJSTimer, 1, 0 },
|
2025-03-25 16:10:53 +10:00
|
|
|
{ nullptr, nullptr, 0, 0 }
|
2002-04-07 20:53:41 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 00:52:37 -04:00
|
|
|
inline JSFunctionSpec CRegion_Methods[] =
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "AddScriptTrigger", CRegion_AddScriptTrigger, 1, 0 },
|
|
|
|
|
{ "RemoveScriptTrigger", CRegion_RemoveScriptTrigger, 1, 0 },
|
|
|
|
|
{ "GetOrePref", CRegion_GetOrePref, 1, 0 },
|
|
|
|
|
{ "GetOreChance", CRegion_GetOreChance, 0, 0 },
|
|
|
|
|
JS_FS_END
|
2002-04-07 20:53:41 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 00:52:37 -04:00
|
|
|
inline JSFunctionSpec CSocket_Methods[] =
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "SysMessage", CMisc_SysMessage, 10, 0 },
|
|
|
|
|
{ "Disconnect", CSocket_Disconnect, 0, 0 },
|
|
|
|
|
{ "SoundEffect", CMisc_SoundEffect, 2, 0 },
|
|
|
|
|
{ "CustomTarget", CMisc_CustomTarget, 1, 0 },
|
|
|
|
|
{ "PopUpTarget", CMisc_PopUpTarget, 1, 0 },
|
|
|
|
|
{ "GetByte", CSocket_GetByte, 1, 0 },
|
|
|
|
|
{ "GetWord", CSocket_GetWord, 1, 0 },
|
|
|
|
|
{ "GetDWord", CSocket_GetDWord, 1, 0 },
|
|
|
|
|
{ "GetSByte", CSocket_GetSByte, 1, 0 },
|
|
|
|
|
{ "GetSWord", CSocket_GetSWord, 1, 0 },
|
|
|
|
|
{ "GetSDWord", CSocket_GetSDWord, 1, 0 },
|
|
|
|
|
{ "GetString", CSocket_GetString, 1, 0 },
|
|
|
|
|
{ "SetByte", CSocket_SetByte, 2, 0 },
|
|
|
|
|
{ "SetWord", CSocket_SetWord, 2, 0 },
|
|
|
|
|
{ "SetDWord", CSocket_SetDWord, 2, 0 },
|
|
|
|
|
{ "SetString", CSocket_SetString, 2, 0 },
|
|
|
|
|
{ "ReadBytes", CSocket_ReadBytes, 1, 0 },
|
|
|
|
|
{ "OpenContainer", CSocket_OpenContainer, 1, 0 },
|
|
|
|
|
{ "OpenGump", CSocket_OpenGump, 1, 0 },
|
|
|
|
|
{ "CloseGump", CSocket_CloseGump, 2, 0 },
|
|
|
|
|
{ "OpenURL", CSocket_OpenURL, 1, 0 },
|
|
|
|
|
{ "BuyFrom", CMisc_BuyFrom, 1, 0 },
|
|
|
|
|
{ "SellTo", CMisc_SellTo, 1, 0 },
|
|
|
|
|
{ "WhoList", CSocket_WhoList, 0, 0 },
|
|
|
|
|
{ "Music", CSocket_Music, 1, 0 },
|
|
|
|
|
{ "GetTimer", CMisc_GetTimer, 1, 0 },
|
|
|
|
|
{ "SetTimer", CMisc_SetTimer, 2, 0 },
|
|
|
|
|
{ "SendAddMenu", CSocket_SendAddMenu,1, 0 },
|
|
|
|
|
{ "Page", CSocket_Page, 1, 0 },
|
|
|
|
|
{ "MakeMenu", CMisc_MakeMenu, 2, 0 },
|
|
|
|
|
{ "Send", CSocket_Send, 1, 0 },
|
|
|
|
|
{ "CanSee", CBase_CanSee, 1, 0 },
|
|
|
|
|
{ "DisplayDamage", CSocket_DisplayDamage, 2, 0 },
|
|
|
|
|
{ "FirstTriggerWord", CSocket_FirstTriggerWord, 0, 0 },
|
|
|
|
|
{ "NextTriggerWord", CSocket_NextTriggerWord, 0, 0 },
|
|
|
|
|
{ "FinishedTriggerWords", CSocket_FinishedTriggerWords, 0, 0 },
|
|
|
|
|
{ nullptr, nullptr, 0, 0 }
|
2002-04-07 20:53:41 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 00:52:37 -04:00
|
|
|
inline JSFunctionSpec CGuild_Methods[] =
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "AcceptRecruit", CGuild_AcceptRecruit, 1, 0 },
|
|
|
|
|
{ "IsAtPeace", CGuild_IsAtPeace, 0, 0 },
|
2025-08-05 04:05:43 +08:00
|
|
|
{ "AddMember", CGuild_AddMember, 1, 0 },
|
|
|
|
|
{ "AddRecruit", CGuild_AddRecruit, 1, 0 },
|
2025-04-13 18:27:00 -05:00
|
|
|
{ "RemoveRecruit", CGuild_RemoveRecruit, 1, 0 },
|
|
|
|
|
{ "RemoveMember", CGuild_RemoveMember, 1, 0 },
|
|
|
|
|
{ "RecruitToMember", CGuild_RecruitToMember, 1, 0 },
|
2025-08-05 04:05:43 +08:00
|
|
|
{ "IsAtWar", CGuild_IsAtWar, 1, 0 },
|
|
|
|
|
{ "IsAlly", CGuild_IsAlly, 1, 0 },
|
|
|
|
|
{ "IsNeutral", CGuild_IsNeutral, 1, 0 },
|
2025-03-25 16:10:53 +10:00
|
|
|
JS_FS_END
|
2002-04-07 20:53:41 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 00:52:37 -04:00
|
|
|
inline JSFunctionSpec CRace_Methods[] =
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "CanWearArmour", CRace_CanWearArmour, 1, 0 },
|
2025-11-05 20:32:45 -06:00
|
|
|
{ "CanEquip", CRace_CanEquip, 1, 0 },
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "IsValidHairColour", CRace_IsValidHairColour, 1, 0 },
|
|
|
|
|
{ "IsValidSkinColour", CRace_IsValidSkinColour, 1, 0 },
|
|
|
|
|
{ "IsValidBeardColour", CRace_IsValidBeardColour, 1, 0 },
|
|
|
|
|
JS_FS_END
|
2002-04-07 20:53:41 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 17:12:13 -04:00
|
|
|
inline JSFunctionSpec CGumpData_Methods[] =
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "Free", CGumpData_Free, 0, 0 },
|
|
|
|
|
{ "getButton", CGumpData_GetButton, 1, 0 },
|
|
|
|
|
{ "getID", CGumpData_GetId, 1, 0 },
|
|
|
|
|
{ "getEdit", CGumpData_GetEdit, 1, 0 },
|
|
|
|
|
JS_FS_END
|
2012-11-03 18:11:04 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 17:12:13 -04:00
|
|
|
inline JSFunctionSpec CFile_Methods[] =
|
2012-11-03 18:11:04 +00:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "Free", CFile_Free, 0, 0 },
|
|
|
|
|
{ "Open", CFile_Open, 2, 0 },
|
|
|
|
|
{ "Close", CFile_Close, 0, 0 },
|
|
|
|
|
{ "Write", CFile_Write, 1, 0 },
|
|
|
|
|
{ "Read", CFile_Read, 1, 0 },
|
|
|
|
|
{ "ReadUntil", CFile_ReadUntil, 1, 0 },
|
|
|
|
|
{ "EOF", CFile_EOF, 0, 0 },
|
|
|
|
|
{ "Length", CFile_Length, 0, 0 },
|
|
|
|
|
{ "Pos", CFile_Pos, 1, 0 },
|
|
|
|
|
JS_FS_END
|
2012-11-03 18:11:04 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 00:52:37 -04:00
|
|
|
inline JSFunctionSpec CAccount_Methods[] =
|
2012-11-03 18:11:04 +00:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "AddAccount", CAccount_AddAccount, 4, 0 },
|
|
|
|
|
{ "DelAccount", CAccount_DelAccount, 1, 0 },
|
|
|
|
|
JS_FS_END
|
2012-11-03 18:11:04 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 00:52:37 -04:00
|
|
|
inline JSFunctionSpec CConsole_Methods[] =
|
2012-11-03 18:11:04 +00:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "Print", CConsole_Print, 1, 0 },
|
|
|
|
|
{ "Log", CConsole_Log, 1, 0 },
|
|
|
|
|
{ "Error", CConsole_Error, 1, 0 },
|
|
|
|
|
{ "Warning", CConsole_Warning, 1, 0 },
|
|
|
|
|
{ "PrintSectionBegin", CConsole_PrintSectionBegin, 0, 0 },
|
|
|
|
|
{ "TurnYellow", CConsole_TurnYellow, 0, 0 },
|
|
|
|
|
{ "TurnRed", CConsole_TurnRed, 0, 0 },
|
|
|
|
|
{ "TurnGreen", CConsole_TurnGreen, 0, 0 },
|
|
|
|
|
{ "TurnBlue", CConsole_TurnBlue, 0, 0 },
|
|
|
|
|
{ "TurnNormal", CConsole_TurnNormal, 0, 0 },
|
|
|
|
|
{ "TurnBrightWhite", CConsole_TurnBrightWhite, 0, 0 },
|
|
|
|
|
{ "PrintDone", CConsole_PrintDone, 0, 0 },
|
|
|
|
|
{ "PrintFailed", CConsole_PrintFailed, 0, 0 },
|
|
|
|
|
{ "PrintPassed", CConsole_PrintPassed, 0, 0 },
|
|
|
|
|
{ "ClearScreen", CConsole_ClearScreen, 0, 0 },
|
|
|
|
|
{ "PrintBasedOnVal", CConsole_PrintBasedOnVal, 1, 0 },
|
|
|
|
|
{ "MoveTo", CConsole_MoveTo, 2, 0 },
|
|
|
|
|
{ "PrintSpecial", CConsole_PrintSpecial, 2, 0 },
|
2025-10-24 16:13:17 +08:00
|
|
|
{ "BeginRestart", CConsole_BeginRestart, 0, 0 },
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "BeginShutdown", CConsole_BeginShutdown, 0, 0 },
|
|
|
|
|
{ "Reload", CConsole_Reload, 1, 0 },
|
|
|
|
|
JS_FS_END
|
2012-11-03 18:11:04 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 17:12:13 -04:00
|
|
|
inline JSFunctionSpec CPacket_Methods[] =
|
2012-11-03 18:11:04 +00:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "Free", CPacket_Free, 0, 0 },
|
|
|
|
|
{ "WriteByte", CPacket_WriteByte, 2, 0 },
|
|
|
|
|
{ "WriteShort", CPacket_WriteShort, 2, 0 },
|
|
|
|
|
{ "WriteLong", CPacket_WriteLong, 2, 0 },
|
|
|
|
|
{ "WriteString", CPacket_WriteString, 3, 0 },
|
|
|
|
|
{ "ReserveSize", CPacket_ReserveSize, 1, 0 },
|
|
|
|
|
JS_FS_END
|
2012-11-03 18:11:04 +00:00
|
|
|
};
|
|
|
|
|
|
2022-11-04 00:52:37 -04:00
|
|
|
inline JSFunctionSpec CParty_Methods[] =
|
Numerous changes with focus on feature and stability parity across Windows, Linux and MacOS platforms
Added new Makefile that handles compiling UOX3 and Spidermonkey on both Linux and MacOS (punt)
Added VS solution (SpiderMonkey.sln) and VC++ project files for compiling SpiderMonkey on Windows (Xuri)
Updated SpiderMonkey from v1.6.0 to v1.7.0
Added optimization flag -O2 for release build in CMakeLists.txt in project root (Xuri)
Added StringUtility file with general common string manipulation functions (punt)
Updated RandomNum function to use a "seedless" random number generator from C++11 instead of the old C rand() function. (punt)
Overall code cleanup to remove/replace platform-dependent code (punt)
Replaced potentially unsafe usage of C string stuff like sprintf, vsprintf, vsnprintf, strncat, strcpy and strlen throughout the code with calls to a format() function containing only a single, safe use of vsnprintf, ensuring there's a single place of failure if there's anything to fix and and making it easy to potentially replace this with std::format from C++20 when the time comes. (punt)
Replaced usage of char in many places with std::string (punt)
Started process of replacing UString usage with functions provided through StringUtility instead (punt)
Replaced platform specific fileIO handling in Windows/Linux with cross-platform C++17 standard std::filesystem (punt)
Replaced platform specific time handling by using cross-platform chrono library (punt)
Removed UOX namespace to reduce complexity (punt)
Elimitated template code approach to singletons for more modern c++ constructs, removing dependices in the process (punt)
Removed ODBC support; it hasn't been touched since the initial implementation in 2008, and there is a lack of someone to maintain the code. (punt)
Removed some platform specific files like uoxlinux.h, which is no longer required (punt)
Removed legacy crash protection code, and removed support for cluox (punt)
Removed legacy "support" for Borland compiler (punt)
Removed legacy VC++ 6 Workspace/Project files, VS2005 Solution/Project files, as these are no longer supported (Xuri)
Removed legacy BUILD folder with outdated compilation instructions (Xuri)
Removed old Changelog file (merged into Changelog.txt) (Xuri)
Fixed a pointer bug for items in multis on world load (punt)
Fixed a dictionary related issue that caused segmentation faults on Linux/MacOS (punt)
Fixed an issue with callbacks to JS scripts that caused segmentation faults on Linux/MacOS (punt)
Paths in uox.ini should now load properly on all platforms regardless of whether those paths use slashes or backslashes, and whether or not they end in a slash/backslash. (punt)
Moved to c++17 style of threading, and got rid of threadsafeobject.cpp/h (punt)
Replaced parsing of UOX.INI tags with a system that's more easily maintainable (punt)
Added some new commands to js/commands/custom/misc-cmd.js (Xuri)
cont // Targeted item will be made a container, set to nondecay and movable 2
endfight // Targeted character (and character being fought) will stop fighting
getmulti // Get multiObject for targeted item
finditem // Find item at layer X
movespeed // Set movement speed of target player (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen)
Added new HTML based documentation in docs folder, and removed many old legacy docs that are either incorporated into this document already or no longer relevant for the current UOX3 version (Xuri)
Co-Authored-By: Charles Kerr <punt1959@users.noreply.github.com>
2020-09-07 18:09:55 +08:00
|
|
|
{
|
2025-03-25 16:10:53 +10:00
|
|
|
{ "GetMember", CParty_GetMember, 1, 0 },
|
|
|
|
|
{ "Add", CParty_Add, 1, 0 },
|
|
|
|
|
{ "Remove", CParty_Remove, 1, 0 },
|
|
|
|
|
JS_FS_END
|
2012-11-03 18:11:04 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|