POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Here you can post threads requesting help on the official POL Ultima Online Emulator Core 098.

Moderator: POL Developer

Post Reply
Former Developer
Posts: 308
Joined: Mon Jan 30, 2006 9:28 am
Location: Germany, Bavaria

POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Post by Shinigami » Mon Mar 23, 2009 3:56 pm

RC = Release Candidate

Code: Select all

-- POL098 --
03-22-2009 Nando:
    Added:   New servspectopt::SendStatLocks (default false) to send the stat locks message.
             Beware that this message will only be sent to clients which have major version > 3
             (to avoid breaking older ones).
    Changed: Canceling of trade window will no longer trigger refreshing of AR/Resistances/Damages.
             It will only send the status bar packet to the client for weight updates.
    Changed: Updates so refreshing of AR/Resistances/Damages is not called when dropping items unless
             to equip them etc as should be.
03-22-2009 MuadDib:
    Fixed:  Bug with items that use the Resource entry in ItemDesc.Cfg causing crashes on shutdown.
03-20-2009 MuadDib:
    Added:  Storage system will now ignore all root containers with SaveOnExit set to 0.
03-19-2009 Nando:
    Added:  UO::PlayMusic( chr, music_id := 0 ), plays the music with music_id
            on client. You can find the music id's this uses at your UO FOLDER/Music/Digital/Config.txt

03-19-2009 Turley:
    Added:  on Chatbutton pressing "scripts/misc/chatbutton.ecl" is called
    Note:   only simple implementation no Chatsystem!
03-18-2009 MuadDib:
    Added:   Basic::Compare(str1, str2, pos1_start:=0, pos1_end:=0, pos2_start:=0, pos2_end:=0);
             Can be used in 3 overloaded ways. Returns 1 on compare success.
                 Compare(string1, string2)
                 Compare(string1, string2, string1_index, string1_length)
                 Compare(string1, string2, string1_index, string1_length, string2_index, string2_length)
             Index is a starting position to begin the compare in the string, and length is the length to
             compare from the index. When using the 3rd method, you can compare substrings in both strings
             instead of just the substring of string1 to entire string2.
    Fixed:   Bug with Player Color and their magic underwear in the Race Changer packet handling.             
03-18-2009 Nando:
    Added:   New ssopt option: CoreSendsCaps 0/1 (default 0), makes POL send
             attribute cap information in the Send Skills (0x3A) packet.

03-17-2009 Nando:
    Added:   New ssopt option: DefaultAttributeCap (default 1000), defines
             which value POL should use as cap for attributes.
    Added:   New attributes.cfg option: DefaultCap (default DefaultAttributeCap),
             to set the default for each attribute.
    Added:   GetAttributeCap(who, attr), SetAttributeCap(who, attr, capvalue) and
             GetAttributeDefaultCap(attr). The names should explain it all.
     Note:   Caps are defined in tenths (100.0 -> 1000, 55.2 -> 552), same as 
             base values.
03-17-2009 MuadDib:
    Added:   Concealed Updater now also run when changing command levels.
    Added:   Basic::Trim(string, type, set). Trims whitespaces from strings
                 String = String to trim from.
                 Type = TRIM_LEFT, TRIM_RIGHT, TRIM_BOTH. Directions to trim the whitespace from. Default is BOTH.
                 Set = Character set to trim as whitespace. Default is " ".
    Added:   Basic::StrReplace(string, to_replace, replace_with). Replace all instances of to_replace in the string
             with replace_with.
    Added:   Basic::SubStrReplace(string, replace_with, start, length:=0). Replace portion of string using replace_with,
             beginning at start for length. If length passed is 0 or lower, it replaces from start to end of string.
             Error Returns: "Index must not be negative", "Index out of range", "Length out of range", "Length must not
             be negative"
03-12-2009 Turley:
    Added:   repsys.cfg General section "PartyHelpFullCountsAsCriminal 1/0" default 0 if 0 OnHelp does not set
             mobile to criminal if helped char is criminal/murderer when they are in the same party
03-11-2009 Turley:
    Added:   new systemhook script 'OnCast'
             function OnCast(who, spellid)
             is called if who casts a spell (including macros) before all checks
             Return: 0 if you wish POL to perform the checks and casting, 1 if you want to handle it fully scriptside
    Note:    The two partystatusgump buttons send spellid 11(green) and 29(red) with clientside reserved next target answer
    Added:   on Paperdoll Guildbutton pressing "scripts/misc/guildbutton.ecl" is called
    Added:   on Paperdoll Questbutton pressing "scripts/misc/questbutton.ecl" is called
    Added:   on Paperdoll Virtuebutton (pentagram doubleclick) pressing "scripts/misc/virtuebutton.ecl" is called
    Removed: "Client tried to drop item to X,Y,Z  but server is putting it at Z=" logmsg
03-09-2009 MuadDib:
    Changed: Console will no longer spam about invalid speech color. Instead it adjusts the
             color back to the default 1001 color and goes on.
03-08-2009 Turley:
    Added:   Partysystem
             new savefile parties.txt
             new em Module party.em
             new cfg file config/party.cfg
             new Object Class Party
             savefile parties:
             saves Leader,Members and Cprops
             new Char members:
             who.party r/o returns PartyRef or Error
             who.candidate_of_party r/o returns PartyRef or Error
             who.partycanloot 1/0 r/o
             PartyRef members:
             party.members r/o returns Array of OfflineCharRefs
             party.candidates r/o returns Array of OfflineCharRefs
             party.leader r/o returns OfflineCharRef
             PartyRef methods:
             party.setleader(CharRef) sets new Leader returns 1/Error
             party.addmember(CharRef) adds new Member returns 1/Error
             party.addcandidate(CharRef) adds new Candidate returns 1/Error
             party.removemember(CharRef) removes Member returns 1/Error
             party.removecandidate(CharRef) removes Candidate returns 1/Error
             party.setprop/getprop/eraseprop/propnames for cprops
             CreateParty( leader, firstmember ); Creates a Party returns 1 or Error
             DisbandParty( partyref ); Disbands a Party returns 1 or Error
             SendPartyMsg( party, character, uctext ); Sends PartyMsg with Sender=character returns 1/Error
             SendPrivatePartyMsg( party, character, tocharacter, uctext ); Sends PrivateMsg with Sender=character
             returns 1/Error
                 //How many chars are allowed in a Party (normal clients only have 10 slots)
                 [MaxPartyMembers int (default 10)]
                 //Newer Clients (>=3.0.6e) does not automatically change "/# " to private msg (they use "/t #")
                 //set to true any public msg will be checked for "# " (0-9 0=slot 10)
                 [TreatNoAsPrivate (1/0) (default 0)]
                 //How long is an invite valid befor automatic decline
                 //set to 0 disables the timeout
                 [DeclineTimeout int seconds (default 10)]
                 //Prefix for a private Msg (e.g. P:)
                 [PrivateMsgPrefix string (default "")]
                 // CanAddToParty(leader,member) return check true/false
                 // called when a leader invites someone
                 // CanRemoveMember(leader,member) return check true/false
                 // called when leader wants to remove member
                 // CanLeaveParty (member) return check true/false
                 // called when member wants to leafe the party
                 // OnPublicChat(member,uctext) return check none
                 // called when a member sends a PartyMsg e.g. for logging
                 // OnPrivateChat(member,tomember,uctext) return check none
                 // called when a member sends a PrivateMsg e.g. for logging
                 // OnDisband(partyref) return check none
                 // called when a Party is about to be disbanded
                 // ChangePublicChat(member,uctext) return new uctext/true/false
                 // called when a member sends a PartyMsg return value is the new uctextarray,
                 // or true for no change, or false to block the msg
                 // ChangePrivateChat(member,tomember,uctext) return new uctext/true/false
                 // called when a member sends a PrivateMsg return value is the new uctextarray,
                 // or true for no change, or false to block the msg
    Note:    implemented PartyRef comparisons are ! and ==
    Note:    Candidates are not saved
             A party with (candidates+members)<=1 gets disbanded
    Note:    All msgs send are cliloc's used cliloc numbers are:
             1005437, 1005439, 1005440, 1005441, 1005442, 1005444, 1005445, 1005446, 1005447, 1005448,
             1005449, 1005450, 1005451, 1005452, 1005453, 1005455, 1008087, 1008089, 1008090, 1008091,
             1008092, 1008094, 1008095, 3000211, 3000222, 3000223
03-08-2009 MuadDib:
    Fixed:   Spacing for all titles and name for mobs in Tooltips and Paperdoll. Also added the
             mob.title_guild in the Tooltips string for names of mobiles.

03-08-2009 Nando:
    Added:   New privilege "moveanydist", will allow moving items regardless of distance (by now,
             the only limit to this priv is the client.)

03-07-2009 MuadDib:
    Changed: Setting of title_prefix, title_suffix, title_race, title_guild will no trigger an
             obj cache to be sent to tooltip enabled clients for updates of tooltips client side.
             This does not affect paperdolls. Paperdolls not being updated until Double Clicking
             again is an issue client-side.
    Added:   AOS Extended Statbar members such as followers, followers_max, tithing, and luck will
             now cuase the Update packet to be sent to AOS enabled accounts when changed.
    Changed: Handling of packet 0x07 (Pick Up Item Request). On success, core now checks for if the
             item was equipped on yourself, and refreshes ar and sends stats. If was in a container
             not on your character, only refreshes stats. If item was on the ground, only stats. If
             on a mobile other than yourself, only stats. If item was inside your own worn items,
             it does nothing (since not worn, and no additional weight to send to client). The big
             Difference here, was client use to ALWAYS refresh the ar of character and statmsg. This
             will eliminate at the least, over 50 loops per pickup when it's not needed, and packets
             not being sent, when not needed.
03-06-2009 MuadDib:
    Added:   Elemental Damage properties added for items and mobiles. These follow the same
             rules as all the AOS Resistances. Same details for itemdesc, GetItemDescriptor(),
             Mobile.damage_fire, damage_cold, damage_energy, damage_poison, damage_physical R/O
             Mobile.damage_fire_mod, etc. R/W
             Item.damage_fire, etc. R/O
             Item.damage_fire_mod, etc R/W
             Itemdesc.cfg: FireDamage, ColdDamage, EnergyDamage, PoisonDamage, PhysicalDamage
                 ItemDesc entries accept Dice Strings just like resistances.
             NPCDesc.Cfg: FireDamage, etc just like ItemDesc.cfg
03-05-2009 Nando:
  Changed:   Core will no longer spam "out-of-sequence gump command" when closing.
  Changed:   CloseGump(who, pid, response := 0) will now accept any object to be returned,
             and will send '0' as the buttonid in close gump packet.
    Added:   Statlock change (Extended Stats, 0xBF sub 0x1A) will be handled if
             CoreHandledLocks is enabled. It will now send statlock (Extended Stats,
             0xBF sub 0x19) on every status update.

03-04-2009 Nando:
    Added:   UO::CloseGump(who, pid, response := 0), closes gump by sending 0xBF's CLOSE_GUMP,
             and returns 'response' for the gump script. 'response' is a LONG. 'pid' is from
             the script that issued the SendGumpDialog() command.           

03-03-2009 MuadDib:
    Changed: Item and Character members for AOS Resistances now report the total of resist and
03-02-2009 MuadDib:
    Fixed:   eScript's Internal "move" command causing items to get misplaced in wrong realms
             on move failed MoveItem* Commands in eScript.
03-02-2009 Nando:
    Fixed:   When running out of memory, the creation of new threads is not possible. Core
             will now check if the thread was properly created to (probably) solve the symptom
             of zombie threads. The problem of not having enought memory to create thread is
             not solved, though. There will still be logs of this error.

03-01-2009 MuadDib:
    Fixed:   Issue with Mount Objtype 0xF021 and EquipItem() ignoring setting it's Layer.
    Added:   Complete packethook support with Clients and higher. This is handled via
             the earlier added Is6017 uopacket.cfg entry. This will allow you to specify a 
             packethook to be triggered ONLY if the client involved is and higher.
             It does not have to be a different packet size for this to work, only the client.
    Added:   "KR" for expansion type. This includes sending the 0x86DB with packet 0xB9.
02-28-2009 MuadDib:
    Changed: UO::DestroyItem(). Now sends a Destroy Item packet to the script controller for
             the item destroyed. This is in addition to sending in range of the item. Reason
             for this, is for Storage Containers across realms.
    Added:   New flag for uopacket.cfg of "Is6017 0/1". This is show the defined packet entry
             is explicity for a and higher packet type. Will let you define packethooks
             for the same packet, that is different based on client version.
    Added:   Character.followers = int. This is for storage for the Followers byte in statmsg
    Added:   ML Expansion statmsg packet support. If Expansion for account is ML or higher, 
             and client version is 5.0 or higher (or is KR), sends ML Info Flag and data.
    Added:   Special Verbose messages (with POL.CFG::Verbose=1) for crypt seed packets
             and the UOKR 0xFF Seed Packet.
02-27-2009 MuadDib:
    Fixed:   Clothing on corpses. COMPLETELY! This age old bug is now 100% fixed. If it was
             equipped at time of death, it will be on the corpse until the on remove script
             check for the corpse is triggered for taking the item out (on remove, not can)
    Added:   Base and up Incoming Packet Handling ability to core.
    Changed: Packets 0x3C updated for supporting clients and newer.
    Changed: Grid index support (KR and for Drop item Packet and sending. Grid
             Index is still not set on Container Add by scripts and core yet (since this is
             only truly needed for KR support for slotted bags).
    Changed: Updated Secure Trade Drop Item packet to support and newer clients.
    Changed: Updated sending of packet 0x25  to support and newer clients.

02-26-2009 Nando:
    Fixed:   Bug where a player / npc moving in a diagonal direction 'd' wasn't blocked by
             items on direction 'd+1' and 'd-1'. (For example, moving in direction NE while
             having items blocking on N and E was allowed by core, while disallowed by client)

02-26-2009 Turley:
    Added:   uo::CheckLosBetween( x1, y1, z1, x2, y2, z2, realm := _DEFAULT_REALM )
             Same like uo::CheckLosAt and uo::CheckLineOfSight

02-25-2009 Nando:
    Added:   New attributes.em functions: SetAttributeLock(who, attrname, lockstate) and
             GetAttributeLock(who, attrname). With new constants: ATTRIBUTE_LOCK_UP,
             ATTRIBUTE_LOCK_DOWN, ATTRIBUTE_LOCK_LOCKED. This works for any attribute.

02-25-2009 MuadDib:
    Added:   Support for UOKR Poisoned Status bar updates. Core will now update UOKR clients correctly
             when poisoned set to true or false for a character.
02-24-2009 MuadDib:
    Changed: SendPacket() now returns an error if packet string passed is not valid size (Divisible
             by 2).
    Added:   SendPacket() buffer size now allows max packet size. No more need to worry bout length.
    Fixed:   Issue where equipped spellbooks would not open to the correct bookmarked page when opened.
    Added:   Support of 0x25 Packet (Send item in container) with Client version >=
    Added:   Support for Grid Index with Trade Container Packet sending.
02-22-2009 MuadDib:
    Changed: Updating of worn items will be handled by sending Delete Item packet to those
             in range, then sending the worn item packets. This is to address an issue with
             client not updating worn items on other players when graphics.color.etc are changed.
    Removed: Saving of base AOS Resistances to pcs.txt. This is not truly needed, as core will handle
             updating these live based on the armor etc. resist mods only thing needing saved now at
             this point. Just like AR. Same with Items.
02-22-2009 Nando:
    Added:   New servspecopt.cfg option: CoreHandledLocks, default to false. If enabled, core will
             handle the change of skill locks and stat locks from the client (setting the attribute
    Added:   Every Attribute now have a lock state. Later, this lock state will be read/changed via
             eScripts methods.

02-21-2009 MuadDib:
    Added:   Ability to use Dice strings for AOS Resistances in itemdesc.cfg entries.
    Fixed:   Bug allowing two players to open trade window, walk away, and continue trading. If players
             get more than 4 tiles away, it will now cancel the trade upon walking to 5th tile away.
    Added:   ServSpecOpt::AllowMovingTrade=0/1(default 0). 0 = Disable moving more than 4 tiles with
             an open trade window. If you move more than 4 tiles from who trading with, cancels trade.
    Removed: UOClient::Listener::Statcap
    Added:   Character.statcap = Replaces the Listener::Statcap. Default 225 r/w
             Character.skillcap = This is for storage, of overall skillcap. Default 700 r/w
             Character.followers_max = Max followers for statmsg packet. Default 0 r/w
             Character.luck = Luck for statmsg packet. Default 0 r/w
             Character.tithing = Tithing for statmsg packet. Default 0 r/w
    Added:   Min/Max Damage added as per OSI Standards to Statmsg packet. This is done by the min and
             max of the dice roll for a weapon before any mods etc.
    Fixed:   Now cannot request stats for chars not visible to you, concealed from you, and over 20
             tiles away.
02-20-2009 MuadDib:
    Added:   Priv "plogany". Used with new startlog and stoplog commands to activate target cursor.
    Changed: Built-in textcommand .startlog and .stoplog for packet logging. If character has the
             plogany priv they get a target cursor to select who to set packet logging for.

02-18-2009 MuadDib:
    Fixed:   Fixed Physical Resist not showing correctly with AOS Resistances in Statbar in place of AR.
Win download : http://downloads.polserver.com/browser. ... indows/098
Linux download : http://downloads.polserver.com/browser. ... /Linux/098
FreeBSD download : http://downloads.polserver.com/browser. ... reeBSD/098

feel free to use it...

Journeyman Poster
Posts: 63
Joined: Thu Feb 08, 2007 11:14 am
Location: Sweden

Re: POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Post by Damien. » Tue Mar 24, 2009 2:48 am

Cheers :D

User avatar
Forum Regular
Posts: 302
Joined: Fri Dec 28, 2007 11:19 pm
Location: Montreal, Canada

Re: POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Post by *Edwards » Tue Mar 24, 2009 1:13 pm

Great work! :D GOGOGO POL 1.0!

User avatar
Novice Poster
Posts: 42
Joined: Thu Feb 09, 2006 11:48 pm
Location: Finland

Re: POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Post by itec » Thu Mar 26, 2009 11:33 am

Whoa, great job. And so many new features!

At first try the core seems to crash quiet a lot. I'll research further and bugreport it soon but seems like it's Trim() in one of the packethooks (speech hook to be exact) that is causing it.

User avatar
Novice Poster
Posts: 42
Joined: Thu Feb 09, 2006 11:48 pm
Location: Finland

Re: POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Post by itec » Fri Mar 27, 2009 10:26 am

I tried it out with the new core and it's still there. I also found the reason. Sending non-string data to trim() is causing it.

for example:
Trim(0) will crash the core
Trim(error) causes "bad allocation"

User avatar
POL Expert
Posts: 657
Joined: Sat Feb 04, 2006 6:26 pm

Re: POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Post by OldnGrey » Sun Mar 29, 2009 2:05 am

Is there any more information on CoreSendsCaps in ServSpecOpt.cfg??
ie is it a good idea for the core to send cap information with the skills given that it defaults to 0.

Former Developer
Posts: 1090
Joined: Sun Feb 12, 2006 9:50 pm
Location: Cross Lanes, WV

Re: POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Post by MuadDib » Mon Mar 30, 2009 12:15 pm

Code: Select all

03-30-2009 Nando:
    Fixed:   Bug in Packet::GetString(offset, len) where it would return a string of 'len' ascii chars,
             regardless of having a null-byte in there. Will now limit to len or the first null-byte
             found, whichever comes first.

03-30-2009 MuadDib
    Fixed:   Equipment.quality will now convert plain integers to Double/Float for it when using
             item.quality:=2; instead of item.quality:=2.0;
03-28-2009 Turley:
    Fixed:   Resend party list if remove hooks dont allow it

03-27-2009 Turley:
    Fixed:   Crash in party speechhandler

03-27-2009 MuadDib:
    Fixed:   Crash in Basic::Trim(). Now checks explicitly for String as param 1. Errors out if not.
    Fixed:   Event LeftArea and EnteredArea both being able to be triggered when 1 is actually disabled.
03-25-2009 MuadDib:
    Changed: StrReplace() and SubStrReplace() will now accept Dict/Struct/Array/Error as param 1 and converts
             them to string format (like when using print() or syslog()) before comparing/converting.

03-24-2009 MuadDib:
    Fixed:   Crash with StrReplace() allowing to go past end of a string.
    Changed: StrReplace() will now allow the replace_with string to be empty, to remove the to_replace
             param from the string completely.
    Fixed:   Crash in onRemove system for removing objects on npc/offline mobiles.
(2.22 MiB) Downloaded 107 times

New User
Posts: 17
Joined: Mon Feb 06, 2006 4:01 am

Re: POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Post by gha » Mon Mar 30, 2009 4:02 pm

linux build please. ;)

Former Developer
Posts: 1090
Joined: Sun Feb 12, 2006 9:50 pm
Location: Cross Lanes, WV

Re: POL 098 Win32, Linux and FreeBSD RC1 - Beer and Waffles

Post by MuadDib » Mon Mar 30, 2009 5:29 pm

Sorry gha, I myself am unable to do those, but the next release is not far away I promise!!!!!!!

Next release, looks like it WILL be 098 Final also. I would like to thank all the ppl who have busted out the testing the past month or so to help us finish 098 so quickly this go round! You guys kick a$$!!!!

Linux Builds will come with 098 Final, which is probably only 2 weeks or so out (I hope! Keep testing the Windows builds if you can until then. The more found and fixed, the better. But we need feedback!)

Post Reply