-Updated 101: Fixed a small bug that was causing player's to get locked out.
This Housing System was one I developed for the Social World Isle of Styss where I sought to deal with and solve the three major challenges with providing housing to all players in a persistant World
-Efficient use of housing areas so there is not 200 houses when only 20 are being used at a time.
-Automated upkeep so houses purchased by players who no longer play are recycled to be purchased by new players
-Efficient use of the Bioware database
The Housing System is divided up into Four Housing Districtts, but not all four have to be used. Each housing district has an unique list of exterior and interior areas.
The exterior and interior areas are not connected. Instead, when the door to the exterior of the house is unlocked, the system searchs through all interior areas belonging to that district for one not being used by any players and connects that interior area to the exterior. When players vacate the interior area and lock the door, the connection is broken, leaving the interior area free to be used by other players accessing their homes.
This allows, for example, 5 interior areas to service 50 exterior homes.
Exterior homes consist of nothing more than a door and a house sign. Therefore, it is possible to create all the exterior homes of one district in one large area.
See this Link for details and full instructions on how the system works.
When the module loads, the system will perform upkeep on the housing database. The upkeep takes 20 seconds and significant lag can be generated in this time if their is a large number of houses. An expiration date may be configured for the houses so any houses not used within the expiration date will be recycled and placed back on the market for sale.
Each exterior home created uses one variable in the BioWare database. An addition variable is used for storing persistant time.
Player chat commands are available that allow DMs to reset the entire housing database and players to remove any no drop house keys for expired homes.
Each district has a housing list sign that lists the ownership and availability of all houses in the district along with who owns which house.
The system may be configured to load all or parts of the database into the host's memory. This causes the housing system to generate lass lag spikes from slow reading of the hard drive.
My public email is [email protected] for bug reports and suggestions for improvements.
The system has been tested extensively in single and multiplayer settings but minor bugs may still exist.
Posted by calsailx at 2009-05-04 04:39:55 Voted 10.00 on 05/04/09
I'm giving this a 10 the documentation is good, your code is well commented,
trouble shooting problems encountered
setting up was easy with server log
data and the debugging turned on.
Finding a housing system that would
use the Bioware Database was a BIG
plus for me, and what I want to do
with the module I'm working on. Using
NBDE for the Database mostly because
everything else in my module was
already using it.
Thanks giving this to the community
MadRabbit I'm sure there will be others
that will find it as useful as I have!
Thanks a lot, man. That was the one bug in the thing I could not find. I was waiting for it to go into beta testing with the server I made it before to try and isolate it, but unfortanely, haven't gotten their yet on our workload.
Posted by calsailx at 2009-04-27 18:14:26 Voted 10.00 on 05/04/09
I ran into a little prob with
H_GenerateDataString() being passed
just the last 6 digits of the key tag
by H_Update_SavedDate()... where
H_GenerateDataString() would do the
same GetSubString(sKeyTag, 10,6)
operation... and I'd get locked out.
As a workaround I'm checking for
the StringLength of sKeyTag in
H_GenerateDataString if it's 6
I'm skipping the GetSubString()
function.
This a interesting housing system and
I just plugged it into a module I've
started. Will be voting on this once
I've beat the snot out of it, but so
far I have to say I'm pretty pleased! _________________________ TNI01 Usable Beds || TNI02 Useable Beds || TWC03 Usable Beds
You must be Logged In to post comments in this section.