heya..someone mentioned the sign program a couple of days ago (a prog that would display a text to a telnet port)..well..apparently, it doesn't come with freebsd..so, were you guys talking about linux? would someone be able to send me the source code for it? siv ObCircle: Let's see..i've redone my spell and skill system so that everything uses a generic parser...i was wondering what others might think of this..it seemed to me that i cut out a LOT of redundant code, but is there anything that i might be missing? this is what my skill_command looks like: ACMD(do_skill) { if (subcmd) { // skills use skill_number as subcmd skill = subcmd; if (!IS_NPC(ch) && !GET_SKILL(ch, skill)) { send_to_char("You don't know how!!\r\n", ch); return; } t = strtok(argument, "\0"); if (t != NULL) { two_arguments(strcpy(arg, t), test1, test2); t = strdup(test1); npc_percent = strdup(test2); skip_spaces(&t); skip_spaces(&npc_percent); } } else { // came from "cast"...no subcmd /* get: blank, spell name, target name */ s = strtok(argument, "'"); if (s == NULL) { send_to_char("Cast what where?\r\n", ch); return; } s = strtok(NULL, "'"); if (s == NULL) { send_to_char("Spell names... Holy Magic Symbols: '\r\n", ch); return; } t = strtok(NULL, "\0"); if (t != NULL) { two_arguments(strcpy(arg, t), test1, test2); t = strdup(test1); npc_percent = strdup(test2); skip_spaces(&t); skip_spaces(&npc_percent); } skill = find_skill_num(s); if ((skill < 1) || (skill > MAX_SPELLS)) { send_to_char("Cast what?!?\r\n", ch); return; } if (!IS_NPC(ch) && GET_SKILL(ch, skill) == 0) { send_to_char("You are unfamiliar with that spell.\r\n", ch); return; } } if (IS_NPC(ch) && !*npc_percent) { sprintf(buf, "(MP) No skill percentage - %s", GET_NAME(ch)); log_info(buf); return; } if (IS_SET(SINFO.targets, targets_char)) tch = find_target_char(ch, skill, t); else if (IS_SET(SINFO.targets, targets_object)) { tobj = find_target_object(ch, skill, t); targ_is_char = FALSE; } else tch = ch; if (!(tch || tobj)) { sprintf(buf, "%s is that?!?\r\n", targ_is_char ? "Who" : "What"); send_to_char(buf, ch); return; } if (IS_SET(SINFO.targets, TAR_CHAR_GROUP) && !check_group(ch, tch)) { send_to_char("You can only do that to members of your group.\r\n", ch); return; } if (tch && SINFO.violent) { if ((tch == ch) && !IS_SET(SINFO.targets, TAR_IGNORE)) { send_to_char("That would be very hazardous to your health.\r\n", ch); return; } if (!ok_pkill(ch, tch)) return; if (ROOM_FLAGGED(ch->in_room, ROOM_PEACEFUL)) { send_to_char("This room just has a peaceful, easy feeling...\r\n", ch); return; } if (MOB_FLAGGED(tch, (MOB_NOFIGHT | MOB_INTANGIBLE))) { send_to_char("That wouldn't be very nice..\r\n", ch); return; } if (IS_AFFECTED(ch, AFF_CHARM) && (tch == ch->master)) { send_to_char("You would never think about hurting your master!!\r\n", ch); return; } if (!IS_NPC(ch) && FIGHTING(tch) && !check_group(ch, FIGHTING(tch))) { send_to_char("It seems that your victim is already fighting.\r\n", ch); return; } } if (skill <= MAX_SPELLS) if (!cast_spell(ch, tch, tobj, skill)) return; if (SINFO.lag > 0) WAIT_STATE(ch, SINFO.lag); if ((tmp_int = other_requirements(ch, skill, tch, tobj)) == 1) succeed = FALSE; else if (tmp_int == 2) return; if (!skill_cost(ch, skill)) return; if ((succeed == TRUE) && !skill_check(ch, skill, npc_percent)) succeed = FALSE; if (SINFO.delay) { if (ch->delayed_skl) { send_to_char("You're in the middle of something already.\r\n", ch); return; } CREATE(ev_o, struct del_skl_info, 1); ev_o->ch = ch; ev_o->tch = tch; ev_o->tobj = tobj; ev_o->skill = skill; ev_o->succeed = succeed; ch->delayed_skl = add_event(SINFO.delay, delayed_skill, ev_o, ch); return; } perform_skill(ch, skill, tch, tobj, succeed); if (succeed == TRUE) improve_skill(ch, skill); } +------------------------------------------------------------+ | 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/15/00 PST