On Sun, 12 May 1996, corey hoitsma wrote: [or all NEWBIE] :) > First off, I'm trying to add color to the say and gt stuff.. > But when someone says something, it doesn't test the target > ppl/persons color level, but the person who is saying/gt'ing it. > What would I use instead of ch? vict? There is no victim to 'say'. What it does is use "act". There's a few ways about going about changing the do_say code or other code to get the effect you want, the first and easiest is to just do: struct char_data *tch; /* at the beginning */ /* instead of the act(buf, FALSE, ch, 0, 0, TO_ROOM); */ for (tch = world[ch->in_rom].people; tch; tch = tch->next_in_room) { sprintf(buf, "$n says, '%s%s%s'", QCYN, argument, QNRM); act(buf, FALSE, ch, 0, tch, TO_VICT); } The next way is to add more "$" codes so that "$1=QBLU", "$2=QGRN", etc. After doing that to the act code, just replace the old sprintf from do_say with: sprintf(buf, "$n says, '$3%s$7'", argument); And 'act' would interpret the $-codes independantly. Remember, though, this is slightly harder than the first mentions one. The hardest (but still not very hard) is on-the-fly color, which I'll not explain here, but is very easy to do (I've got it doing all kinds of neat things -- flashing, backgrounds, etc.) > > Secondly, how do you deal with remorts? > I know that muds have it so that when you remort, you can pick > a special class for remorts only.. how do you gauge that? They get to level 31, give them the command REMORT, have the one argument to REMORT be the name of a remort class, set level to 1 again, and there they go again :) Something like: /* written off the top of my head */ bool class_remort[NUM_CLASSES] = { FALSE, /* mage */ FALSE, /* cleric */ FALSE, /* thief */ FALSE, /* warrior */ TRUE, /* paladin [can remort because TRUE] */ TRUE, /* druid ["] */ FALSE /* ranger */ }; ACMD(do_remort) { char arg [MAX_INPUT_LENGTH]; int i; extern char *pc_class_names[NUM_CLASSES]; one_argument(argument, arg); if (GET_LEVEL(ch) > LVL_IMMORT) { send_to_char("Only level 31 immortals can remort.\r\n", ch); return; } if ((i = search_block(arg, pc_class_names, FALSE)) < 0) { send_to_char("Remort to what class?\r\n", ch); for (i = 0; i < NUM_CLASSES; i++) if (class_remort[i]) send_to_char(pc_class_names[i], ch); send_to_char("Usage: remort <class>\r\n", ch); } else if (!class_remort[i]) send_to_char("That's not a remort class.\r\n", ch); else if (GET_CLASS(ch) == i) send_to_char("You are that class!\r\n", ch); else { GET_CLASS(ch) = i; GET_LEVEL(ch) = 1; GET_EXP(ch) = 1; send_to_char(OK, ch); } } With the above code, if the class is set TRUE in class_remort then it's a remort class and the person can type "remort <the-classes-name>" to remort to it. The command table entry for do_remort should be: {"remort", do_remort, POS_DEAD, LVL_IMMORT, 0 }, Sorry if that's the wrong table entry format, I don't use the same command table as stock CircleMUD. > > Thirdly, with spells, I noticed that when you cast an area spell, or do > an area skill, it doesn't touch the characters, only the mobs, how would > I test to see if the person was in the group with that other person? > (Oh boy! I think I just found out!) Anyways, where would I change this? > (Once I figure out how to test it). Look at the do_group code, it goes through whom is in the group to display the group members status.
This archive was generated by hypermail 2b30 : 12/18/00 PST