Code: Select all
06-05 Shinigami
Added : little bit more logging why Clients get disconnected on Logon by Core
06-01 MuadDib
Hint : The pol.cfg setting "LogLevel" can be used to debug issues at startup of
POL and various other places (unloadall for example). By setting this
higher than 1, up to 11 (just sounds good), it will force printing of
better information to help you find out problems during Loading and such.
Setting it for example, above 0, core will start spitting out "Checkpoint"
data during startup to say what it is about to load/process. Such as the
configuration, load realms, load multis, etc etc.
05-31 MuadDib
Fixed : Issue resolved with standard spellbook and no AOS+ Expansion enabled.
Hint : Recognized scroll objects now are: Magic: 0x1F2D - 0x1F6C, Necro
0x2260 - 0x226F, Paladin: 0x2270 - 0x227C, Bushido: 0x238D - 0x2392,
Ninjitsu: 0x23A1 - 0x23A8, SpellWeaving: 0x2D51 - 0x2D60.
Remember, this IS hardcoded! >:)
For Bushido and Ninjitsu, there was never any scrolls made. So your
items for those are the Icons for the moves. Try setting their graphic
to a scroll and using it ;)
05-30 Shinigami
Hint : UOConvert will convert Mondain's Legacy extended Britannia Map.
Just set width to 7168 (e.g.):
uoconvert map realm=britannia mapid=0 usedif=0 width=7168 height=4096
uoconvert statics realm=britannia
uoconvert maptile realm=britannia
Updated : uoconvert.txt (some comments and Mondain's Legacy hint)
Fixed : Bug with detection of Gump-Cancel in uo::SendCharacterRaceChanger()
Fixed : ShowRoofAndPlatformWarning has shown everything
Fixed : smaller mistype in Log created via TextCMD .startlog/stoplog
Fixed : set correct Time stamp in TextCMD .startlog/stoplog
05-30 MuadDib
Added : Guild and Quest buttons added to the "known" list of subcommands in core.
Should fix some crashes when recieving these. Especially when using hooks
on packet 0xD7 (their parent packet ID).
05-29 MuadDib
Added : Added "SpellType" entries for "Bushido", "Ninjitsu", & "SpellWeaving" for
spellbook types in itemdesc.cfg. The list of spellids for
spells.cfg is now as follows: Magery = 1+, Necro = 101+,
Paladin = 201+, Bushido = 401+, Ninjitsu = 501+, SpellWeaving = 601+.
Hopefully this more completes our addition of the other
expansions for 096 where we lack in other areas.
05-27 MuadDib
Update : Just FYI, as previously reported, SingleCombat does NOT use servspecopt.cfg
but rather combat.cfg. Sorry about the typo when it was introduced.
05-26 MuadDib
Fixed : Crash on checking targetted players when target is not logged in.
Fixed : ItemColorMask is now read properly during itemdesc load and during
POL startup.
05-26 Shinigami
Fixed : Crash on call of scripts/misc/dblclickother if another script is running.
Fixed : removed an additional check for UOConvert's option ShowRoofAndPlatformWarning
05-24 Shinigami
Added : uo::SendCharacterRaceChanger( character ) - to change Hair, Beard and Color
05-23 Shinigami
Fixed : Crash inside Packet Hooks with SubCommands and without default Handler.
05-20 MuadDib
Removed : Requiring, and support, for armrdesc.cfg. Armor within this file is to be
moved to the itemdesc.cfg as intended. File has been obsolete for a while
now.
05-19 MuadDib :
Removed : Requirement for wepndesc.cfg in the /config folder. Any shards still
using this obsolete file can use the itemdesc.cfg files for the weapons as
intended. Core will no longer require this file to load either.
05-16 Shinigami
Updated : Account.set_uo_expansion(string): recognized values: ML, SE, AOS, LBR, T2A (default), "".
This determines what flag is sent with packet 0xB9 during login (Nothing -> 0x0000 /
T2A -> 0x0001 / LBR -> 0x0002 / AOS -> 0x801b / SE -> 0x805b / ML -> 0x80db).
It's possible to hook 0xB9 but don't forget to set_uo_expansion anyway because core
uses this for internal flags (e.g. AoS Tooltips). Packet 0xB9 will be sent earlier
(before you choose a character) and after you've used set_uo_expansion.
Updated : servspecopt.cfg property: UOFeatureEnable, used in the last dword of the 0xA9 login packet,
will block Bit 6 (support up to 6 Chars). To enable AoS stuff set Bit 5 (use 0x20),
to enable SE stuff set Bit 7 & 5 (use 0xa0) and to enable ML stuff set Bit 8, 7 & 5 (use 0x1a0).
Added : mobile.race [r/w] - set/get the ML race (new constants in UO.EM: RACE_HUMAN, RACE_ELF)
You have to set visual graphic by yourself if you change value.
(Human male/female = 0x190/0x191 / Elf male/female = 0x25d/0x25e)
You can choose Race at Char creation if your UOExpansion and UOFeature settings fit.
WARNING: Don't forget to update your server side config/tiles.cfg using
UOConvert and Mondain's Legacy tiledata.mul! (Hint: "uoconvert tiles")
Race Prop is available inside Interactive Debugger too.
05-13 MuadDib
Added : Targeting will now also check the NoCombat zone for targeted players also,
and not just who is doing the targeting.
05-10 MuadDib
Fixed : Targeting should now check to make sure a mobile is visible to the targeter
before processing. This checks hidden and concealment both.
05-10 Shinigami
Fixed : small bug inside uo::ListMobilesNearLocationEx()
05-07 Shinigami
Added : flag VENDOR_SEND_AOS_TOOLTIP in
uo::SendBuyWindow( character, container, vendor, items, flags := 0 )
uo::SendSellWindow( character, vendor, i1, i2, i3, flags := 0 )
to send Item Description using AoS Tooltips in any case (this will correct problems
with Item Descriptions in newer Clients, but maybe freeze ancient Clients...).
05-04 Austin
Added : LISTEX_FLAG_CONCEALED support for ListMobilesNearLocationEX()
04-11 MuadDib
Change: Starting Gold will no longer be newbied (blessed). Can still be set newbied if you choose in
the create scripts for new characters.
04-09 Shinigami
Added : uoconvert.cfg element option added, TileOptions, in the following form:
TileOptions
{
ShowRoofAndPlatformWarning 1
}
it's a flag and defaults to 1 (shows a Warning if you use both Flags in same Tile).
04-05 MuadDib
Changed: Added combat.cfg flag SingleCombat. This is a 0/1 flag for allowing players to attack
themselves. 0 will disable it (default). Per request.
Fixed: Crash involving invalid serial data sent with Target Cursor from client.
Fixed: Bug blocking non-harmful targeting of Players in NoCombat zones.
Fixed: Optimized NoCombat Target check.
03-19 MuadDib
Fixed: Will now correctly send AOS Tooltips if features are combined with 0x20 in the
UOFeatureEnable setting in servspecopt.cfg file.
03-18 MuadDib
Added: Servspecopt.cfg entry StartingGold=#. This will default to 100 gold. However, it can be
used to override the core's initial starting gold amount to this setting. Enjoy.
03-15 MuadDib
Fixed: Attack Request will be automatically denied if Defender.serial == Attacker.serial.
Changed: Packet Logs (using .startlog and .stoplog) format has changed. It has been updated
for easier reading and to match Packet Loggers format more (Such as UOLog and
Spy UO).
03-07 MuadDib
Added: New Justice/Region config entry for Regions. NoCombat is a 0/1 Flag to set
a region to be a No Combat region. No Combat regions will not allow the
Clicking of a mobile to select as a new opponent if they are in this region.
It will also reset opponent data for mob if one enters this region. This is
a PvP specific addon. It does NOT check for npcs, this will have to be done
via packethooks.
When Entering a NoCombat region, while already in combat, if YOU are the
attacker, it will reset your fight. If you are the one being attacked, it
will reset the fight with the first "opponent" you have listed.
03-06 MuadDib
Changed: Regen after being damaged delay was changed from 10 seconds to 2 seconds.
Changed: Regen delay after changing warmode was changed from 5 seconds to 2 seconds.
03-03 MuadDib
Changed: Optimized handling of mobile.connected in core.
03-02 MuadDib
Fixed: Handling of 0x22 Move Resync with "Player Noto" handling to send
correct information.
03-01 MuadDib
Changed: Handling of item's decayat property when moved.
Fixed: Stack checking for decayat handling when moving items.
Fixed: Newly created characters will now have the connected member set
correctly.
01-18 Shinigami
Changed : Prop script_process.attached_to will return NPC if it's his AI-Script.
(script_process comes from NPC.process or uo::GetProcess(pid))
01-09 MuadDib
Changed: Added check for No Decay timer on items when resetting decay time.
Fixed: AOS Tooltips will now correctly show the Reputation of mobiles. In order
to see Invul correctly, InvulTag MUST be set to 2 due to the Reputation
color being handled fully client-side (No way around this).
12-10 MuadDib
Changed: Various changes involving item dropping and creation and setting of
decayat properties to help with instant decay.
Fixed: Secure Trade Window now correctly updates client when items added. As a
side effect, also fixes a small problem involving adding items to normal
containers also when using tooltips.
Note: For now, since Tooltips is an AOS feature, do NOT leave tooltips disabled
and use UOExpansion set to AOS or this WILL cause client problems. The client
was never designed for this to happen, and I do plan on putting in failsafes
in the core to keep these problems from happening. Bear with me on this please.
12-09 MuadDib
Changed: Repsys coloring for Invulnerable names will only occur when InvulTag is
set to 2. Will follow OSI standards more, and allow more flexibility to
shard admins per request.
Fixed: ItemGiven Event will now return items if the script handler does nothing
with the item.
Fixed: Items will now move correctly across realms or to same realm again with
MoveObjectToLocation().
Fixed: Crash bug when deleting items after using MoveObjectToRealm().
Added: New read-only member .uclang for players. Reports the Unicode Language string
client sends during logon. Usefull for Unicode support based on language of
individual clients/characters.
12-06 Shinigami
Fixed : z<0 bug inside uo::MoveCharacterToLocation() and uo::MoveObjectToLocation()
12-05 MuadDib
Added : Decay timer reset when Item is picked up/dragged by client (only on success).
Should *help* with instant decay problems when dropping items
Added : InvulTag=0/1/2 in ServSpecOpt.cfg. 0 Disables invul tags totally. 1 (default)
keeps them as they are now, giving [Invul] tag when single clicked. 2 will
work only on 3.x+ clients, and makes the mob's highlight color Yellow with
no [Invul] tag when single clicked. Only recommend using 2 if your shard
requires a 3.x or higher client!
Added : Invulnerable entry in RepSys.cfg for coloring name of invuls.
11-29 MuadDib
Added : Packet 0x9 will no longer cause POL to treat client as active.
Fixed : Change to Secure trade window handling. Be sure to test thouroughly with all
versions of clients and report back to pol-core-test with results. Hoping this
helps with client issues reported.
11-29 Shinigami
Fixed : uo::SplitWords() will now accept each type of to-split-value as same as in the past
11-26 MuadDib
Fixed : Fixed Attack Denied method for client expectations.
Fixed : Logon issues involving map visibility on >2 mapid.
Fixed : Issues with weather and seasons on logon.
11-26 Austin
Added : Support for bit shifting integers using << and >>
11-26 Shinigami
Fixed : Compiler will work case insensitive now.
Added : New Mounts to uoconvert.cfg
Added : uoconvert.cfg to Linux Files
Fixed : illegal Attack Requests (Packet 0x05) will not crash Pol
11-25 Shinigami
Changed : Packet 0xBF Subcommand 0x24 will no longer cause POL to treat client as active.
11-25 MuadDib
Fixed : AttackRequest now checks for distance < 20, realm, hidden, concealed higher, and dead characters.
Fixed : Visibility checks now check for same realm.
Added : Packet 0xBF Subcommand 0x24 no longer reports in unknown packets. Packet will still cause
POL to treat client as active.
11-24 Austin
Added : basic::Bin() - Convert 25 to 11001
11-23 Austin
Fixed : account.Get_Member(member name) now works.
Fixed : .Get_Member(member name) for script objects now works.
11-23 MuadDib
Added : Added second optional param to SplitWords() function. Second param now defaults to space.
Allows use of "bleh" "+" "," "_," "." etc. as the delimiter instead of just whitespace.
Added : New combat.cfg setting "WarModeDelay". Setting is in Integer for Seconds delay between
ability to toggle war mode status via client. Does not affect using SetWarMode method.
11-20 Austin
Fixed : Attempt # 2 with *InBox() coordinate checks.
Fixed : Region scripts (EnterScript / LeaveScript) no longer need an
EnterText and LeaveText to work.
11-15 Austin
Added : using "::regions/" in a config path will allow a config file from pol/regions/ to be read.
Example ReadConfigFile("::regions/justice");
Added : regions.cfg / justice.cfg support for EnterScript and LeaveScript.
Scripts will be run when a player enters or leaves the region.
Parameters passed to it are the mobile that entered/left and the region name.
Please note these scripts run critical.
Regions.cfg Example:
Region Britain
{
Range 1416 1500 1740 1790
Guarded 1
EnterText You have entered britain
LeaveText You have left britain
Midi 9
EnterScript :coords:enterScript
LeaveScript :coords:leaveScript
}
Example of enterScript.ecl
------
use uo;
program EnterRegionZone(mobile, region_name)
ApplyRawDamage(mobile, 10000);
SendSysMessage(mobile, "You just died because you entered an area that makes you dead!");
return 1;
endprogram
------
11-14 Austin
Fixed : uo::*InBox(x1, y1, z1, x2, y2, z2) functions will check the boundaries of the coordinates.
If they are too low or too high, they will be adjusted to fit within the realm.
Fixed : Using the .realm property on an intrinsic weapon caused a core crash.
Added : weapon.intrinsic
11-10 Austin
Fixed : Items moved to invalid locations will now go to the player's feet on the
correct realm and not just to britannia.
11-03 Austin
Added : uo::CoordinateDistance(x1, y1, x2, y2) - Returns the distance between two coordinates.
The following two functions were originally scripted by Myrathi:
Added : uo::GetCoordsInLine(x1, y1, x2, y2) - Returns an array of structs {.x, .y} for every coordinate
between the two points.
Added : uo::GetFacing(from_x, from_y, to_x, to_y) - Returns the facing number an object must have in order to
face to_x and to_y from from_x and from_y.
10-31 Austin
Fixed : Core crash with MoveCharacterToLocation() when a character was moved to the same realm.
10-30 Austin
Changed : NPC.connected will now always return 1. Before it was 0.
10-29 Austin
Added : polsys::GetCmdLevelName(number) - Will get a command level's name.
Added : polsys::GetCmdLevelNumber(name) - Will get the numeric value of a command level.
Added : polsys::GetPackageByName(name) - Will return a package reference.
Added : account.SetDefaultCmdLevel(number) - Will set the account's default command level.
Added : account.defaultcmdlevel - Will return a number for the accounts default command level.
Changed : If npc.ar is used and the NPC has no armor equipped, it will give its intrinsic armor value
(NPCDESC.CFG AR entry). If it has armor equipped, it will work as it did before.
Changed : Added some error checking and reporting when "(something in array)" is used in a script.
Hopefully this will fix the rare "in" crash or at the least, make it a little easier to find.
10-17 Austin
Added : Added uo::MoveObjectToLocation( object, x, y, z, realm := _DEFAULT_REALM, flags := MOVEOBJECT_NORMAL );
Function will replace MoveCharacterToLocation(), MoveItemToLocation(), and MoveObjectToRealm()
Currently moves boats, mobiles, and items.
10-16 Shinigami
Changed : added x- and y-Offset to uo::SendDialogGump( who, layout, textlines, x := 0, y := 0 );
(don't forget to recompile all your Scripts using new uo.em)
10-13 Shinigami
Added : Linux: Core will check libc version and print Warning if libc is to old (< 2.3.2)
10-07 Austin
Added : scripts/misc/dblclickother - Runs when a player double clicks another player or npc.
Will not run if the npc has the double click event enabled.
Program arguments are (who, mobile_clicked)
Added : servspecopt.cfg - 'DoubleClickWait'. (Default is 0)
Time in seconds that must pass before a player can double click something again.
Added : mobile.GetCorpse() - Returns an item reference to the most recent corpse made.
10-03 Austin
Added : corpse.ownerserial - Returns the serial of the npc / player that died.
10-02 Shinigami
Added : Prop script_process.attached_to and script_process.controller.
(script_process comes from NPC.process or uo::GetProcess(pid))
09-30 Shinigami
Fixed : added Player Check to uo::SendStatus (crashed on NPCs)
09-25 Shinigami
Fixed : eCompile - FileCheck for multiple include of same File
e.g.: inside scripts\textcmd\test\textcmd.src:
Include "../../../pkg/std/housing/include/test";
Include ":housing:test";
Include ":housing:include/test";
will be handled as same file now
09-23 Shinigami
Added : uo::SendStatus( character ) - to send full Status Packet to support Extensions
like Resistances, if you add'em via Packet Hook. Use SendStatus to update'em.
09-17 Shinigami
Fixed : Crash if Name of Items or Mobiles was to long and you've clicked'em
09-16 Shinigami
Added : pol.log will show last running Script and it's Program Counter
(you can use eCompile LST-file (Switch: -l) to get the Source Line)
Added : Linux: pol.log will show Backtrace (as same as STDERR)
09-15 Austin
Added : mobile.connected - To determine if the character is actively connected to the game.
Is set to 1 before logon/reconnect scripts are run and 0 right before logofftest is run.
09-14 Shinigami
Added : vitals.cfg element option "RegenWhileDead" added (0/1 - defaults to 0)
09-13 Austin
Fixed : When a player dies, it will send SYSEVENT_DISENGAGED to the opponent-npc, if one is set.
09-12 Shinigami
Added : some Packet functions, same as original one, but with flipping Byte Order
Packet.GetInt16Flipped(offset, value)
Packet.GetInt32Flipped(offset, value)
Packet.SetInt16Flipped(offset, value)
Packet.SetInt32Flipped(offset, value)
09-11 Austin
Added : Member for mobiles ".opponent". Returns a mobile reference if a combat opponent is selected.
09-10 Shinigami
Added : math::Root - returns y Root of x (same as Pow(x,1.0/y))
09-08 Shinigami
Changed : eCompile - BASIC style for loops (for i:= start to end) will warn again on -v5 (and above)
about the iteration variable being unused
09-08 Austin
Added : polsys::Packages() now has a .npcdesc member. Will be 1 if the package has an npcdesc.cfg file.
09-07 Folko
Changed: eCompile - BASIC style for loops (for i:= start to end) will no longer complain about the iteration variable being unused
Changed: Fixed some endianess issues and improved the conversion performance
09-03 Shinigami
Changed : uo::FindPath will redefine Param mobilesblock as flags (FP_IGNORE_*)
Added : uo::FindPath can ignore Doors (FP_IGNORE_DOORS)
09-03 Austin
Fixed : cfgfile::GetConfigStringArray() lines that contain a property name but no value will not be placed in the array.
Added : cfgfile::GetConfigStringDictionary( element, property_name ). Works similarly to
GetConfigStringArray() but will take the first word on the line and use it for the key.
Elem ElemName
{
PropLine keyname this will be the text placed in it
}
09-02 Shinigami
Fixed : uo::Attach allowed you to attach more than one Script to a Character
08-29 Shinigami
Changed : UseAAnTileFlags in SERVSPECOPT(.LOCAL).CFG renamed to UseTileFlagPrefix (check 03-05)
(compatibility with const TILEDATA_FLAG_* inside uo.em)
Changed : player.spyonclient2 renamed to player.clientinfo (check 01-24)
08-29 Folko
Added : Support for custom MIME types in config/www.cfg. This allows you to
add new file types that the web server can handle, for example PNG images,
PDF files or favicon.ico. If you don't supply a www.cfg, old defaults are used.
Hint : Here's an example www.cfg:
MIME gif
{
Extension gif
MIME image/gif
}
MIME jpg
{
Extension jpg
MIME image/jpeg
}
MIME jpeg
{
Extension jpeg
MIME image/jpeg
}
08-28 Austin
Added : Ability to initialize error as you would a struct.
Example return error{"errortext" := "This is the error message"};
Added : Extended NPC.EM Say() function to allow for two additional parameters.
Say( text, text_type:=SAY_TEXTTYPE_DEFAULT, do_event:=SAY_DOEVENT_DISABLE );
Text type is a string "default", "yell", "whisper", constants are:
SAY_TEXTTYPE_DEFAULT, SAY_TEXTTYPE_YELL, SAY_TEXTTYPE_WHISPER (added to npc.em)
If do_event is enabled with SAY_DOEVENT_ENABLE, it will send a speech event to nearby npcs.
08-26 Austin
Fixed : LEFTAREA event was not being sent to npcs in the old realm when a mobile was moved to a new realm.
08-25 Austin
Fixed : LEFTAREA event was not being sent if a mobile was teleported 33 tiles or more away.
08-23 Austin
Added : Logging out will now send a LEFTAREA event (after logout.ecl has finished).
Added : New flag for servspecopt.cfg called "EventVisibilityCoreChecks" set to 0 (disabled) by default.
Enabled - the core does visibility checks before sending events as it did before.
Disabled - requires your scripts do visibility checking.
08-22 Shinigami
Fixed : sometimes the Core crashed while destroying Items (e.g. via Control Scripts) on Boats
07-28 Shinigami
Changed : eCompile - Assignment inside Condition Check will produce Warning on -v5 (and above) only
07-26 Shinigami
Changed : TextCMDs can be specified in Packages; just make a commands/gm (new style) or
textcmd/gm (old style) etc directory. These are only scanned at startup,
so if the directory doesn't exist then, it won't be searched until restart.
Changed : Support for packaged Includes - if you use 'Include ":blah:blubb";'
eCompile will search for ":blah:blubb.inc" and ":blah:include/blubb.inc".
It will use first file found. If both files exist eCompile will print a Warning.
07-25 Shinigami
Added : MinDamage and MaxDamage in weapon.GetItemDescriptor() calculated from Damage-Dice
Changed : usable Msg size of SendDialogGump doubled - now you can use larger Gumps
07-16 Shinigami
Fixed : uoconvert will ignore illegal statics with graphic >= 0x4000
Added : uoconvert.cfg element option extended by ShowIllegalGraphicWarning
StaticOptions
{
MaxStaticsPerBlock 1000
WarningStaticsPerBlock 1000
ShowIllegalGraphicWarning 1
}
it's a flag and defaults to 1 (for the other entries go to 07-05)
07-07 Shinigami
Hint : uo::ListItems*Location, uo::ListMobile*Location and uo::ListStatics*Location
will check for out-of-range coords now
uo::ListObjectsInBox, uo::ListMultisInBox and uo::ListStaticsInBox
will NOT check for out-of-range coords - a lot of scripter "love" this bug :o/
07-06 Shinigami
Fixed : u'll get the correct string representation even if a numeric Config File
Value will cause an overflow
07-05 Shinigami
Added : Warning if no tiles or landtiles are loaded (maybe files missing...)
Added : uoconvert.cfg element option added, StaticOptions, in the following form:
StaticOptions
{
MaxStaticsPerBlock 1000
WarningStaticsPerBlock 1000
}
max. Amount of Static Items per Block of 8x8x256 (or Warning Level)
it is hard limited to 10000. default is 1000.
07-04 Shinigami
Changed : uo::ListStaticItemsAtLocation to uo::ListStaticsAtLocation( x, y, z, flags, realm )
uo::ListStaticItemsNearLocation to uo::ListStaticsNearLocation( x, y, z, range, flags, realm )
IGNORE_* constants to ITEMS_IGNORE_* constants
Added : Parameter Z in uo::ListStatics*Location
Added : LIST_IGNORE_Z constant u can use for Z Parameter to list all Items ignoring Z-Value
in uo::ListStatics*Location, uo::ListItems*Location and uo::ListMobilesNearLocation*
Added : uo::ListStaticsInBox( x1,y1,z1, x2,y2,z2, flags, realm );
creates an array of structures with Static and Multi Items in box.
you can specify via flags which Items you want to get. check ITEMS_IGNORE_* constants.
Added : realm-based coord check inside List*InBox and uo::ListMobilesNearLocation*
07-01 Shinigami
Fixed : low-fragmentation Heap is linked dynamically, so Core will work on Win9x/NT again
ReAdded: uo::GetAttributeIntrinsicMod( character, attrname )
You set intrinsic Mod via exported GetIntrinsicModFunction in attributes.cfg
Fixed : Memory leak inside cfgfile::Read-/UnloadConfigFile(...)
cfgfile::AppendConfigFile(...) will call cfgfile::UnloadConfigFile(...) immediately
06-15 Shinigami
Added : npc::CanMove( direction ) - checks if an NPC can move in given direction
(IsLegalMove works in a different way and is used for bounding boxes only)
Added : UseWinLFH=0|1 in SERVSPECOPT(.LOCAL).CFG (default = 0)
Use Windows XP/2003 low-fragmentation Heap?
06-06 Shinigami
Fixed : FindPath will work again @ Linux-Core without crashing server in some cases.
06-01 Shinigami
Fixed : Cancel of TradeWin will put items in correct Realm on ground if backpack full
Added : movecost.cfg can have 'Walking_Mounted' and 'Running_Mounted' sections too.
You've to declare one global 'MovementCost' section or 2 sections 'Walking' and
'Running'. If you don't declare Mounted sections, Core will use unmounted values.
Added : uo::Attach( character ) - attach a Script to a Character
Fixed : moving intrinsic Weapon via MoveItemToLocation crashed Server
WARNING: You should never touch intrinsic Weapons!
Added : uo::ListStaticItemsAtLocation( x, y, flags, realm )
Added : uo::ListStaticItemsNearLocation( x, y, range, flags, realm )
creates an array of structures with Static and Multi Items at or around location.
you can specify via flags which Items you want to get. check IGNORE_* constants.
[Edit: changed... please check 07-04 above]
Added : uo::GetStandingLayers( x, y, flags, realm )
get an array of standing layers and blocking solids. check MAPDATA_FLAG_* constants.
05-31 Shinigami
Added : flag LOG_DATETIME in file::LogToFile( filename, line, flags := 0 )
to log Core-Style DateTimeStr in front of log entry
05-28 Shinigami
Added : flag ENUMERATE_IGNORE_LOCKED in uo::EnumerateItemsInContainer( container, flags := 0 )
to list content of locked container too
Added : uo::SecureTradeWin( character, character2 ) - to init secure trade via script over long distances
Added : uo::MoveItemToSecureTradeWin( item, character ) - to move item to secure trade window via script
05-25 Shinigami
Added : Account.delete() - delete this empty account
Added : Account.split( newacctname : string, index : 1..5 )
create a new account and move character to it
Added : Account.move_char( destacctname : string, index : 1..5 )
move character from this account to destination account.
you can use it to flip chars on same account too - it's not a bug, it's a feature ;oP
04-04 Shinigami
Added : player.createdat - returns the PolClock when the character was created
Added : Before character deletion, scripts/misc/candelete.ecl will be called.
program definition is:
- program can_delete( who, deleteby ); // return nonzero to allow deletion
new constants in UO.EM:
- DELETE_BY_PLAYER : Delete-Request by Player
- DELETE_BY_SCRIPT : Delete-Request by account.DeleteCharacter( index )
Before character deletion, scripts/misc/ondelete.ecl and anypkg/ondelete.ecl will be called.
Their return values are ignored.
Fixed : Call OnDelete script in account.DeleteCharacter( index ) too.
Updated : Account.set_uo_expansion(string): recognized values: SE, AOS, LBR, T2A (default), "".
This determines what flag is sent with packet 0xB9 during login
(Nothing -> 0x0000 / T2A -> 0x0001 / LBR -> 0x0002 / AOS -> 0x801b / SE -> 0x805b).
It's possible to hook 0xB9 but don't forget to set_uo_expansion anyway because core
uses this for internal flags (e.g. AoS Tooltips). Packet 0xB9 will be sent earlier
(before you choose a character) and after you've used set_uo_expansion.
Updated : servspecopt.cfg property: UOFeatureEnable, used in the last dword of the 0xA9 login packet,
will block Bit 6 (support up to 6 Chars).
To enable AoS stuff set Bit 5 (use 0x20), to enable SE stuff set Bit 7 & 5 (use 0xa0).
04-02 Shinigami
Added : Additional realm-support
CreateItemCopyAtLocation(x, y, z, item, realm := _DEFAULT_REALM);
boat.move_offline_mobiles(int x, int y, int z[, string realm]);
(If realm is not set, Boat-realm is used.)
Added : Some realm-constants to uo.em
03-09 Shinigami
Added : WeaponTemplate Prop Delay [ms]
Added : NPCDesc Prop AttackDelay [ms]
Added : character.delay_mod [+-ms] for WeaponDelay
If (Delay!=0) use Delay(+delay_mod) to calculate next weapon swing.
03-05 Shinigami
Added : UseTileFlagPrefix=0|1 in SERVSPECOPT(.LOCAL).CFG (default = 1)
Should Core prepend "a"/"an" according to tiles.cfg flags to formatted item names?
(p.s.: in 08-29 renamed from UseAAnTileFlags to UseTileFlagPrefix)
Fixed : Last but not least, remove Spell Delay usage from core.
03-03 Madman
Fixed : My previous attempt to remove spellcasting from the core was incomplete. It should no
longer run a skillcheck before starting the spell script.
03-02 Shinigami
Fixed : MoveObjectToRealm will handle any type of items (equipment etc.) and container with content too.
Fixed : You can move item from container to different realm without crash.
03-01 Shinigami
Fixed : Pol will support up to 5 Maps now (Britannia, Britannia_alt, Ilshenar, Malas, Tokuno)
02-23 Shinigami
Added : DecayItems=0|1 in SERVSPECOPT(.LOCAL).CFG (default = 1)
Disable (e.g. World Design Server) or enable (Live Shard Server) item decay.
02-14 Shinigami
Fixed : AOS Spellbook entries in itemdesc.cfg will not crash linux build anymore.
Fixed : Wrong handling of double clicking AoS style Spellbooks.
01-27 Shinigami
Fixed : UOConvert will convert Samurai Empire Map Tokuno.
Don't forget to use tiledata.mul shipped with SE.
Don't forget to build new tiles.cfg and landtiles.cfg too.
If not, your Tokuno Realm works and maybe looks funny ;o)
Fixed : Small bug within UOConvert and Tiledata names with full length.
01-24 Shinigami
Added : player.clientinfo -- returns a struct with a lot of usefull infomation about client PC
Example :
Function TestClientInfo(who)
Var info:=who.clientinfo;
If (info.unknown1) // in most/all cases 0x02
SysLog("ClientInfo '"+who.name+"' ["+who.acctname+"]");
SysLog(" Unknown1 = "+Lower(Hex(info.unknown1)));
SysLog(" Unique Instance ID of UO = "+Lower(Hex(info.instance)));
SysLog(" OS Version = "+info.os_major+"."+info.os_minor+"."+info.os_revision);
SysLog(" CPU Manufacturer = "+info.cpu_manufacturer);
SysLog(" CPU Family = "+info.cpu_family);
SysLog(" CPU Model = "+info.cpu_model);
SysLog(" CPU Clock Speed = "+info.cpu_clockspeed+" MHz");
SysLog(" CPU Quantity = "+info.cpu_quantity);
SysLog(" Memory = "+info.memory+" MB");
SysLog(" Screen Resolution = "+info.screen_width+" x "+info.screen_height+" x "+info.screen_depth+" Bit");
SysLog(" Direct X Version = "+info.directx_major+"."+info.directx_minor);
SysLog(" Video Card Description = "+CChrZ(info.video_description));
SysLog(" Video Card Vendor ID = "+info.video_vendor);
SysLog(" Video Card Device ID = "+info.video_device);
SysLog(" Video Card Memory = "+info.video_memory+" MB");
SysLog(" Distribution = "+info.distribution);
SysLog(" Clients Running = "+info.clients_running);
SysLog(" Clients Installed = "+info.clients_installed);
SysLog(" Partial Insstalled = "+info.partial_installed);
SysLog(" Language Code = "+CChrZ(info.langcode));
SysLog(" Unknown2 = "+info.unknown2);
Else
SysLog("No ClientInfo '"+who.name+"' ["+who.acctname+"]");
EndIf
EndFunction
Limitations :
The client doesn't send this Packet every time,
if available you can use it first time in your misc/logon.src.
If your login server differs from play/shard server it doesn't work
(Packet will be send before you choose the server only).
This will work for Win release only, until now. Win and Linux core
handle server-choose- and play-connection in a different way.
Not sure why, must be something with OS-Socks implementation :o(
Comment :
Seems to be very usefull to detect shadow accounts...
You love 1984? OSI too ;oP
(p.s.: in 08-29 renamed from player.spyonclient2 to player.clientinfo)
01-24 Shinigami
Linux : If you'll get something like this using Gentoo Release:
pol: ../sysdeps/generic/dl-tls.c:72: _dl_next_tls_modid:
Assertion `result <= _dl_tls_max_dtv_idx' failed.
try following to run your Pol:
#!/bin/sh
export LD_ASSUME_KERNEL=2.4
./pol
09-18 Birdy
Fixed : Moved login complete packet send higher in login process to try to fix
problems with logging into a weather region with weather where it would
start to rain spell icons instead of rain or snow.
08-03 Birdy
Added : AcctMatch lines in server entries in servers.cfg. Example of format
is below. AcctMatch lines have one account name per line, and are
those accounts to show the given server to on login to the
'login server'(the server that is in the client's login.cfg).
Example :
GameServer
{
Name Test
IP 192.168.0.1
Port 5003
AcctMatch admin
AcctMatch staff
}
The above would only display that particular server(Test, located at
192.168.0.1:5003) to someone logging into the login server with
accounts admin or staff.
IPMatch still works as well, and for an account to see the server it
must fulfill both IPMatch and AcctMatch entries, if those exist to
match up against.
08-03 Birdy
Fixed : Good Aligned NPCs that attack innocents and go criminal will
highlight grey now.
Attacking criminal flagged Good NPCs will no longer flag others as
criminal.
08-01 Birdy
Fixed : Crash bug related to realm not being set in createitemincontainer soon
enough for references to it in create scripts.
07-27 Birdy
Added : New system event : SYSEVENT_GONE_CRIMINAL := 0x2000;
You should add this to your sysevent.inc file or wherever you keep your
system event constants. This event is closely associated with the
SYSEVENT_ENTERED_AREA event. It uses the current range setting for
the ENTERED_AREA event as it's own range, and this is for good reason.
The GONE_CRIMINAL event lets the system tell the NPC when a mobile has
become a criminal(from a previously non-criminal state) by firing this
event and placing a character reference to the new criminal in the
source field of the event. If used in conjunction with the ENTERED_AREA
system event, then guards should be able to do their guarding work
without needing to do polling scans of the area around them periodically.
On ENTERED_AREA events, you check to see if the person entering the area
is a criminal or not. On GONE_CRIMINAL events, you know that the person
who was already in the area has become a criminal from previously being
innocent.
This event will only fire if the criminal is visible to the NPC. Though
again, if you are using it in conjunction with the ENTERED_AREA event, then
when the criminal comes out of hiding, an ENTERED_AREA event will be fired
and you can handle the criminal there.
This event will also only fire on transitions from innocent status to
criminal status. No events will fire on transition to innocent status
again, and if the subject was already a criminal to begin with, then
doing a criminal act again will not fire the event. This is to keep the
system from being overloaded with events since every hit on an innocent
is a new criminal act.
I will stress one last time, use this WITH the SYSEVENT_ENTERED_AREA
system event, NOT on it's own! Or you will be confused and bewildered.
You have been warned!
07-18 Madman Across the Water
Changed: Casting from the default spellbook:
* It no longer checks if you are dead, says the words of power,
performs the animations, checks for free hands, performs a
skill check, or checks for or consumes mana or reagents. All
these things must now be handled in scripts. This, combined
with Myrathi's changes on 5-12, wherein spellid is now passed
to the cast spell, should allow greater flexibility and also
simplicity in spell systems and scripts.
06-17 Birdy
Changed: Uncommented RandomFloat(...) in util.em to allow it to be used.
06-13 Birdy
Fixed: Items dragged across realms and dropped will update properly. This
is necessary to allow storage containers to be able to have their items
dragged out of them and dropped on the ground directly, even if the
ground is not the default realm that storage containers are all in.
Fixed: All worn items will now have their realm updated on character realm
transfer instead of just the backpack.
06-09 Myrathi
Removed: Deprecated UO.EM functions:
* Damage()
* GameStat()
06-08 Myrathi
Fixed: CASE statements given a significant overhaul:
* Error messages now correctly refer to them as a "CASE statement",
not a "SWITCH statement".
* They now *require* their test-expression to be within parenthesis.
* Empty CASE statements with no option clauses are now caught as
invalid.
* A warning message will be displayed if the only thing defined is
a "default:" clause (i.e. no option clauses)
* Missing option values are now caught and less cryptic error messages
shown (e.g. when using undefined constants)
06-06 Myrathi
Added: New 'dowhile' keyword (to solve the "do/while()/endwhile/while()"
bug). "do..dowhile()" now follows the more usual block syntax
style (if..endif, while..endwhile, etc.).
Syntax is as follows:
do
<statements>
dowhile ( <expression-is-true> );
06-05 Birdy
Added: ItemColorMask ServerSpecOpt option. This option defaults to the
typical POL mask of 0xFFF. It is a bitmask of what colors should
be considered valid. For example, with an ItemColorMask of
0xFFF, any color from 0 to 4095 is considered a valid color.
With an ItemColorMask of 0xFF, this would be reduced to a range
from 0 to 255. It was left a mask instead of given as a range
in order to allow specifying certain bits to be on. So, for
instance, with the newer clients, a mask of 0x4FFF will allow
the third bit (value 4) of the most significant nibble to
be turned on, but no others in that nibble. This allows for
newer clients to use the "transparent animation" feature, which
allows equipped mounts to be transparent(ie, ethereals). Bear
in mind, older clients may well crash if you set colors to be
outside of the non-default mask of 0xFFF, so this is strictly at
your own risk to use it. But for those of you wishing ethereal
beetles and other mount animations to be ethereal, you will have
to set the mount piece to be color 0x4001 and then equip it.
And in order to do that, you will need an ItemColorMask of
0x4FFF.
06-03 Birdy
Removed: GetAttributeIntrinsicMod(...) function interface in uo.em was
removed, since no Set for the function has existed since way
back in POL094 test cores and no plans to impliment a set
exist. This will require a search of your scripts for this
function and removal of it(some distro code has it) and
a recompile of those scripts.
05-24 Birdy
Fixed: FindSubstance should now (hopefully) auto-release items reserved by
it on script termination.
Fixed: Packet.SendAreaPacket(x,y,range,realm) now looks for 4 parameters
as it should instead of 3.
05-17 Birdy
Changed: concealed property is no longer compared to cmdlevel by core. Any
scripts changing concealed should do validation against cmdlevel
itself. Doing this now allows NPCs and others to be able to be
concealed at higher levels than their cmdlevel. For this added
flexibility, all validation must now be done within scripts!
05-16 Myrathi
Removed deprecated operators and tokens (as promised! :P'):
- '=' has been removed; use '==' to test for equality.
(appropriate suggestions will be made for '==' or ':=')
- 'local', 'global' and 'dim' have been removed; use 'var' to declare variables.
- 'begin' and 'end' have been removed:
do..while() loops now work without them.
repeat..until() loops never actually needed them: so no loss. :)
** Scripts containing any of the removed operators or tokens **
** WILL NOT COMPILE ANY MORE!! Update your scripts!! **
05-12 Myrathi
Fixed: Mobile 'mob.frozen' flag is now saved properly (NOTE: this includes PCs and
will most likely require any existing scripted workarounds to be rewritten!)
Added: Extra 'spell_id' parameter is now passed to spell scripts which relates to
'SPELLID' in the spell's entry in '::spells.cfg'.
Example:
use uo;
program spellscript( who, spell_id )
SendSysMessage(who, "Casting SPELLID# " + CStr(spell_id));
// "Clumsy" has spell_id = 1, "Create Food" = 2, etc..
endprogram
05-01 Birdy
Fixed: Number of Map/Static patches was reversed in the enable difs packet.
05-01 Racalac
Fixed CProps "GivenBy", "GivenTo", and "GivenTime" set on items dropped on NPCs.
04-26 Birdy
Added: New uo.em function created :
FindSubstance( container, objtype, amount, makeinuse := 0 )
This function will search the given container for items of objtype in an
amount equal or greater than the amount given(stackables can return greater
than #), if makeinuse is set to 1, then the items will be reserved. If
sufficient # of items have been found, those found(and possibly reserved)
will be returned in an array as the return value. If not enough of the
given item were found, then an error with errortext = "Not enough of that
substance in container" will be returned.
04-25 Racalac
Added new house methods that allow write access to the house.components array.
house.add_component(item ref)
house.erase_component(item ref)
Added multi member:
multi.footprint
returns a struct with "xmin", "xmax", "ymin", "ymax" of the world coordinates
the house or boat occupies.
Added GetMultiDimensions(graphic), returns struct with "xmin", "xmax", "ymin", "ymax"
of _relative_ distances from center. xmin and ymin are _negative_.
Changed TargetMultiPlacement. new optional parameters:
TargetMultiPlacement( character, objtype, flags := 0, xoffset := 0, yoffset := 0 );
xoffset and yoffset change the "ghost" target house. NOTE: the coordinates returned
by this are the coordinates of the "target" cursor, not the center of the house!
So if you want to have the front steps be under the cursor, you must transform the
parameters to CreateMultiAtLocation to include your xoffset and yoffset. ANOTHER
NOTE: positive offsets move the cursor left/down in relation to the ghost house.
When transforming the coordinates for CreateMultiAtLocation, use the negative (i.e
if yoffset is 4, subtract 4 from the y coordinate result of TargetMultiPlacement
when passing the location to CreateMultiAtLocation.
Example, using the front steps to target:
var dims := GetMultiDimensions( 0x6071 );
if(!dims) return; endif
var loc := TargetMultiPlacement( who, 0x6071, 0, 0, dims.ymax );
if(!loc) return; endif
var house := CreateMultiAtLocation( loc.x, loc.y - dims.ymax, loc.z, 0x6071, 0, who.realm );
04-24 Racalac
Armor Zone 0 errors hae a better message now.
Half-created PCs shouldn't get into the world file now.
Added house.custom() returns 1/0 (for upcoming custom house support)
NPC move functions check the current realm's bounds
CreateItemAtLocation correctly checks passed coordinates for validity for the realm
Map methods (insertpin, etc) check the current realm's bounds. Not like there's art for
the other realms anyway.
Packet 0x1B changed to include correct map/server bounds
04-23 Birdy
Changed: Mounts listed in uoconvert.cfg that are not found to have tiledata.mul
entries will now be created regardless. Should fix problems related to
0x3ea2 mount(perhaps others too), which has no tiledata.mul entry, yet
is a valid mount graphic.
04-20 Birdy
Fixed: FindPath(...) should work again now.
04-17 Birdy
Changed: Speech.mul -- Added in support for UTF-8 -> Unicode decoding in speech.mul
packets. Should work now (hopefully) for all languages.
Fixed: Minor tweaks to movement. Should fix some bounceback problems.
04-17 Racalac
Multimap/Realm Support
----------------------
POL now supports seperate maps, or "Realms", such as britannia, ilshenar,
and malas. The uoconvert tool is the starting point for using realms on
your shard. Run the updated instructions in the included uoconvert.txt
help file. The names of the directories created in pol/realms by uoconvert
are the realm names that are used by the core and your scripts. I
recommend you keep them the same as what is in the uoconvert.txt file.
Realm names are the key to using realms on your shard.
The client's *.dif files should be used in the uoconvert process, as the
client needs to know how many patches exist. Any time the .dif files
change on the client side, re-run uoconvert with the new .dif files to
stay in sync.
Object Changes:
UObject.realm: Read-only string. (This inherits to Item, Character, Multi, etc)
Account.uo_expansion: Read-only string
Account.set_uo_expansion(string): recognized values: AOS, LBR, T2A (default)
This determines what flag is sent with packet 0xB9 during login. The
servspecopt.cfg UOFeatureEnable is used with packet 0xA9 and is currently
global to all clients.
Packet.SendAreaPacket(x,y,range,realm), realm name string parameter added.
Escript Module Changes:
polsys.em:
Added "Realms()": returns a dictionary of structs. example:
"realm_name" -> "width"
"height"
"mapid"
"toplevel_item_count"
"mobile_count"
uo.em (included with zip):
The following functions were enhanced with a realm parameter (all realm
parameters are a case-sensative string name of the realm). All other
functions use some object's context for determining the realm.
Tip for upgrading: all your scripts should works normall _in Britannia_.
In any other realm they will fail. You must find all occurances of these
functions on your shard and fill in the realm parameter with an appropriate
value. For example, in the createnpc textcommand, the call to
CreateNPCAtLocation should be made with 'who.realm' as the last parameter.
Many script changes are easy like this, others are harder, like
spawnregion and recall/gate spells. If something doesn't work, you can be
fairly sure it's due to an incorrect realm parameter. The pol-distro
sourceforge project has been updated with many of these changes if you
wish to look.
const _DEFAULT_REALM := "britannia";
CreateItemAtLocation( x, y, z, objtype, amount := 1, realm := _DEFAULT_REALM );
CreateMultiAtLocation( x, y, z, objtype, flags := 0, realm := _DEFAULT_REALM );
CreateNpcFromTemplate( template, x, y, z, override_properties := 0, realm := _DEFAULT_REALM);
FindPath( x1, y1, z1, x2, y2, z2, realm := _DEFAULT_REALM, mobilesblock := 0, searchskirt := 5 );
GetHarvestDifficulty( resource, x, y, tiletype, realm := _DEFAULT_REALM );
GetMapInfo( x, y, realm := _DEFAULT_REALM );
GetRegionString( resource, x, y, propertyname, realm := _DEFAULT_REALM );
GetStandingHeight( x, y, startz, realm := _DEFAULT_REALM );
GetWorldHeight( x, y, realm := _DEFAULT_REALM );
HarvestResource( resource, x, y, b, n, realm := _DEFAULT_REALM ); // returns b*a where 0 <= a <= n
ListGhostsNearLocation( x, y, z, range, realm := _DEFAULT_REALM );
ListItemsAtLocation( x, y, z, realm := _DEFAULT_REALM );
ListItemsNearLocation( x, y, z, range, realm := _DEFAULT_REALM );
ListItemsNearLocationOfType( x,y,z, range, objtype, realm := _DEFAULT_REALM );
ListItemsNearLocationWithFlag( x,y,z, range, flags, realm := _DEFAULT_REALM );
ListMobilesNearLocation( x, y, z, range, realm := _DEFAULT_REALM );
ListMobilesNearLocationEx( x,y,z, range, flags, realm := _DEFAULT_REALM );
ListObjectsInBox( x1,y1,z1, x2,y2,z2, realm := _DEFAULT_REALM );
ListMultisInBox( x1,y1,z1, x2,y2,z2, realm := _DEFAULT_REALM );
PlayMovingEffectXYZ( srcx, srcy, srcz, dstx, dsty, dstz, effect, speed, loop := 0, explode := 0, realm := _DEFAULT_REALM );
PlayStationaryEffect( x, y, z, effect, speed, loop := 0, explode := 0, realm := _DEFAULT_REALM );
Functions added:
MoveObjectToRealm( object, realm, x, y, z, flags := 0 );
--This is the only write interface to an object's realm. If you wish
an object to reside on another realm, this is the only function
available. Check obj.realm != destination_realm to avoid unnecessary
same-realm transfers. flags is the normal MoveItem|CharacterToLocation
flags. The passed x,y,z must be a standable location in the specified
realm.
Most of these functions will return the errors "Realm not found" and
"Invalid Coordinates for realm".
Regions:
Added "Realm realmname" property
poltool:
added a 5th parameter for the 'mapdump' command, a realm name string as above
uoconvert:
number of map and static patches (from mapdif and stadif files) saved to
/realm/[name]/realm.cfg
Recommend to turn on mapdifs for all realms.
Other Changes:
AOS Spellbook packets are supported. For this, change you spellbook's
itemdesc.cfg type from Container to Spellbook. Paladin and Necromancer
spellbooks are supported by the new Spellbook itemdesc type property
"SpellType" which is one of these strings: "Magic", "Paladin", "Necro".
Recognized scroll objects are: Magic: 0x1F2D - 0x1F6C, Necro 0x2260 - 0x226F,
Paladin: 0x2270 - 0x227C. Sorry this is hardcoded :P
Simple support for AOS tooltips - old single click functionality is supported.
Custom Houses - not yet sorry, that's next!