uh, really
- automake insists on naming all libdirs .../cfserver now. i have to concur :/ - correctly reattach to players on reload, this likely fixes the reload crash bug. - init env vars very early, so perl gets to see them.
- make server more fragile w.r.t. watchdog on freeze - try to make a perl backtrace on crash, too.
minor stuff, indent
mroe cheks on disconnected socket
so crash-friendly users, ehrm, user-friendly crashes
just experimenting
- fix a horrendous bug that might have caused all the map corruption - optimise/modernise some map-insert-related stuff - fix debug_desc - remove crypt configury - minor adjustments/cleanups
- fix crash bug - better fork & abort (untested)
dump core earlier, by forking. also do not try to clean up twice.
- added $cf::WAIT_FOR_TICK* - tuned map-scheduler and player-scheduler - added $op->inv_recursive - added objects_size/objects($index) and actives_size/actives($index) for access to the object and actives vector. - more robust player loader - removed _perl_data attribute support - SIGINT/TERM/HUP are now safe as they are handled synchronously. - replaced LOOK_OBJ by client_visible - cleanups
- fix This exit is cloed on login because the maplevel of players not on any map was not saved.
""
added some copyrights
be nicer to clients on shutdown and crashes
- 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
be more robust in emergency saves
- 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.
*** empty log message ***
lotsa bugfixes
add some robustness checks, add map find/load locking
minor changes, follow command still borked
in my stupidity i broke the loader
more use of shstr where it makes sense naturally
many minor changes everywhere, random maps crash sometimes but design is in place
different interface design for c++/perl map handling, some random map framework
get rid of annoying enter_exit (0)
fixed the problem where objects with speed=0 were on the active object list. extended debug_desc a bit. implemented object::has_active_speed ().
fix some bugs
random maps are nphard
misc updates
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.
introduce for_all_maps
replace update_ob_speed by ->set_speed
the big rename
interim.checkin
- 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
- improved login code - removed some cruft code and (finally), the player_pod hack
- 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?)
- 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 LIGHT_SOURCE, MONSTER and SPAWN_GENERATOR types.
- minor cleanups - minor optimisations (in_player vs. is_player_inv) - added P_PLAYER map flag - some (dead) concept code
- generate more correct map names (/random should go, though) - allow random maps to end up in temp.maps list
- remove recycle_tmp_maps setting (hardwired to true) - replace object->flags by std::bitset, seems to be way more efficient, for some unexplainable and not looked-into reason. its way cleaner, too...
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.
- write() is now independent of server ticks and will be done immediately - get rid of CORK hack, it is no longer necessary
- implement c++ interface to Event->io watchers - cut number of write()'s the server does in half
- rewrote most of the socket loop code - moved connection accept into tcp.ext - no evil socket copying anymore, needs more cleanups
added a needed abstraction
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
removed #ifn?def WIN32 from all files
*** empty log message ***
remove golem_count, likely golems are destroyed late now
re-implement dump and dumpbelow
nuke metaserver code
let perl use the correct directory stetings at startup
* 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 ***
improved ordering and usefulness of map change events
mapstruct => maptile removed many ytypedefs in favor of structure tags
maps reset on restart, cannot have that
replace was_destroyed by much simpler and less expensive ->destroyed, which is valid, as objetc pointers are now reliable.
indent
fix object list linking (severe bug)
implement cleanup signal
- improve assign to prepend "..." - make more use of assign - implement op->debug_desc() and make some more use of it
indent
fix a few ugly pod-constructs on non-pod objects, and a few newly introduced bugs
Some cleanups.
Changes... - alternative shstr representation, saves code - use glibs splice memory allocator (seems slower) - use simpler memory/lifetime management for objects, no recycling
string scanning (e.g. for patch) is not implemented ATM but should be easy to add with an alternative constructor for object_thawer. Rewrote flex scanner to be simpler, faster and more modularised. Initial speedup: 16% (ah well)
everything seems to work so far
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
*** empty log message ***
remove compression support, intiialise perl earlier etc. etc.
expand initial tabs to spaces
nuke transports
- added ready/unready/can_apply events and their passive versions - removed support for event_*-fields in maps - removed support for current_weapon_script - removed timers - removed say/shout/Tell and related commands
autogenerate eventinc.h
reduce cfapi dependencies, move cfperl initialisation to an earlier point
first, untested persistent objetc storage for players and objects, not yte for maps
further refinements
many, many cleanups
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.
- fix extmap protocol - lay foundation for new event interface (not used, not tested) - "slow down" in-game time specials
- added cfperl.h, soon to be used by events - no perl == exit, its no longer optional - moved server main loop entirely in perl - removed lots of unneeded timekeeping cruft
get rid of esrv_map_scroll and MapNewmapCmd, map update will handle it automatically
use perl's event loop as mainloop
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.