POL099 Beta 2013-09-03

Here you can post threads specific to the current release of the core (099)

Moderator: POL Developer

Post Reply
Nando
POL Developer
Posts: 282
Joined: Wed Sep 17, 2008 6:53 pm
Contact:

POL099 Beta 2013-09-03

Post by Nando »

Took a while, but the core now looks stable enough for a new beta.

Windows: http://downloads.polserver.com/Core/Windows/099/
Linux: http://downloads.polserver.com/Core/Linux/099/

Here are some changes:

Code: Select all

09-03-2013 Tomi:
    Changed: Equipment members .maxhp_mod .hp .maxhp and .quality moved to Item
           only Weapons and Armors need to have the MaxHP defined in itemdesc because core combat is using it, for all other items there is a default value 1
    Added: Weapon RW member .speed_mod ( -32,768 to 32,767 ) as an optional way to delay if you want to use the default speed math and just add to that
    Fixed: upper limits using the container members .max_items_mod .max_weight_mod and .max_slots_mod
           if max_items >= 3200 it will be set to 3200
           if max_weight >= 65535 it will be set to 65535
           if max_slots >= 255 it will be set to 255
    Note:  None of these members can go below zero

09-02-2013 Tomi:
    Added: Container RW members .max_items_mod( -32,768 to 32,767 ) .max_weight_mod( -32,768 to 32,767 ) and .max_slots_mod( -128 to 127 ) ( default values 0 )

08-31-2013 Turley
	Fixed: EScript memoryleak (eg myvar[blubb]:=othervar) 

08-28-2013 Tomi ( based on andenixas patch )
    Added: ssopt.MobilesBlockNpcMovement ( default true ) to determine if mobiles block the movement of npcs
    Note:  Tamed npcs with same master ( npc.master ) still blocks each others movement even with the flag false to not allow them run on top of each others when following the master

08-27-2013 Nando (patch by andenixa, text adapted from forum post):
    Added:    string.format( args ) - formats a string using the data from args
			  Accepts the following format:
				{:x} for hex representation
				{:o} for octal
				{:b} for binary
	
	          Add a # to get notation prefix:
	          E.g. "{:x}".format(10) -> "a"
			       "{:#x}".format(10) -> "0xa"
				   
			  Parameters can be simple:   
			  
				"You have {} gold coins".format(120) -> "You have 120 gold coins"
			
			  and are unpacked implicitly by their order:

				"{} hits {} for {} of damage".format("John", "Bob", 120) -> "John hits Bob for 120 of damage"
			
			  However you can specify parameters explicitly (first argument is at 1):
			    
				"You hit {2} for {1} damage".format(120, "John Doe") -> "You hit John Doe for 120 damage"
				
			  Format allows accessing object members:

     			"Spell {1.spell_name} requires reagents: {1.reagents}".format(struct{spell_name:="Fire Wrath", "Ba, Bm, Ga"}) 
				       -> "Spell Fire Wrath requires reagents: Ba, Bm, Ga"

			  Implicit members also work:

			    "{name} you hit level {level}".format(struct{name:="Jane Doe", level:=4}) 
						-> "Jane Doe you hit level 4"

			  Character or item members are accessed the same way:

			    "{1.name}, your shield {2.desc} has {2.hp} hp".format(who, who.shield)" 
						-> "Admin, your shield Buckler of Death has 150 hp"
07-27-2013 Tomi:
  Changed:    UO::TargetMultiPlacement( character, objtype, flags := 0, xoffset := 0, yoffset := 0, hue := 0 );
              New optional hue parameter to show hued multis which are supprted by clients >= 7.0.9 ( HSA )
              Older clients ignores this option

06-17-2013 Kevin:
  Fixed:      adding missing mysql_close() entry to sql.em
  Fixed:      OpenSellWindow() "Buyable" container wasn't actually restricting what entries showed. 
              Pass flag VENDOR_BUYABLE_CONTAINER_FILTER to enable this filter. 

05-25-2013 Kevin:
  Fixed:      bug in mysql_select_db() returning error on successful calls
  Fixed:      adding missing mysql_free_result() entry to sql.em

02-26-2013 Kevin:
  Fixed:      item.SplitStackInto(container,amount,add_to_existing_stack := 1) no longer requires three parameters and will default
              the add_to_existing_stack to 1/true if not present
  Fixed:	  item.SplitStackInto() with add_to_existing_stack == 1 will re-add the removed-portion of stack back to original item
              if it cannot add to the existing stack (ie, container's caninsert script returns false)
  Changed:    item.SplitStackInto() with add_to_existing_stack == 1 will first attempt to add to an existing stack if found, and otherwise 
              will create a new stack if no existing stack found. This is similar to how the existing CreateItemInContainer() works

02-20-2013 Tomi:
  Fixed:      When changing graphic of a lightsource item, it now changes correctly the facing too.
  Fixed:      Status bar now shows for weapon mindamage ( id.mindamage + dmg_mod ) and for maxdamage ( id.maxdamage + dmg_mod )

02-17-2013 Tomi:
  Fixed:      Changing invul status now updates it for the character itself too, not just all mobiles around

02-15-2013 Tomi:
  Fixed:      item.SplitStackInto method

01-04-2013 Tomi:
  Added:      Syshook CanTrade
	      parameters ( character, drop_on_chr, item )
  Note:       This syshook runs when dropping an item on a character or when trying to add an item to a tradewindow

12-15-2012 Tomi:
  Fixed:      Items now get their facing from tiledata flag if no itemdesc entry is found
              This fixes wrong lightsources for items such as lampposts

12-08-2012 Tomi:
  Fixed:      Typo in uo.em with new LISTEX flags
  Added:      const REALM_BRITANNIA_ALT to uo.em

12-05-2012 Tomi:
  Added:      Pol now send on invul/murderer status changed for >= KR Clients packet 0x17 to get Yellow or Red color health bars
  Changed:    UO:ListMobilesNearLocationEx added 2 new flags LISTEX_FLAG_PLAYERS_ONLY and LISTEX_FLAG_NPC_ONLY
  Changed:    combat.cfg option "SendAttackmsg" to "SendAttackMsg" to match cases of other options
  Fixed:      UO:MoveItemToContainer doesnt crash anymore when using add_to_exisitng stack parameter
  Fixed:      item methods .SplitStackAt and .SplitStackInto doesnt crash Pol anymore when using add_to_existing_stack parameter

11-16-2012 Turley:
  Added:      string methods:
			  str.length() : returns like len(str) the length of the string
			  str.upper() : returns like upper(str) the uppercase version and also modifies the str
			  str.lower() : returns like lower(str) the lowercase version and also modifies the str
			  str.find(Search,[Start]) : returns like Find(string, search, start) the index of the first occurance of 'search' after 'start' within str
			  but unlike the basic.em function the Start parameter is optional if not given it searches the whole string
			  str.join(array) : returns a string which is the concatenation of the array elements, seperated by str

11-14-2012 Turley:
  Changed:    SplitWords( str, delimiter := " ", max_split := -1 )
              it has now an additional parameter max_split, if given it limits the number of times that a string will be split
			  default: -1 no limit
			  (Patch submitted by andenixa)
  Added:      ecompile its now possible to override through the cmdline
			  GenerateDependencyInfo entry with "-D-"
              GenerateDebugInfo entry with "-x-"
			  
11-10-2012 Turley:
  Added:      uoclient.cfg Listener property "KeepClients" 1/0 default 0
			  if set to 1 clients keep this listener port even after different gameserver select
  Note:       actually 1 is the old behaviour and 0 the old behaviour of pol.cfg ListenPort
  Added:      pol.cfg "UseSingleThreadLogin" 1/0 default 0
              if set all prelogin clients are handled inside the listener thread and not inside an extra thread
			  this will reduce the amount of thread creates and destroys
			  
10-14-2012 Tomi:
  Added:      SystemHook "WarmodeChange" called when a character changes warmode status either by member .warmode or by clicking the warmode button on the paperdoll
              Params CharRef and new_warmode_status
              Return value is ignored

10-09-2012 Tomi:
  Fixed:      packet 0x17 ( poison health bar packet ) was sending 2 bytes with wrong endian when sending to nearby clients

10-08-2012 Turley:
  Fixed:      secured Shadowrealm delete, it will now iterate through all StorageArea Items and check if old shadowrealm property exists
  
10-06-2012 Tomi:
  Changed:    setting an equipped item on NPC to movable 0 will make it visible on the corpse but invisible in the corpse, same as hair and beard have worked until now.

10-05-2012 Turley:
  Added:      ecompile parameter -wP
  Added:      ecompile.cfg entry ParanoiaWarnings
  Note:       since "{}" is valid syntax, only complain about it if ParanoiaWarnings is enabled

09-29-2012 Turley:
  Added:      ecompile parameter -T
  Added:      ecompile.cfg entry ThreadedCompilation
  Note:       if set will use openmp for parallel compilation
  
09-25-2012 Kevin:
  Fixed:      Guild and alliance messages no longer send as regular speech messages. They are sent to all guild or alliance members online.
  Added:      servspecopt.cfg CoreGuildMessages=0/1 default 1 to determine if core should handle guild and alliance messages.

08-29-2012 Turley:
  Fixed:      Crash if a attached script kills the attached npc

08-27-2012 Tomi:
  Changed:    MoveItemToContainer( item, container, x := -1, y := -1 ); to MoveItemToContainer( item, container, x := -1, y := -1, add_to_existing_stack := 0 );
  Changed:    item.SplitStackInto( container, amount ) to item.SplitStackInto( container, amount, add_to_existing_stack := 0 )
  Note:       The optional add_to_existing_stack parameter defines if the items moved to the container will look for an existing stack and add to it or just add as a new item ( old behaviour )
              If add_to_existing_stack == 1 and there is no stack in the container, it will return Error "There is no existing stack", so its up to scripts to check this.
  Added:      item.HasExistingStack( container ) to allow scripts to check if there is an existing stack in a container or not, returns the ItemRef of the stack if it exists.           

08-26-2012 Nando:
  Removed:    Support for ListenPort in pol.cfg when Multithread is activated. Everyone should
              be using uoclients.cfg by now! 

08-01-2012 Kevin:
    Added:    R/W member carrying_capacity_mod for mobiles to modify carrying capacity on a 
              mobile-per-mobile basis. Is taken into account prior to global ssopt modifier.

08-01-2012 Kevin:
    Added:    osmod::Debugger() to put current script in debug state to be attached by external
              debugging application
    Added:    stacktrace debug command to print stacktrace. Displays:
 				<size of stack>
 				foreach stack element:
 					<program counter>
 					<file number>
 					<line number>
 					<number of local variables>
 					foreach local variable:
 						<variable name> <packed value>
 					
07-12-2012 Tomi:
    Added:    combat.cfg entry "SendAttackMsg" values 0/1 defaults to 1
              setting this to 0 stops the core repsys system sending "is attacking you" messages.

06-03-2012 Tomi:
    Added:     Readonly members .active_skill and .casting_spell for characters
              return values 0/1 if character has an active attached skill or spell script

05-01-2012 Tomi:
     Fixed:    On equipped items .resist_*_mod members did not update character status window when changed
              Patch submitted by Agata

04-15-2012 Tomi:
     Added:    R/W member editable 0/1 for maps

04-14-2012 Tomi:
     Added:    Support for new map message packet 0xF5 for clients 7.0.13+
              This packet supports the new facetXX.mul files and now can use every different realm for cartography maps and sea charts.
     Added:    r/w member .facetid for Maps
              This has actually nothing to do with realms, the value is the same as in FacetXX.mul file
04-06-2012 Tomi:
     Fixed:   Roof problem at 4th floor on a custom house. 
              Patch submitted by Agata
     Added:   Packet 0xD6 to be ignored for activity ( fixes inactivity logout for ML+ )
              Patch submitted by OWHorus
04-05-2012 Kevin:
     Added:   ecompile.cfg directive "ErrorOnWarning" and ecompile switch -y to treat warnings 
              on errors during ecompile. Default is 'false'
     Fixed:   various locations were showing warnings even without the -w switch provided.

03-26-2012 Tomi:
     Added:   character readonly member .lastcoord returns struct{.lastx, .lasty, .lastz}

03-09-2012 Tomi:
     Fixed:   uo::SendInstaResDialog() was sending wrong packet 

03-07-2012 Tomi:
     Added:   scripts/misc/dblclickitem.ecl to run a script on every double click on items.
              params are (mobile, item)
              usefull for removing meditation stuff and such in 1 place instead of every script.
     Note:    this script will not be attached to the mobile and will run before any usescript.

02-08-2012 Tomi:
     Added:   character readonly member .tradewindow
              return ContainerRef if the char has an active trade and error if no active trade

02-06-2012 MuadDib:
     Fixed:   Added orphan checks in Character::get_from_ground for both passed serial and items it itr through. Proper logging, returns, and 
	              continue used to keep from attempting movement of orphaned items after log report.

02-05-2012 Tomi:
     Changed: AR not required in ArmorDescs for Pol to start anymore, so now if Physical Resist used only no need to define AR 0 in the ArmorDesc.
     Changed: AR in ArmorDescs defaults to 0.

02-02-2012 Tomi:
     Added: Readonly member .multiid for boats and houses
     Fixed: Old boats didnt read the components correctly on server restart

01-21-2012 Tomi:
     Removed: Graphic from multis, no graphic entry needed for multis in itemdescs anymore, uoconvert doesnt add a graphic value to multis anymore.
     Added:   MultiID entry to boats.cfg instead of the ObjType.
     Changed: Multi itemdescs now require MultiID to be defined for each multi.
     Note:    Multi objtypes still need to be > MaxTileID from pol.cfg
     Example of a multi entry in itemdesc
              Boat 0x10000
              {
	          Name      SmallBoatN
	          MultiID   0x0
              }
     Added:   boats.cfg is now shipped with the core too with boats up to date with HSA so just remove what you dont use.
     Note:    Reconvert of multis.cfg with UOConvert needed
              Make sure you have a itemdesc entry for every boat direction

01-21-2012 Turley:
     Fixed: RequestInputUC() for eg russian chars

01-16-2012 Turley:
	Changed: SpeedUp for uoconvert

01-14-2012 Turley:
    Changed: UnicodespeechEvent additional Member "tokens" if speech has (speech.mul) Tokens, gives array of spoken TokenIDs
	  Added: servspecopt.cfg SeperateSpeechTokens=1/0 default 0 when set RegisterForSpeechEvents() and EnableEvents/DisableEvents behave different
	  Added: uo:RegisterForSpeechEvents Flags LISTENPT_HEAR_TOKENS,LISTENPT_NO_SPEECH
	  Added: SYSEVENT_TOKEN_SPEECH:=0x4000 and SYSEVENT_TOKEN_GHOST_SPEECH:=0x8000 for uo:EnableEvents/DisableEvents
	   Note: if SeperateSpeechTokens is set you can control which events you get,
	         for NPCs you only get speech with tokens if you set SYSEVENT_TOKEN_SPEECH/SYSEVENT_TOKEN_GHOST_SPEECH
			 and non Token speech with SYSEVENT_SPEECH,SYSEVENT_GHOST_SPEECH
			 for RegisterForSpeechEvents() you get speech with and without Tokens when setting LISTENPT_HEAR_TOKENS and no speech without Tokens
			 setting LISTENPT_NO_SPEECH
	   Note: Token and nonToken Eventtype is still the same (SYSEVENT_SPEECH)

01-03-2012 Turley:
    Changed: major rewrite of primitive operators +,-,*,/,...
             major speedup of +=,-=,...
      Added: finally support for +=,-=,*=,/=,%= with objectmembers, like who.resist_fire_mod+=1
       Note: if member would return UnInit or Error it does nothing
             so its like (only faster and atomic):
             var temp:=who.resist_fire_mod;
             if (!(TypeOfInt(temp) in {OT_UNINIT,OT_ERROR}))
                temp+=1;
                who.resist_fire_mod:=temp;
             endif

01-02-2012 Turley:
	  Added: XMLFile/XMLNode.removexmlnode(int value)
             removes node of given index
			 XMLFile/XMLNode.removexmlnode(XmlNode node)
			 removes given node
			 XmlNode.clonenode()
			 since all NodeObjects get destroyed when the corresponding XmlFileObject is destroyed, use this method to store a node for later use.

12-18-2011 Nando:
    Changed: internal handling of intrinsic weapons' unload.
    Removed: INTRINSIC property from Weapon template in itemdesc.cfg. An error occurs
             if it's set. Some shards might have forgot to set it, which would cause
             damage to intrinsic wrestling weapon. This is now handled automatically.
                                  
12-17-2011 Nando:
    Changed: boats.cfg entries are now "Name Graphic X Y <Z>", where Z is optional and
             defaults to zero.

12-17-2011 Tomi:
    Added:   Support for hued boats, use the normal .color r/w member to change the hue
             Patch Submitted by Agata

12-14-2011 Tomi:
    Changed: objtype vectors changed to maps to only reserve as much memory as there are
             itemdesc entries, not reserving memory for up to 4 billions of objtypes.
    Changed: boats.cfg entries changed from "Name Graphic X Y" to "Name Graphic X Y Z"
             because some of the new boat components requires different Z levels than the boat
			 itself.

12-13-2011 Austin:
    Added: Support for destroy scripts on multis.

12-13-2011 Tomi:
    Added: Support for HSA boats ( no smooth move yet, but now all boats are usable )
    Changed: boat.cfg to support new entries "Rope", "Wheel", "Hull", "Tiller", "Rudder", "Sails", "Storage", "Weaponslot"
             there can be more than 1 of each entry 
             the old entries "Tillerman", "Hold", "PortGangplankExtended", "PortGangplankRetracted", "StarboarGangplankExtended", "StarboardGangplankRetracted" support just 1 entry each or the boat members get broken
    Added: ReadOnly members for boats
           .components returns an array of ItemRefs of all the components on the boat
           .hull returns an array of ItemRefs of all the hull components on the boat, or empty array if none.
           .rope returns an array of ItemRefs of all the rope components on the boat, or empty array if none.
           .wheel returns an array of ItemRefs of all the wheel components on the boat, or empty array if none.
           .rudder returns an array of ItemRefs of all the rudder components on the boat, or empty array if none.
           .tiller returns an array of ItemRefs of all the tiller components on the boat, or empty array if none.
           .sails returns an array of ItemRefs of all the sails components on the boat, or empty array if none.
           .storage returns an array of ItemRefs of all the storage components on the boat, or empty array if none.
           .weaponslot returns an array of ItemRefs of all the weaponslot components on the boat, or empty array if none.
    Changed extobj.cfg to support new entries for all the new boat component types and changed the default value of all entries.
            extobj.cfg entries with default values:
                   Tillerman=0x1F010
                   Port_Plank=0x1F011
                   Starboard_Plank=0x1F012
                   Hold=0x1F013
                   Rope=0x1F014
                   Wheel=0x1F015
                   Hull=0x1F016
                   Tiller=0x1F017
                   Rudder=0x1F018
                   Sails=0x1F019
                   Storage=0x1F01A
                   Weaponslot=0x1F01B

                   Wrestling=0x1F020
                   Mount=0x1F021

                   Secure_Trade_Container=0x1FF01
                   Wornitems_Container=0x1FF02
    Note:   extobj entries just let you define the objtypes, all of these still have to be defined in itemdescs for boats to work correctly.
            extobj.cfg is now shipped with the core.

12-05-2011 Tomi:
    Fixed:  Door methods .open() and .close() were working opposite what they should.

12-04-2011 Tomi:
    Fixed:  EA broke the prof.txt with the latest clients adding "Evaluating Intelligence" and "Spirit Speak" with spaces that resulted into skillnumber 0xFF and skillvalue 0
    Added:  UO::UpdateItem( item );
            updates the item to every client in range, good to use for example after returning 1 in some packethook and the item get invisible.

12-01-2011 Nando:
    Fixed: Client hanging after having his connection refused on login. I recommend testing
           different ways of having a client disconnected, like acct.disable(), .ban() and others.

12-01-2011 MuadDib:
  Changed: UoClientGeneral.maxskills changed to unsigned short. Few places in loops with it changed to use same for the loop counter.

11-30-2011 Tomi:
    Fixed: Old style spellbooks.

11-29-2011 MuadDib:
    Fixed: Fixed a script breaker caused by inserting new TypeOfInt() constants in the middle of the Enum. Moved SQL Types to end of list.
    Added: Added SQL entries to the Basic.EM since were missing.

11-29-2011 Tomi:
  Added:   Opengraphic itemdesc entry for Doors ( optional parameter, no need to define if you dont want to use the built in methods )
  Changed: how built in .open() .close() and .toggle() methods works. The now read the graphic what to open to from itemdesc instead of just checking with & 0x1.
           this makes those methods works for new doors too and not only T2A era doors.
  Changed: basic::CChrz( intarray ) to basic::CChrz( intarray, break_at_first_null := 0 );
           if the break_at_first_null parameter is 0 it uses the old behaviour to just skip the nulls and still convert everything
           if the break_at_first_null parameter is set to 1 it stops the conversion to string at the first null it finds.
  Changed: All Write(ctBeu16( calls for graphics and colors to use WriteFlipped, this seems to have fixed the assertion errors that occured with removal of the color_ext and graphic_ext

11-28-2011 MuadDib:
  Removed: UObject->Color_Ext : Removed, and when used is replaced with ctBEu16() calls. This includes read/write of /data files.
  Removed: Last of any UOX references for imports. Most was all commented, a few empty refences was also left. All now removed completely.

11-27-2011 MuadDib:
  Removed: UObject->Graphic_Ext : Removed, and when used is replaced with ctBEu16() calls. This includes read/write of /data files.
     Note: UObject->Serial_Ext will not be removed as previously considered, due to the orphan system making primary use of this.

11-27-2011 Nando:
    Fixed: corrected memory leak in cfgfile::GetConfigStringDictionary(...)

11-26-2011 Tomi:
    Changed: CascZ( str ) to CascZ( str, nullterm := 0 )
         if nullterm 1 it adds the terminating 0 in the end of array.
    Note:	 Recompile of scripts needed.

11-24-2011 Tomi:
    Added:  Support for Mysticism and BardMasteries spell books
        Mysticism Spell ID's 678 -> 693 and BardMasteries spell ID's 701+

11-23-2011 Tomi:
    Added:  can_insert and on_insert scripts for Tradewindows

11-22-2011 Kevin:
    Added:	pol/sqlscrobj.cpp pol/sqlscrobj.h
  Changed:	pol/module/sqlmod.cpp pol/module/sqlmod.h
            Add preliminary MySQL database support.
            New eScript objects: BSQLConnection, BSQLResultSet, BSQLRow 
            Added several new sql module functions:
                mysql_connect(host,username,password);
                mysql_query(connection,query);
                mysql_fetch_row(result);
                mysql_affected_rows(result);
                mysql_num_fields(result);
                mysql_num_rows(result);
                mysql_select_db(connection,database);
                mysql_field_name(result,column_index);
                mysql_free_result(result);
                mysql_close(connection);
            In order to build with MySQL support, define the HAVE_MYSQL preprocessor directive in your build configuration.
            You must have the MySQL headers and libraries installed. 
            Only really tested with dynamically linking mysql libraries on Linux.
            
    Added:	pol/network/auxclient.h
  Changed:	pol/network/auxclient.cpp pol/module/osmod.cpp pol/module/osmod.h clib/socketsvc.cpp clib/socketsvc.h
            Moved AuxClient-related classes to its own header file (shared between auxclient.cpp and osmod.cpp)
            Implemented os::OpenConnection() to create outgoing TCP/IP connections. 
            
  Changed:	runecl/runecl.cpp
            Added the sql module to runecl to allow quick testing

  Changed:	pol/uoscrobj.cpp pol/mobile/charactr.cpp pol/mobile/character.h bscript/parser.cpp bscript/objmembers.h
            Added read/write property "mountedsteps" for mobiles. Represents number of steps taken while character was mounted.

  Changed:	bscript/parser.cpp
            Declaring an array only using "{}" will show a compiler warning; please explicitly state 'array', 'struct', or 'dictionary' 
  Changed:	pol/pol.cpp
            If using Linux, remove pol.pid on shutdown of pol.

  Changed:	pol/uoexec.h pol/scrsched.cpp
            Added script option "AUXSVC_ASSUME_STRING" which will allow aux service connections to send and receive non-packed strings.

  Changed:	ecompile/ecompile.cpp
            If using Linux, a slash ("/") cannot be used to define ecompile options to allow support for absolute filenames.

  Changed:	bscript/object.cpp bscript/bobject.h
            Implemented array operation MultiSubscript. Will return a splice of an array, eg:
                array{"a","b","c","d","e"}[2,4] will return array{"b","c","d"}
                 

11-12-2011 Tomi:
    Added:	 Pol/config/extobj.cfg
                 Values it accept now and default values are

                 Tillerman=0xF010
                 Port_Plank=0xF011
                 Starboard_Plank=0xF012
                 Hold=0xF013
                 Wrestling=0xF020
                 Mount=0xF021
                 Secure_Trade_Container=0xFF01
                 Wornitems_Container=0xFF02
    Note:	 These values HAVE TO BE > pol.cfg max_tile_id and the same as objtype for them in itemdescs
    Added:	 UOExpansion HSA server sends now 0x387DF

11-11-2011 Tomi:
    Changed:     Objtypes are now from 2 up to max_objtype from pol.cfg
    Note:	 if objtypes <= pol.cfg max_tile_id and no graphic defined in itemdesc Pol uses objtype as graphic.
                 Multis and custom items should all be moved to > pol.cfg max_tile_id
    Added:       support for new 0xA9 packet for clients >= 7.0.13.0
    Changed:     startlocs.cfg default values for MapID ( 0 ) and Cliloc ( 1075072 which is the Yew town information )
    Example:
                 StartingLocation Yew
                 {
                        City		Yew
                        Description	Town Center
                        Coordinate	535,992,0
                        MapID		0
                        Cliloc		1075072
                 }
    Note: 	 MapID is the same number as in mapX.mul files
                 Cliloc values are the description of the start locations
                 Newest clients has max stats during char creation 90 

11-06-2011 Tomi:
    Added:  pol.cfg setting MaxObjtype <default 0x20000>
    Note:   can be any value between 0x20000 and 0xFFFFFFFF

10-26-2011 Tomi:
    Added:	support for clients >= 7.0.16.0 ( 2D ) char create packet 0xF8
            Enchanced clients still use packet 0x8D

10-15-2011 Austin:
    Added: .doubleclickrange for items (read only).

09-03-2011 Turley:
     Added: DestroyMulti(house) returns error "House currently being customized."
     Added: house.cancelediting(chr, drop_changes) will stop editing mode.
            drop_changes 1/0 if true drops all non committed changes
            Errors: "House is not custom","House is currently not been edited","Character is not editing this house"
     Added: Syshook CloseCustomHouse(mobile, house)
            called after client quits editing, or when house.cancelediting() is called
            return value is ignored
     Added: servspecopt.cfg
            "SpeedHack_MountRunDelay"  default 80 ms
            "SpeedHack_MountWalkDelay" default 180 ms
            "SpeedHack_FootRunDelay"   default 180 ms
            "SpeedHack_FootWalkDelay"  default 380 ms
            Change them on your own risk

08-08-2011 Austin:
     Added: servspecopt.cfg flag "ScriptedMerchantHandlers" default is 0 which results in no change in behavior. 
           If enabled, the below change will come into effect:
     Changed: When a player buys something from a merchant the core will not longer handle taking gold from the player, and moving items to the players pack.
              When the event for EVID_MERCHANT_SOLD and EVID_MERCHANT_BOUGHT is sent it will be a struct containing the following struct:
              struct.type = EVID_MERCHANT_SOLD or EVID_MERCHANT_BOUGHT
              struct.source = player buying 
              struct.shoppinglist = array( struct.item, struct.amount )
              
              The shopping list items will still be items in the merchant's container.
              It is up to the script to split the items from the stacks there and move them to the player's pack.
              It is also up to the script to handle gold checks and consumption.
     
    Added: item.SplitStackInto(container, amount) 
              Will split the item into 2 stacks. Returns a reference to the new stack made from item. Places new stack into the container.
     Added: item.SplitStackAt(x, y, z, realm, amount)
              Will split the item into 2 stacks. Returns a reference to the new stack made from item. Places new stack at the coordinates.
     
05-19-2011 Turley:
     Added: CustomHousing Support (beta)
            officially added uo::SendHousingTool( who, house );
     Added: script call of "scripts/misc/customhousecommit.ecl" on commit (noncritical)
            params: ( who, house, houseelemarray )
            houseelem = struct{graphic,xoffset,yoffset,z}
            to get the real coords from an elem add house.x/y
            called after client presses the commit button
            to accept the changes call new method house.acceptcommit(chr,1) or house.acceptcommit(chr,0) to drop the commit 
            main purpose should be calculation of cost (with delta support for later changes),
            link establishing of houseteleporters (0x181D - 0x1828)
            and adding a signhanger/sign if you didnt added it during multifoundation buildup
            Doors and Teleporters are added to house components as normal items without any special treatment
            so dont forget to add scripts/itemdesc entries
     Added: member multi.house_parts
            returns array of structs{graphic,xoffset,yoffset,z} or error if not a custom house, or currently been edited
            to get the real coords from an elem add house.x/y
     Added: method multi.addhousepart(graphic,xoffset,yoffset,z) returns true or error
     Added: method multi.erasehousepart(graphic,xoffset,yoffset,z) returns true or error
     Added: members multi.house_editing / who.house_editing returns true if house is currently been edited / who is currently editing
      Note: house.setcustom(1) is needed before SendHousingTool() works
      Note: during editing chr is only allowed to walk inside the house
            all components which are not invisible get removed from component list during edit and added to design
            (not invisible to give the chance to eg protect a house sign from been removed from the editing char)
            any item inside the house will be invisible for the chr
            any other mobiles get moved outside the house
      Note: param houseelemarray in script call is the current list of houseparts, 
            multi.house_parts gives you the last stored list
      Note: until no house.acceptcommit() is called and start of commitscript no new SendHousingTool() for this house is allowed

05-04-2011 Turley:
     Fixed: Questarrow packet

04-30-2011 Turley:
     Fixed: enter/leave-events for NPCs (OWHorus)
     Fixed: diagonal moves in npc::CanMove() and uo::FindPath() (OWHorus)

04-03-2011 Turley:
     Added: uotool param checkmultis
            prints infos about used center item

03-12-2011 Turley:
     Fixed: npc:SayUC() sends SpeechEvent for do_event==SAY_DOEVENT_ENABLE
   Changed: removed warning "No handler for skill.." and changed sysmsg to "That skill cannot be used directly."
            since most of the time the behaviour is wanted
     Added: basic::TypeOfInt( expr ) + basic.em constants
            returns like TypeOf() the type of given parameter, but returns instead of a string an integer (see basic.em constants)
            since integer comparison are way faster then string comparison this function should always be used for comparisons

03-10-2011 Turley:
     Added: pol.cfg AccountDataSave (default -1)
            Values:
            -1 : old behaviour, saves accounts.txt immediately after an account change
             0 : saves only during worldsave (if needed)
            >0 : saves every X seconds and during worldsave (if needed)

02-15-2011 Turley:
   Changed: "in" keyword now returns the arrayindex or 0 if no match was found

02-05-2011 Turley:
     Fixed: no exception will be thrown if region enter/leavescript doesnt exist
     Fixed: windows trayicon

10-22-2010 Turley:
     Fixed: UOHSA packet changes
     Added: mobile.clienttype / client.clienttype HSA flag 0x200

09-06-2010 Turley:
     Added: TinyXML based xml reading/writing
     Added: file::OpenXMLFile(filename)
             opens given filename and returns XMLFile object
             fileaccess.cfg is checked
            file::CreateXMLFile()
             creates an empty XMLFile object
            XMLFile.setxmldeclaration(string version, string encoding, string standalone)
             sets xmldeclaration eg <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
            XMLFile.appendxmlnode(string value, struct{attributes})
             appends Node with name value and given attributes (key=name, value=value)
            XMLFile.appendxmlcomment(string value)
             appends Comment
            XMLFile.removexmlnode(string value)
             removes first node of given value
            XMLFile.savexml(string filename)
             saves to filename
             fileaccess.cfg is checked
            XMLFile.xmltostring([string indent])
             returns the xml file as String with given indent string {default "\t"}
            XMLFile[string] returns first node of given name
            XMLFile[integer] returns node of given index (1-based)
     Added: XMLNode object
            XMLNode.attributes
             returns XMLAttributes object
            XMLNode.type
             returns type string 
             (XMLComment, XMLDeclaration, XMLDocument, XMLElement, XMLText, XMLTypeCount, XMLUnknown)
            XMLNode.firstxmlchild([string value])
             returns first child or first child of given name
            XMLNode.nextxmlsibling([string value])
             returns next sibling, or next sibling of given name
            XMLNode.appendxmlnode(string value, struct{attributes})
             appends Node with name value and given attributes (key=name, value=value)
            XMLNode.appendxmlcomment(string value)
             appends Comment
            XMLNode.setxmlattribute(struct{attributes})
             sets attributes for node
            XMLNode.removexmlattribute(string key)
             removes attribute of given key
            XMLNode.removexmlnode(string value)
             removes first node of given value
            XMLNode.appendxmltext(string text)
             appends text to node
            XMLNode[string] returns first node of given name
            XMLNode[integer] returns node of given index (1-based)
     Added: XMLAttributes object
            XMLAttributes.propnames()
             returns Array of all attribute names
            XMLAttributes[string] returns value of given attribute name
     Added: foreach loop support:
            XMLFile, XMLNode: iterates over all child Nodes
            iterator is XMLNode object, "_iterator_iter" is integer index
            XMlAttributes: iterates over all attributes
            iterator is a struct with key=attributename, value=attributevalue
            "_iterator_iter" is integer index
      Note: small examples:
            one way to read an xml file:
            <?xml version="1.0" ?>
            <root>
             <Hello>World</Hello>
             <!--Comment-->
             <nodetwo i="1" />
            </root>
            var file:=OpenXMLFile("helloworld.xml");
            parsenode(file,"");
            function parsenode(node,i)
             foreach blubb in node
              syslog(i+cstr(blubb)+" ["+blubb.type+"] ("+cstr(_blubb_iter)+")");
              parseattrib(blubb,i+"-");
              parsenode(blubb,i+" ");
             endforeach
            endfunction

            function parseattrib(node,i)
             foreach ele in (node.attributes)
              syslog(i+cstr(ele)+" ("+_ele_iter+")");
             endforeach
            endfunction
            
            one way how to create such an file:
            var file:=CreateXMLFile();
            file.setxmldeclaration("1.0","","");
            file.appendxmlnode("root");
            file["root"].appendxmlnode("Hello");
            file["root"]["Hello"].appendxmltext("World");
            file["root"].appendxmlcomment("Comment");
            file["root"].appendxmlnode("nodetwo",struct{i:=1});
            file.savexml("helloworld.xml");
            
08-20-2010 Turley:
     Fixed: util:StrFormatTime() checks if format string is correct and if not returns "Invalid Format String." error
            instead of server crash

08-09-2010 Turley:
     Fixed: exported function calls a different exported function stops execution (eg repsys functions in same script)

06-22-2010 Turley:
     Fixed: uo::RestartScript() wakes up old script so it stops immediately

06-19-2010 Turley:
     Fixed: uo::SendDialogGump SENDDIALOGMENU_FORCE_OLD for 2d 7.x clients (UOKR & UOSA clients ignore the flag)

03-27-2010 Turley:
     Added: os::Start_Skill_Script( chr, attr_name, script_name := "", param := 0 )
            starts for given chr and attr_name definied script (overrideable with param script_name)
            param is any UObject given to skill script as second param (first is chr)
            performs the same checks like normal skillusage (death,frozen,skilldelay,...)
            (Tomi)
     
03-26-2010 Turley:
   Changed: uo::DisconnectClient() now accepts client or character object (Tomi)

03-24-2010 Turley:
     Added: ClientRef object
            pkt.sendpacket() & SendPacket() now accepts client or character
            r/o members:
            ip, acctname, clientversion, clientinfo, clienttype, clientver_detail, uo_expansion_client
            methods:
            compareversion()
            used as prelogin param for packethooks instead of old struct (so you can send packets)
     Added: character.client
            returns ClientRef object or error
     Note:  This or next release duplicate members/methods get deleted from chr (except acctname)
            
03-17-2010 Turley:
     Fixed: Trim: left&right doesnt return empty string if complete string has to be trimmed

03-12-2010 Turley:
     Fixed: uoconvert - default value of MaxTileID (0x3FFF)
     Added: uoconvert param {maxtileid=0x3FFF/0x7FFF} (if uodata= param is given pol.cfg never gets read)

02-20-2010 Turley:
   Changed: ListStaticsInBox,ListObjectsInBox,ListMultisInBox now swap x,y,z values if in wrong order
     Added: uo::DistanceEuclidean(obj1, obj2) & uo::CoordinateDistanceEuclidean(x1, y1, x2, y2)
            returns the Euclidean distance as double ( sqrt(pow(x1-x2,2)+pow(y1-y2,2)) )

02-18-2010 Turley:
     Added: (Tomi) Syshook UnHide(mobile)
            return values 0 stops the char from unhiding and 1 let the core process it.
     Added: (Tomi) "DisableCoreChecks" 0/1 (default 0) to each attribute entry in attribute.cfg
            if true the core will not check during skill_use ( from skillwindow ) for active skills, 
            active spells, frozen, paralyzed or delay
            if false core will check everything as it does now.
   Changed: Increased Maximum UO SkillID to 57 (default value of uoclient::MaxSkillID)

02-17-2010 Turley:
     Fixed: direct usage of struct/dictionary initializer in array/dictionary/struct definition
            eg: var dict:=dictionary; dict["blubb"]:=struct{a:=1};

02-16-2010 Turley:
     Fixed: StrReplace,SubStrReplace return "Invalid parameter type" instead of crashing if non string object
            is given as to_replace, replace_with
     Fixed: Several small memoryleaks

02-04-2010 Turley:
     Added: polcfg:DiscardOldEvents 1/0 {default 0}
            if set instead of discarding new event if queue is full it discards oldest event and adds the new event
   Changed: "Event queue is full.." only prints if polcfg.LogLevel >= 11

02-03-2010 Turley:
     Added: MethodScript support for mobiles
            NPC: npcdesc.cfg MethodScript entry
            Character: uoclient.cfg section "General" MethodScript entry

02-01-2010 Turley:
     Added: multi create additionally checks for valid realm coord of the corners
   Changed: uotool staticdefrag [britannia] (removed "realm=")
     Added: uotool formatdesc [desc] little helper prints singular & plural form of given desc
     
01-22-2010 Turley:
     Added: Speedhack Prevention System
     Added: ssopt::SpeedhackPrevention 0/1 (default 0)
     Added: chr priv "speedhack" disables Speedhack Prevention for chr

01-15-2010 Turley:
     Added: (Tomi) chr priv "runwhilestealth" you can run while you are in stealth for as many stealthsteps you have
     Added: (Tomi) new npcdesc entry "SaveOnExit" 0/1 ( defaults to 1 )
      Note: this also means that SaveOnExit can be definied in the override_properties struct
   Changed: vitals::ApplyDamage( mobile, damage, userepsys := DAMAGE_USE_REPSYS, send_damage := DAMAGE_USE_DEFAULT )
            vitals::ApplyRawDamage( character, hits, userepsys := DAMAGE_USE_REPSYS, send_damage := DAMAGE_USE_DEFAULT )
            const DAMAGE_NO_SHOW := 0;
            const DAMAGE_SHOW := 1;
            const DAMAGE_USE_DEFAULT := 2;
            DAMAGE_USE_DEFAULT uses the SendDamagePacket setting from combat.cfg (Tomi)
     Added: uo::SendOverallSeason( season_id, playsound := 1 )
            Used to send the Season packet 0xBC to all clients logged on.
            This function doesnt resend the lightlevel or weather after it sends season, that has to be done by scripts.
            chr.setseason( season_id, playsound )
            Used to send the Season packet 0xBC to a single character.
            This method doesnt resend the lightlevel or weather after it sends season, that has to be done by scripts.
            (Tomi)
   Changed: (Tomi) uo::SpeakPowerWords( who, spellid, font := _DEFAULT_TEXT_FONT, color := _DEFAULT_TEXT_COLOR) 
            font, color like every speech function

01-14-2010 Turley:
     Fixed: (Arkham) ip byteorder for gameserverlist if hostname is given
   Changed: (Tomi) gargoyle char create equips 0x1F03 robe
     Added: (Tomi) ssopt.NewbieStartingEquipment 1/0 (default 1) to determine if equipped items 
            created during the character creation should be newbied or not.
   Changed: misc/oncreate.src added third param profession 
            some clients doesnt send skillvalues if profession is given now core doesnt stop char creation, 
            based on third param you can set the skillvalues in oncreate
     Added: more errorchecks to char create, it now checks if hair/beard/face can be equipped (fixes crash with latest OSI
            tiledata where facial horn has the same layer as "normal" horn)
     Added: Combatcfg:AttackWhileFrozen 1/0 (default 1) if set to false attack checks if chr is frozen or paralyzed
     
01-12-2010 Turley:
     Added: on Profile opening and update request "scripts/misc/charprofile.ecl" is called
            params are character, of_who, mode,uctext
            if mode==0 (request) uctext is 0
            if mode==1 (update) uctext is new unicode array
            both modes ignore the return value
            - Tomi
     Added: uo::SendCharProfile( character, of_who, title, uneditable_text := CHARPROFILE_NO_UNEDITABLE_TEXT, editable_text := CHARPROFILE_NO_EDITABLE_TEXT )
            will send the serverside charprofile packet back to client and display it for the player.
            uneditable_text & editable_text are unicode arrays
            constants are:
            const CHARPROFILE_NO_UNEDITABLE_TEXT := array;
            const CHARPROFILE_NO_EDITABLE_TEXT := array;
            - Tomi
      Note: Only a script interface for making a fully working CharProfile without packethooks.
            Not a fully working charprofile system controlled by the core, ALL text strings still have to be 
            stored somewhere by scripts.
            
01-01-2010 Nando:
     Added: (Tomi) New itemdesc property "StackLimit", defines the maximum stack
            of that item (lower than 60k). If not defined, will default to 60000.
      Note: Happy new year. :) 
This time we're skipping the FreeBSD release.

Windows: http://downloads.polserver.com/Core/Windows/099/
Linux: http://downloads.polserver.com/Core/Linux/099/
xeon
Forum Regular
Posts: 338
Joined: Fri Oct 31, 2008 3:18 am
Location: Italy

Re: POL099 Beta 2013-09-03

Post by xeon »

Great!!

Just to be sure, if I update my SVN sources and recompile, it's the same thing as using your files, right?

By the way, I see also a x64 version!?!?
Nando
POL Developer
Posts: 282
Joined: Wed Sep 17, 2008 6:53 pm
Contact:

Re: POL099 Beta 2013-09-03

Post by Nando »

It's essentially the same, but we won't be able to debug if you have a core dump.

POL has been supporting 64 bit for some time already, now it's time for a 64 bit beta ;)
Yukiko
Distro Developer
Posts: 2825
Joined: Thu Feb 02, 2006 1:41 pm
Location: San Antonio, Texas
Contact:

Re: POL099 Beta 2013-09-03

Post by Yukiko »

Nando,
Thanks. Just curious, what would we have to do if we compiled the SVN to be able to give you a debugable core dump? Would enabling a debug build in VS accomplish this? Mind you this is just for my curiosity only.
xeon
Forum Regular
Posts: 338
Joined: Fri Oct 31, 2008 3:18 am
Location: Italy

Re: POL099 Beta 2013-09-03

Post by xeon »

...unless I give you my .pdb files, right? :P

Still about x64, it's transparent for the script using a x64 pol instead of a x86? There's some cfg to change?
Nando
POL Developer
Posts: 282
Joined: Wed Sep 17, 2008 6:53 pm
Contact:

Re: POL099 Beta 2013-09-03

Post by Nando »

Yukiko, the release is enough. You need to make sure that the .pdb files are generated, though this is the default. You'd need to share the sources, .pdb and .exe; all generated at the same time as the program which generated the core dump. Making those beta builds we take care that everything is archived.

The 64 bit change is just for pol.exe, allowing it to access more memory. There's no change in escript, so no configuration needed (ints are still limited to 32bit, etc). If you have a 64-bit system, the behavior of 32 and 64-bit POL should be the same.
Turley
POL Developer
Posts: 670
Joined: Sun Feb 05, 2006 4:45 am

Re: POL099 Beta 2013-09-03

Post by Turley »

Nando wrote:The 64 bit change is just for pol.exe, allowing it to access more memory. There's no change in escript, so no configuration needed (ints are still limited to 32bit, etc). If you have a 64-bit system, the behavior of 32 and 64-bit POL should be the same.
not 100% correct. 64bit should be also faster then the 32bit with an x64 system.
xeon
Forum Regular
Posts: 338
Joined: Fri Oct 31, 2008 3:18 am
Location: Italy

Re: POL099 Beta 2013-09-03

Post by xeon »

I've just seen it
Added: Container RW members .max_items_mod( -32,768 to 32,767 ) .max_weight_mod( -32,768 to 32,767 ) and .max_slots_mod( -128 to 127 ) ( default values 0 )
:D
xeon
Forum Regular
Posts: 338
Joined: Fri Oct 31, 2008 3:18 am
Location: Italy

Re: POL099 Beta 2013-09-03

Post by xeon »

Ok, upgraded to rev650, pol built and upped, now testing it :)
OWHorus
Grandmaster Poster
Posts: 105
Joined: Sat Feb 04, 2006 1:24 pm
Location: Vienna, Austria

Thanks @ polteam for the heads up - POL099 Beta 2013-09-03!

Post by OWHorus »

OWHorus
Zaksmeer
Grandmaster Poster
Posts: 187
Joined: Mon Nov 19, 2012 8:32 pm

Re: POL099 Beta 2013-09-03

Post by Zaksmeer »

Trying to build my own POL shard, but having problems finding the files to make it work under linux.
Such as uoconvert written for linux, because it will not run the executable windows one. Thats what it keeps telling me.

Any help finding the files?
Nando
POL Developer
Posts: 282
Joined: Wed Sep 17, 2008 6:53 pm
Contact:

Re: POL099 Beta 2013-09-03

Post by Nando »

In the ready-made package, and if you compile it yourself, uoconvert should be together with the pol binary. The Windows binaries won't run on Linux (unless you use Wine).

At the moment, it's best to compile the core yourself as we fixed many bugs since the last official binaries. The readme on Github (https://github.com/polserver/polserver) is quite easy to follow, let me know if you have trouble with the steps.
Zaksmeer
Grandmaster Poster
Posts: 187
Joined: Mon Nov 19, 2012 8:32 pm

Re: POL099 Beta 2013-09-03

Post by Zaksmeer »

If u know linux, how do I install the cmake compiler?
Zaksmeer
Grandmaster Poster
Posts: 187
Joined: Mon Nov 19, 2012 8:32 pm

Re: POL099 Beta 2013-09-03

Post by Zaksmeer »

I follow the instructions, but cmake cant find the compiler and make has no instructions.
Zaksmeer
Grandmaster Poster
Posts: 187
Joined: Mon Nov 19, 2012 8:32 pm

Re: POL099 Beta 2013-09-03

Post by Zaksmeer »

I just wish someone had a working Linux POL package instead of having to put one together.
Nando
POL Developer
Posts: 282
Joined: Wed Sep 17, 2008 6:53 pm
Contact:

Re: POL099 Beta 2013-09-03

Post by Nando »

Did you do this:

Code: Select all

cd pol-core/bin-build
./build_linux.sh
?

As far as I remember, this would create all needed binaries in the "bin/" folder. You may be missing some packages, though. Could you paste the output of the commands here and tell us which Linux you're using?

A ready-made package is long overdue, sorry.
Zaksmeer
Grandmaster Poster
Posts: 187
Joined: Mon Nov 19, 2012 8:32 pm

Re: POL099 Beta 2013-09-03

Post by Zaksmeer »

did that, and here is the output log.
I am posting the 7 page log as an attachment and a zip file of it.
Attachments
build.log.zip
(1.64 KiB) Downloaded 290 times
build.doc
(52.5 KiB) Downloaded 273 times
Zaksmeer
Grandmaster Poster
Posts: 187
Joined: Mon Nov 19, 2012 8:32 pm

Re: POL099 Beta 2013-09-03

Post by Zaksmeer »

I am using Ubuntu 14.04 LTS Server, command line only, no gui.
Turley
POL Developer
Posts: 670
Joined: Sun Feb 05, 2006 4:45 am

Re: POL099 Beta 2013-09-03

Post by Turley »

It looks like you have no compiler installed. You need gcc or clang.
You can check the prepareMachine.sh located in the devmachine folder for the needed dependencies. The sh file is meant for a fresh Ubuntu installation in an vagrant environment, but its a good starting point.
Post Reply