> Ok. I want to parse the casting syntax from: > cast 'spell' target > into: > cast spell at target with arguments > > I'm not really sure how to break it up, considering strtok uses only 1 > character, not words ... Thanx. > Mental exercise: cast spell at target <argument> command name seperator vict optional arguments [_CMD_] [_____________arg________________________] Okay.. first we look for a spell name... we could have two, or more word spells. Since we dont' have a delimiter (like double quotes), we can't use the built in function 'one_word', instead we have to assume much trouble, and use at. --random mailer code -- char *at,*scratch,*dup; char *spell_name, *vict_string, *opt_string; int spell_number; /* make a duplicate of arg since strtok alters string just in case */ dup=strdup(arg); if(at=strstr(dup,"at")) { /* good we found an at */ spell_name = strtok(dup," "); while(dup != at && *spell_name && *dup && ((spell_number=find_skill_num(spell_name)) > 1 && find_skill_num(spell_name) < MAX_SPELLS)) { scratch=strtok(NULL," "); strcat(spell_name,scratch); } } else { send_to_char("Syntax is : cast <spellname> <target> [options]\r\n",ch); return; } if(spell_number < 1 || spell_number > MAX_SPELLS) { send_to_char("Syntax is : cast <spellname> <target> [options]\r\n",ch); return; } /* great, we have the spell number, now for the victim (remove at first) */ strtok(NULL," "); /* throw out 'at' */ vict_string=strtok(NULL," "); /* grab the vict_string */ opt_string=strtok(NULL," "); /* grab the options string */ /* put in the normal rest of cast i'd suppose */ Now, this may be wrong, cause i'm tired, and can't figure out how to get a car to the auto shop this early in the morning, without transportation back. I'm sure theres errors, or even an easier way to do it, but this is pretty dry. 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/15/00 PST