On Wed, 31 Jan 2001, Luke Waite wrote: > else if (cmd_info[cmd].command != 'charunlock\n' && GET_LOCK(ch) != 0 > && !IS_NPC(ch)) { > send_to_char("Sorry, character is locked. Type unlock, and the > password you\r\n", ch); > send_to_char("entered when you locked.\r\n", ch); No, no, no, no, no. Two things about C: string literals are in double quotes, not single quotes (character literals are in single quotes) so 'charunlock\n' is bad syntax, you want "charunlock\n" (but, not really, I'll explain in a second); you're comparing the address of two pointers instead of the contents of two strings, you want else if (str_cmp(cmd_info[cmd].command, "charunlock\n") && ... (but, not really, I'll explain in a second). The problems with your approach from CircleMUD's side: you want your !IS_NPC(ch) check before the GET_LOCK(ch) check since it's player-specific data. In fact, you probably should put !IS_NPC(ch) first in the if and GET_LOCK(ch) next. Also, command names in the cmd_info table shouldn't have newlines in them. So you want "charunlock" not "charunlock\n". If you put "charunlock\n" in the table no-one would ever be able to use the command because they can't put a newline after the command but before the arguments. So, you should end up with something like: else if (!IS_NPC(ch) && GET_LOCK(ch) && str_cmp(cmd_info[cmd].command, "charunlock")) { /* . . . */ } else if . . . Note that you *DO* want str_cmp() and *DO NOT* want !str_cmp(). As mentioned several times before, str_cmp() does a lexicographical comparison, not a boolean (true/false) comparison. It returns zero (0) if the strings *DO* match, non-zero if the strings *DO NOT* match. Check the archives or a good book on C for more information on lexicographical comparisons. -dak -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/03/01 PST