some tiny cleanups and moving of non-time-critical commands into perl
do not crash when trying to load nonexistant or broken players
- identified random memory corrutpion bug - fixed most likely cause for bug above - rewrote object loader etc. into a simple one-line lookahead parser. - rewrote/cleaned up archetype, treasure, artifact, formula parser. - some optimisations / cleanups
hell on earth, rewrote the container code - it really was a mess before - open/close events should now be very reliable. - make container an object_ptr, just to be on the safe side (the old code is known to crash, the new code should be reliable, but...). - its also smaller, much smaller/clearer in sourcecode size and a bit smaller in text segment size. also disable big worldmap again: is this still causing memleaks?
rework material code in preparation for nuking object->materials, also add some useful object methods in preparation of the mapspace limiting
- add visibility_at to players (only), might/should be an object method - mood spells only affect visible spaces now.
- move util/world.png to server/lib/ (should go to maps/world.png, but I will not fiddle around with that now) - compile worldmap to world.pst and install it. - rename FLAG_NO_SAVE to FLAG_NO_MAP_SAVE - define FABS to fabs, as intended - fix all(?) the FABS(int) calls
just experimenting
- remember the map path on deactivate and save (because enter_map isn't called for all map changes - doh)
- disabled stuff that might cause instabilities at the cost of certain (controlled) additional memory usage. - minor changes to improve the stability,
- bugfixes, bugfixes, bugfixes
- move most last_* values into socket, where they belong - this actually saved a lot of space in the text segment, which might mean less complicated pointer accesses, because the data is no where it belongs, mostly.
disable destroy
quick and dirty emergency fix
more preperations for player eviction
- more improvements/fixes - timestamp with millisecond accuracy, horrible code
implement quit
""
added some copyrights
fixed a bug where the wrong object was transferred.
fix quit to actually delete the directory, should all be moved to perl
- word of recall activated the player indirectly - implement maptile->xy_find and xy_load - separate find and load, even on C level - generate map_leave/enter and map_change events even for tiled map changes (experimental) - implement mainloop freezeing by start/stop, not skipping ticks - no map updates when player !active
set no_drop flag on all inv items of created objects (e.g. pets), experimental.
- new untested set_flag_inv method to change a flag on all inv objects - do ot satop running when switching maps - fixed speed_left assymentry in handle_newcs_player - do not immediately handle running commands when calling handle_command, as it could have deactivated the object.
implemented proper support for empty treasures, which sadly occur in empty treasure lists. fixing treasurelists to have no entries at all would be even more complicated, but even when this is fixed, the current changes only make the server more crash robust to bad treasures. Also removed the 'NONE' specialcase for treasure lists. Developers should use 'none' instead now.
initialised :)
lotsa bugfixes
*** empty log message ***
add some robustness checks, add map find/load locking
more use of shstr where it makes sense naturally
many minor changes everywhere, random maps crash sometimes but design is in place
get rid of annoying enter_exit (0)
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
i cannot find, nor reproduce, the problem at all. the log clearly shows map loads where there shouldn't be any, so we lose maps. but only on cf.schmorp.de. i am frustrated.
restore log out logging, reduced command queue length to 3
introduce for_all_maps
- added maptile->insert and object->insert_at methods that might make code using it clearer. - replaced some insert_ob_in_map calls.
drop-to-ground on player logout fixed, possible warning from set_speed fixed
more cleanups and bugfixes, we are reaching a local peak of stability now
replace update_ob_speed by ->set_speed
un-goof
fix player quitting
un-goof
- some fixes - disable some refcounting again, not ready yet - simplify save_object
- small, but subtle, rewrite of object management - perl will now keep attachable objects alive - objects are now refcounted - refcouts need to be tested explicitly (refcnt_chk) - explicit destroy is required current - explicit destroy asks "nicely" for the object to self destruct, if possible - refcounts will be used during mortal killing - minor bugfixes, optimisations etc. - some former hacks removed.
an experiment
- reorder stuff so that the endlessly sucky gcfclient doesn't get confused
re-enable motd &c
- rename flags => flag (because its rpedominantly used singular), - remove remaining use of the flags array semantics
- improved login code - removed some cruft code and (finally), the player_pod hack
- fix ordering in player::connect, avoiding a crash on invalid range slots - this is now online, and seems reasonably stable - IO::AIO 2.3 is *required* due to a bugfix in it.
- surprisingly, there were some bugs. in Event, too :( - dieing and food checking are now only done in ST_PLAYING state. this might, but should not be, exploitable, in serious ways.
- preliminary check in, stuff is rudimentarily working - moved most of the player creation process into a perl coroutine - changed internal design of player management to not reuse and morph the object in funny ways. should be safer and much nicer to handle. - got rid of some annoying hacks, such as clear() (TODO: get rid of player_pod and other stuff now unnecessary?)
*** empty log message ***
- made state a per-client variable (that does not magically make state a per-client thing!) - rename player->socket to player->ns. its not a good name for "client", but it is an historical artifact, and better than "socket".
- made client a first-class crossfire-perl object (its attachable), but perl support is missing. - added some client events - fixed reply not working after logout
removed EXPERIENCE type.
- minor cleanups - minor optimisations (in_player vs. is_player_inv) - added P_PLAYER map flag - some (dead) concept code
goofing around in vain, trying to find a generalisation for esrv*item
- separate all comamnds into immediate/socket-level and queued/player-level - clean up player command handling, handle up to 8 commands/tick
- check for in-memory map headers on login, so players end up on their random map (which has no file) again. (this is more efficient in the general case anyways - in case the temp map does not exist, the emergency position is used. (an alternative that avoids this is to make the file some real map (like per-player maps))
- remove no_shout - serialise command execution somewhat again :( - avoid exceptions
- limit command backlog to two seconds
- socket i/o is completely asynchronous now - some command sare handled immediately - others (most palying related commands) are queued for later (as of now synchronous) processing - specifying a max queue length (in seconds) is possible, but disabled - also add some syntax sugar for network code
the rename for sanity campaign hits you died - renamed stuff - partially updated copyrights - some cleanups
while goofing around, trying to understand the command code - did some reindentation - which lead me to find some dead code - which lead me to some optimisations and more dead code fun.
- implement event watcher autoncancellation on reload - used it everywhere - removed lots of compatibility cruft - configure does no longer check for mandatory unix functionality/headers - confgiure now runs much faster
temporarily save and restore spollmon steting
- rewrote most of the socket loop code - moved connection accept into tcp.ext - no evil socket copying anymore, needs more cleanups
moar\! rewrite\!
fixed some callers of find_treasurelist to handle non existing treasurelists more gracefully ('gracefully' as in 'do not crash').
- further cleanup and rewrite - fix a potential crash in "lock" and "mark" packets
further cleanups and oofication
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
removed #ifn?def WIN32 from all files
remove golem_count, likely golems are destroyed late now
updated and applied newpickup flesh patch by benoƮt <bencha1969@yahoo.fr>
formatting
* nuke op->contr when players log out, to avoid dereferencing them later :( * also rename free to destroy * do not create weird messages when people examine pseudo inventory objects
*** empty log message ***
mapstruct => maptile removed many ytypedefs in favor of structure tags
replace was_destroyed by much simpler and less expensive ->destroyed, which is valid, as objetc pointers are now reliable.
indent
cleanup
- improve assign to prepend "..." - make more use of assign - implement op->debug_desc() and make some more use of it
indent
fixed crash on quit
indent
Some cleanups.
*** empty log message ***
Changes... - alternative shstr representation, saves code - use glibs splice memory allocator (seems slower) - use simpler memory/lifetime management for objects, no recycling
THIS CODE WILL NOT COMPILE use the STABLE tag instead. - major changes in object lifetime and memory management - replaced manual refcounting by shstr class - removed quest system - many optimisations - major changes
Pippijn un-fucked it up.
removed all the broken SHOP_FLOOR checks and replaced them with the is_in_shop () check function.
expand initial tabs to spaces
implement player_move event and make use of player_shout/say/chat/tell events
nuke transports
fixes, objects on maps get instantiated properly
first, untested persistent objetc storage for players and objects, not yte for maps
intermediate check-in, per-object events work
many, many cleanups
converted more events, broken per-object events (needs map support), lots of fixes
Implemented a rough outline of the new event system and made use of it for a number of events. The corresponding plugin-events have been disabled.
added safe map and some checks over the code to make the maps really safe!
Made server compile with C++. Removed cfanim plugin and crossedit. C++ here we come.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.