Anonymous
Not logged in
Talk
Contributions
Create account
Log in
Dragon Realm Wiki
Search
Editing
Code path debug
(section)
From Dragon Realm Wiki
Namespaces
Page
Discussion
More
More
Page actions
Read
Edit
Edit source
History
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== call player;query_level() always shows 1 == <pre>/std/user.c :: query_level()</pre> This function simply returns the object variable "level", which is only modified through set_level(). set_level() does a check to see whether the previous_object() is wizardp(), or if the euid of the previous_object() is UID_ADVANCE. If not, it returns. This appears to be the root of the issue, as functions which call set_level() (such as the _improve.c command) defer setting levels by calling set_level(1). set_level(1) then 'returns' with no integer (presumably 0 by default) and I believe the player's level remains what it was, 1. <ol> <li><pre>/cmds/mortal/_improve.c :: cmd_improve() ... STAT_D->do_improvement(str, this_player()); ...</pre> <li><pre>/daemon/stat_d.c :: do_improvement() ... /* set_stats() for me is inherited from living.c */ me->set_stats(str, current + 1); ...</pre> <li><pre>/std/living.c :: set_stats() ... if(!wizardp(this_object()) && this_object()->is_player()){ seteuid(UID_ADVANCE); // This should be enough to satisfy living.c::set_level() this_object()->set_level(1); seteuid(getuid()); } ...</pre> </ol> The current fix (probably will want to fine tune this, if this causes other bugs. <ol> <li><strike><pre>/std/living.c :: init_living() ... { // Added the following. However, I am not sure this is actually needed. seteuid(UID_ADVANCE); } ...</pre></strike> <li><pre>/daemon/stat_d.c :: do_improve() ... { // Added the following. This set the correct UID for the previous_object(). Also added UID_ADVANCE to this file in privs.db seteuid(UID_ADVANCE); me->set_stats(str, current + 1); seteuid(getuid()); } ...</pre> </ol>
Summary:
Please note that all contributions to Dragon Realm Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Dragon Realm Wiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Wiki tools
Wiki tools
Page tools
Page tools
User page tools
More
What links here
Related changes
Page information
Page logs