Hi all, in my effort to perfect my multiclass code, I've hacked up a function that (should) tell the players how many times they can level in each different class, based on their current exp. It's (appropriately) named 'level_check'. Now, the problem is this. Whenever a player gets any amount of exp, even if its 1 and they had 0 before, this is the output: You receive 38 experience points. You can rise 1345210671 level in: Command You can rise 1345210671 level in: Helm You can rise 1345210672 level in: Communications You can rise 1345210673 level in: Engineer You can rise 1345210674 level in: Security You can rise 1345210675 level in: Tactical You can rise 1345210676 level in: Medical You can rise 1345210677 level in: Operations You can rise 1345210678 level in: Science You can rise 1345210679 level in: Global Obviously, something is wrong, since they should need about 29,962 exp more to level 1 more level. Here's the function, apologies in advance for the ugliness in formatting, etc. void level_check(struct char_data *ch){ int i, check_class_lev, num_levels; char classname[MAX_STRING_LENGTH+1]; if(GET_LEVEL(ch) >= LVL_ORGANIAN) return; sprintf(buf, ""); // Clear anything in buf since we use sprintf(buf + strlen(buf) ...) for(i = 0; i < NUM_CLASSES; i++){ for(check_class_lev = GET_CLASS_LEV(ch, i), check_class_lev++; GET_EXP(ch) > level_exp(check_class_lev); check_class_lev+=1){ // Check if they have enough XP to level, and how many times, in each class num_levels++; } if(num_levels > 0){ sprinttype(i, pc_class_types, classname); sprintf(buf + strlen(buf), "You can rise %d level%s in: %s\r\n", num_levels, num_levels > 1 ? "" : "s", classname); } } send_to_char(buf, ch); } Now, I think the problem lies in the for loop(d'uh). But I, for the life of me, can't figure it out. And in case you were wondering, level_exp is being called properly - each class has the exact same amount of XP needed to level for each different level, so I need no class integer at the end of calling it. And in the code where it advances them a level, it will subtract the amount of XP they needed to level from their EXP so I know THAT isn't the problem. Thanks in advance for any help you guys can offer, -Phillip Phillip Ames | Implementor of Apocalypse MUD kirk47@juno.com | telnet://startrek.circlemud.net:1701 ICQ: 8778335 | AOL IM: Grathol http://members.xoom.com/Gowron/index.html ___________________________________________________________________ Get the Internet just the way you want it. Free software, free e-mail, and free Internet access for a month! Try Juno Web: http://dl.www.juno.com/dynoget/tagj. +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST