On Mon, 25 Nov 1996, Eduardo Gutierrez de Oliveira wrote: > > Wouldn't it be easier to just go into limits.c, in the gain_exp function > > and set up xp caps. That's what I did, and they work fine, although I am > Maybe I am not understanding or maybe I didn't make myself clear (both > very frequent...:) Well, some of your argument for wanting to limit areas was, that you didn't want newbies to gain horrendous amounts of XP. This can be done by modifying the gain_exp functions and you can customize it a lot this way, so a newbie beeing with a level 80 on a 95 level mud won't get but like 0.01% of the XP the highlevel gets, and even then only get like 1/10th of the exp required to his level if thats what you want. But, I'll let it rest for some other time :) Just be aware that this is allso a great way of controlling newbies beeing leveled by more highlevel characters. > I want to limit access to full areas (several tens of rooms) to a range > of levels. > So, let's say you want to limit access to the chessboard to be used only > by players whose level is between level 21 and level 40, so a level 19 or > alevel 41 would not be able to enter the place... > At first I had made several flags (UNDER20, UNDER40, UNDER60, ABOVE21, > ABOVE31, ABOVE41, ABOVE51) which did let me set ranges in the rooms, but > I wanted to do this because even if I limit the entrance to a zone, > immortals can teleport inside the zone and transfer their buddies inside, > so they get to visit forbidden zones or zones still in building stages... Well, the WAY easiest solution (in my own oppinion - is what IMOO ? :) is to modify the zone_data, or whatever it's name is. The info thats in the top of the .zon file, which holds the top-vnum of the zone, the name of it and so on. Simply add a few more fields there (and in the structures of the mud and the zonefiler parser - somewhere in db.c). Like the top of the 30.zon file would look like: #30 <- Zone, standard Northern Midgaard Main City~ <- Zone name, standard CircleMUD~ <- Creator/Originator, non std. 10 100 <- Minimum and maximum levels 3099 15 2 <- Nop-vnum, reset-span and type allso std. CircleMUD 3.0 stuff. Then find where the stuff is loaded in db.c (allready said that :), and modify it, and then you can by hacking a little arround, find out how to modify the perform_move() (movement routines), the various spells and stuff like that. On top of this you could allso set a 'fast check bit' for the not yet opened areas.. Like if your min-level for a zone is the same or bigger then LVL_IMMORT, then set a ROOM_IMMONLY or ROOM_OLC or whatever, that you can check against for the sake of simplicity.. well, you probably get the idea by now *grin* Hope this has inspired you some, and that you'll use my solution *cackle* Nah, just kidding. All up to you. Regards, Con. d. -- Rasmus Rønlev DOEK'94 WWW: http://www.econ.cbs.dk/people/raro94ab Student instructor MUD: exiled.mud.circlemud.org 5000 199.199.16.100 5000 Student, B.Sc in Computer Science and Business Administration. +-----------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | +-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST