polserver/docs/development-changes.txt
Gabriele Tozzi 0d2237bbbf More on line endings normalization
Blame myself :P
2016-02-12 11:39:51 +01:00

335 lines
17 KiB
Text

Development Changes - stuff that really doesn't belong in core-changes.txt
------------------- (or, that does belong there, just not yet)
Format:
Date, Author, Files changed, Description of change
---
2013-09-02 Tomi
Added Uobject->setmember<type>(member constant, value) and UObject->getmember<type>(member constant)
These are for adding dynamic rw members stored in a map and using memory only when needed
These uses the constants from objmembers.h
Return value of a member defaults to 0 when it does not exist
As an example UArmor .ar_mod is now changed to use this system
2010-07-09 Nando
Fixed: strncpy(dst,src,n) does not always null-terminate the string dst. (in ssopt_parse_totalstat())
2009-08-18 MuadDib
Changed: Core now disconnects all online clients to initiate the cleanup sequence after data is saved during
shutdown. Should avoid any and all client/char/combat crashes during shutdown.
2009-08-03 MuadDib
Note: Remember, when working with adding new Message Handlers for incoming packets, if a packet has changed
since the original (structure), there is a special way for the core to know this. You need to set up
the new "struct" for it in the appropriate "pkt*.h" files, and for the MESSAGE_HANDLER line you need
to use MESSAGE_HANDLER_V2() instead. This registeres the second structure type of the packet in the
core's secondary Handler. See packet 0xB9 for one example and Drop Item packet for incoming.
2009-07-18 Turley
Changed: Shadowrealms have now an ID saved inside a map<id,realm*> used for threadsafe identification of
an deleted realm (decay)
Note: I think there is still a chance that decay thread can crash, maybe its better to only set a orphan flag
on DeleteRealm and destroy the realm inside the decay thread
2009-06-26 Turley
Fixed: Memoryleak inside datastore (no Deconstructors)
Fixed: (no idea if really) linux crash if http thread couldnt start removed passert check
2009-05-26 Turley
Fixed: (hopefully) crash on Shutdown inside schedule_attack() exit_signalled checks inside set_opponent()
to skip the functions
2009-03-30 Nando
Fixed: Character::start_script() will now return false if the passert() would be triggered. No need to
crash POL with a passert() if its recoverable. The passert() error was probably caused by the fact
that spells are scheduled to happen always in 'now', which is useless and unnecessary. It only opens
the possibility that the script will try to be run with another one already running... read to-do.txt
for 099 to see what I mean.
2009-03-22 MuadDib
Changed: void return_resources( u16 objtype, u16 amount ). Will now skip if exit_signalled is true. It was
causing crashes during shutdown due to item cleanup, and it trying to produce more world resources
for an item's cleanup after the ResourceDef was already emptied.
2009-03-05 Nando
Added: Custom house now has the correct packet handlers.
Added: Check on SendHousingTool() to check if the house is custom (must set with multi.setcustom(1))
Note: The system is still very insecure, and should be made more customizable. Overall, what we had
of code is working and bug free (so it seems). :)
2009-03-05 Nando
Added: send_sysmessage_cl_affix(), say_above_cl_affix() and private_say_above_cl_affix() to clfunc.cpp.
Note: need to add the eScript functions in clemod.cpp
2009-03-01 Nando
Changed: Thread status report will now say how many child_threads and what's the size() of ThreadMap
contents.
2009-02-25 MuadDib
Changed: Rewrote transmit_to_inrange and transmit to others. They now use a bool of true/false
to decide if this is going to a >= 6017 client.
2009-02-02 MuadDib
* Added: Initial code for AOS Resistances. These are purely for storage, mods, and Statmsg
handling right now. Still need to throw in checks in core cmbt and places that will
need to know which to check for stuff like Statmsg does now.
2009-01-26 Nando
* Added: Cleanup of Repsys Hooks
* Changed: VersionClientStruct is now declared on the stack when needed, instead of the heap.
(Like ConfigElem's)
2009-01-26 Turley
* Added: Cleanup of syshooks
2009-01-25 Turley
* Added:
(#define LEAKFINDER) - Added to xmain.cpp. Use this to detect memory leaks in
the core. Remember, this must be uncommented, and compiled using Debug mode, not
Release. :)
2009-01-25 MuadDib
* Changed:
is_banned_ips() no longer loads the bannedips.cfg file every client
login attempt. Now it is loaded via new function in bannedips.cpp and
a struct/vector holds the cfg info (created in bannedips.h that I added).
It reloads it with reload configuration too now. Much cleaner.
2009-01-22 Turley
* Fixed:
Cleanup of
Spells::spellcircles & spells2
UOSkills::uoskills
PacketHookData::clean_packethooks() to call the deconstructor
ItemDesc::objtype_byname & old_objtype_conversions
Pkg::packages_byname
Polwww::mime_types
2009-01-21 Turley
* Fixed: Cleanup of
Attribute::attributes_byname & attributes
BoatShapes::boatshapes
CmdLevel::cmdlevels2
* Added: added resourcedefs.clear() to Resource::clean_resources()
* Changed: changed delete_all(vitals) to Vital::clean_vital() to also cleanup vitals_byname
* Note: never try to delete a vector like *_byname which contains aliases results in an crash cause
it tries to access bad pointer...
2009-01-20 Nando
* Fixed: Leak in RegionGroup, was missing deleting all the Region's from regions_ vector. :)
* Fixed: clean_resources() from resource.cpp was calling "delete[] (*itr).second", but
it should be "delete (*itr).second" as far as I know, as it's being allocated by
calling "new something" and not "new something[count]". :)
2009-01-19 Nando
* Fixed: unload_packages() wasn't being called in pol.cpp during cleanup.
* Fixed: unload_aux_services() wasn't being called in pol.cpp during cleanup, nor was it prototyped
there. One less leak. Thanks Turley for running the leak analyzer! ;)
2009-01-18 Nando
* Added: clean_multidefs() will now run at the end of cleanup_vars().
* Fixed: 'vitals' wasn't being deleted. Added delete_all(vitals) to uvars.cpp.
* Added: There was no ~Vital(). Added one to delete the exported functions.
* Fixed: ~Realm() was crashing because of delete[] *zone instead of delete[] zone. :)
* Fixed: the vector<Realm*>* Realms was leaking on shutdown. Added delete_all(*Realms) and delete Realms
to the end of cleanup_vars().
* Added: clean_multidefs() to multidef.cpp. Just need to find a good place to call it...
* Note: anti-leak brigade began today.
2008-12-31 Nando
* Fixed: Internal webserver's thread wasn't using pthread_exit / _endthreadex,
and never called threadmap::Register() if WIN32 was defined. (Maybe
change www to use threadhelp::start_thread()?)
* Note: This fix will possibly give us information about zombie connections... *hopeful*
* Added: Even though I think run_thread() with no args in threadhelp.cpp is never called, added
error printing when catching an exception.
2008-12-16 MuadDib
* Note: A Function that returns a BObject/BObjectImp that is not set to a variable
or passed directly to a calling eScript causes a memory leak.
aka, if not done like : return SetSize(newsize); // where SetSize returns BObjectImp
instead done like : SetSize(newsize); // where SetSize returns BObjectImp
2007-03-08 Shinigami
* Added pthread_exit and _endhreadex to handle thread closing as intended
2007-01-01 MuadDib
* NOTE: In standingheight checks there is a nasty bug. Items NOT locked down
(unmovable), are NOT being checked correctly to block movement.
2006-10-07 Shinigami
* FreeBSD must use stdlib.h instead of malloc.h.
Linux can use stdlib.h but malloc_usable_size is decleared in malloc.h only.
Win can use stdlib.h but _HEAPINFO is decleared in malloc.h only.
* FreeBSD needs Port libexecinfo to support backtrace functionality.
* FreeBSD 6.1 doesn't know malloc_usable_size - Counter bytes_allocated disabled.
Upcoming FreeBSD 7 will support it.
* FreeBSD doesn't know libc-version.h - Version Check disabled.
2006-08-16 Austin
* Improved error report message for armrzone.cfg on startup.
* Moved the call to close the system tray to the top of the x_maininner() function in pol.cpp
I called it with atexit() so any time POL does an assert, exit, etc. it will remove the icon, now.
It still wont remove it if the user clicks the x button to close the console.. need to research
windows events for that.
2006-08-10 Austin
* Startup data load changes:
1. Fixed a crash that would occur when loading storage.txt if an item was omitted.
2. If an item belongs in a container or on a character and neither are present and IgnoreLoadErrors
is enabled, the item will be removed, rather than halting POL startup.
3. If an item has an undefined objtype and IgnoreLoadErrors is enabled, POL will not halt on startup.
2006-06-23 MuadDib
* Moved more of the tooltip code to a new tooltip.h/cpp file setup for better
organization.
2006-06-17 Austin
* BIG improvements to uoscrobj.cpp
Will convert the string into a token equivalent then use that part of the code.
This should cause a teensy speed-up as well as the elimination of a lot of redundant code.
2006-06-15 Austin
* bool FindNpcTemplate( const char *template_name, ConfigFile& cf, ConfigElem& elem )
This function is still used by stuff, so I moved it from textcmd.cpp to npctemplate.cpp
* Improved code for GetConfigStringDictionary() to directly use String(string)
* Removed core support for the 'showadv' privilege (not used anymore)
2006-06-10 MuadDib
Removed Totally removed the need for useskill.h in core. It was used for depreciated
stat gain functions.
2006-05-30 MuadDib
Changed In spells.cpp, added support for the scroll objtypes of SE and ML spellbook
types. However, in the "school" 3 entry, it is a copy of magery. This is just
as a placeholder, because thus far no book can be found that uses the 301+
spellid range on OSI.
2006-05-24 Shinigami
Extended progverstr and buildtagstr upto 64 chars to hold Code names.
2005-12-05 MuadDib
Changed How realms are handled with internal_MoveItem. Now you send the new realm
to the function (updated Container move func also) instead of oldrealm. Oldrealm
handling is done in the move function so as to properly replace the realm member
if an item is not sucessfully moved.
Changed How ~ItemGivenEvent treats the GivenTime Cprop in order for it to properly compare
it to the given_time_ member.
Changed Changed u8 initialization of client_lang member in the 0xBF packet handler to
char initialization for compatibility and ease of reading.
2005-11-26 Shinigami
Changed "strcmp" into "stricmp" to suppress Script Errors.
2005-11-14 Austin
Added internal_InBoxAreaChecks(x1, y1, z1, x2, y2, x2, realm); to uoemod.h and uoemod.cpp
Function is responsible for adjusting coordinates to fit within the realm.
2005-10-17 Austin
Added uoemod4.cpp
Moved Move* uo.em functions to here.
Moved internal_MoveItem() to uoemod4.cpp
Added internal_MoveBoat, internal_MoveCharacter, internal_MoveContainer to uoemod4.cpp
2005-09-10 Austin
Added to pkg.cpp GetPackageConfigPath(Package* pkg, string filename)
Will use in the future to more easily check if a config should be read from
pkgdir/config/config.cfg or /pkgdir/config.cfg. Too much code would need to be
changed to make it work properly with cfgfile.em for 096 but for now it does help
reduce some redundant code elsewhere.
2005-08-26 Austin
Added lastx and lasty setting at the bottom of char_select() in pol.cpp
to fix a problem with realm switching after logging in.
Renamed inform_logout to inform_leftarea for better reusablility.
Renamed NpcPropagateLogOut to NpcPropagateLeftArea for better reusability.
Added distance check to inform_leftarea.
Added a NpcPropagateLeftArea line to uoemod2.cpp when a mobile changes realms.
2005-08-25 Austin
Moved the pol_distance(x1, y1, x2, y2) function from npc.cpp to ufunc.cpp
Moved its prototype from uoemod to ufunc.h
Move was made so that it sits next to pol_distance(character, object) for easier
function overloading.
2005-07-04 Shinigami
Memory leak inside Script-Cache (scrstore::ScriptStorage)... (is not fixed, just detected)
it's the same leak type than inside Read-/UnloadConfigFile() - but not critical for live shards
2005-07-01 Shinigami
Memory leak inside Read-/UnloadConfigFile() is not really fixed!
Core now never loads unmodified cfg files again into memory, and this will stop huge memory usage.
Old, but still loaded cfg files are moved to pol/cfgrepos.cpp:oldcfgfiles.
We have to think over... it's a problem with script-inside references...
2005-06-30 Shinigami
Memory leak inside BLong found (most BLong's gets destroyed on Shutdown only).
fixed_allocator is a little bit critical too, but the advantages (grouping smaller requests)
are greater than the disadvantages (blocks don't get destroyed on shutdown).
2005-06-20 Shinigami
A lot of Memory leak detection stuff added... just create a configuration using MEMORYLEAK
as macro definition and recompile everything (Core compiled with these macro will show'em
in start/pol.log/console too). To show usefull stuff, just call PolCore().internal(1)
and take a look @ debug.log - just add this line to WorldSaver Cycle... it's very usefull
to get memory statistics and was used to detect all three memory leaks above.
2005-06-06 Shinigami
linux compilation with -O3 (or -finline-functions (a part of -O3)) will destruct
pathfinding code in some cases! server will crash... (tested with gcc 3.3.5)
e.g.: FindPath(5393, 838, 45, 5394, 826, 60);
2003-07-27 Syzygy
Changed boat code to use new map format
2003-06-18 Syzygy
SaveWorldState( flags := 0 ), flags can be SAVE_FULL or SAVE_INCREMENTAL
pol.cfg: ShutdownSaveType = full|incremental
more AssertionFailureAction options: shutdown-save-full | shutdown-save-incremental
2003-06-08 Syzygy
Offline PCs will once again be saved.
2003-05-19 Syzygy
Added checkpoints to Character::die(), should help catch cases where a mob death doesn't completely kill the mob
- the additional die() call should be removed, since the check is meant to avoid creating multiple corpses.
Added npc_count to uobjcnt, and report in pol.cpp at exit
2003-05-18 Syzygy
Converted a bunch of catch(...) to catch( exception& ).
catching ... should be unnecessary now, since code no longer throws strings / char* etc.
Changed modules RArray to use vector
2003-05-17 Syzygy
Converted all the 'throw' statements that were throwing strings to instead throw runtime_error
This will allow catch( std::exception& ) to catch everything thrown by the application
2003-05-13 Syzygy
objecthash stores UObjectRef now, and there is a reaper thread that sweeps it occasionally.
2003-05-09 Syzygy
Added clib/iohelp.cpp and clib/iohelp.h
Started the objecthash storing UObjectRef instead of UObject*
2003-02-18 Racalac
Added "localvarmembers" debugger command in poldbg.cpp
2003-02-14 Racalac
Added "pc" debugger command in poldbg.cpp. not real useful to users until we release the debugger client
2003-01-12 Syzygy
runecl: Added '-a' option to enable assertions (but Debug build only)
runecl: defined INC_PASSERT=1 (debug build)
2003-01-07 Syzygy
Set debug formats for all Release targets to PDB. This doesn't seem to affect the size of the .exe image.
This is in preparation for better crash dump analysis support
2003-01-01 Syzygy
Changed all the .c files in clib/ to .cpp files
New pol.cfg option: UsePolMapFile=[0,1]
If true, uses files in realm/main/* for most map / statics / LOS info.
If false, original UO data files are used.
uoconvert.exe generates the POL data files:
c:\pol> mkdir realm
c:\pol> mkdir realm\main
c:\pol> uoconvert.exe c:\uodata\