Let me quickly make some comments here in the code. > > ACMD(do_chown) > { > struct char_data *victim; > struct obj_data *obj; > > two_arguments(argument, buf, buf2); > > if (!*buf) > send_to_char("Syntax: chown <object> <character>.\r\n", ch); > else if (!(victim = get_char_vis(ch, buf2))) > send_to_char("No one by that name here.\r\n", ch); > else if (victim == ch) > send_to_char("Are you sure you're feeling ok?\r\n", ch); > else if (GET_LEVEL(victim) >= GET_LEVEL(ch)) > send_to_char("That's really not such a good idea.\r\n", ch); > else if (!*buf2) > send_to_char("Syntax: chown <object> <character>.\r\n", ch); Whoa. What happened to the object? You never located it. try something like this: if (!(obj = get_obj_in_list_vis(ch, buf, ch->carrying))) { sprintf(buf, "You don't seem to have any %ss.\r\n", buf); send_to_char(buf, ch); } > else { > act("$n makes a gesture and $p flies from $N to $m.", > FALSE,ch,0,0,TO_ROOM); Okay.. Uhm. Understand how act() works. .... EVERYONE WHO DOSEN"T KNOW, TAKE A QUICK LESSON: act takes 6 arguments. Here's what they are: 1 - String that you're going to send out. 2 - Boolean value - true/false used to determine if act()s that are triggered by an invisible person sends out will be seen by those w/o invisibility. 3 - The triggering character 4 - The target object 5 - The target character (well, could be other, but we'll keep it simple for now) 6 - The recievers of the messages.... the room, the victim, everyone but the victim, the char, and of course, the "TO_SLEEP" which sends even if the guy is alseep. from your code... > act("$n makes a gesture and $p flies from $N to $m.", > FALSE,ch,0,0,TO_ROOM); you'd want something like.. act("$n makes a gesture and $p flies from $N to $m.", FALSE,ch,obj,victim,TO_ROOM); Else, the program will break when it gets to lookup the name of a null pointer (it thinks its an object or person...) > send_to_char("You make a gesture and $p flies from $N to you.\r\n", ch); > send_to_char("$N makes a gesture and $p flies from you to $m.\r\n", victim); obj_from_char(obj); Secondly, send_to_char != act. It dosen't know anything but the string, and the person receiving it. You can't reference a)victims, b)objects, through it. You CAN do something like sprintf(buf,"You make a gesture and %s flies from you to %s\r\n", GET_OBJ_NAME(obj), GET_NAME(victim)); send_to_char(buf,ch); > obj_to_char(obj, ch); Now, you also want to probably remove the obj from the character before you give it to the next person.... obj_from_char(obj,ch); obj_to_char(obj,vict); > } > } > > only problem is it's saying that obj may be un-initialized.. i thought > struct did that... *shrug*.. i'll keep working on it :) > And its uninitilized, because it really is uninitilized.. you declared space and a name for it in struct, but you never filled it up. Lucky for you that the functions that I said to add will initilize it with the needed values huh? These are the kind of mistakes I make ever so often, though, not as frequently as it seems others may =) PjD +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST