If anyone can make any suggestions to my code I would greatly appreciate it. I did this in 30 minutes... and it could be rather buggy. Thank you for checking it out -Carlton The idea is I would call it with: Trigger Intended Assignment: Mobiles Trigger Type: Speech , Numeric Arg: 2, Arg list: teach me Commands: train %actor.name% 'clone' 5 10 say I have tought you how to clone yourself. %actor.name%, use it wisely. I would like it to be able to check and make sure they have the propper class, race, or even prerequisite skills using skill(skill-name) etc. In... int script_driver(void *go, trig_data *trig, int type, int mode) after: else if (!strn_cmp(cmd, "makeuid ", 8)) makeuid_var(go, sc, trig, type, cmd); add: else if (!strn_cmp(cmd, "train ", 6)) train_char(cmd); And add the procedure: void train_char(char *argument) { struct char_data *vict; char name[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH]; char buf2[MAX_INPUT_LENGTH], skillname[MAX_STRING_LENGTH]; int skill, value, i, qend, level; byte iserror=0; i = 0; argument = one_argument(argument, name); if (!*name) iserror=1; skip_spaces(&argument); /* If there is no chars in argument */ if ((!*argument) || (*argument != '\'')) iserror=1; /* Locate the last quote and lowercase the magic words (if any) */ for (qend = 1; argument[qend] && argument[qend] != '\''; qend++) argument[qend] = LOWER(argument[qend]); if (argument[qend] != '\'') iserror=1; /* If there was an error exit */ if (iserror==1) { sprintf(errorbuf, "Trigger: %s, VNum %d. Train, invalid arguments: %s", GET_TRIG_NAME(trig), GET_TRIG_VNUM(trig), cmd); script_log(errorbuf); return; } if (!(vict = get_char(name))) { sprintf(errorbuf, "Trigger: %s, VNum %d. Train, Invalid name: %s", GET_TRIG_NAME(trig), GET_TRIG_VNUM(trig), name); script_log(errorbuf); return; } /* strcpy: OK (MAX_INPUT_LENGTH <= MAX_STRING_LENGTH) */ strcpy(skillname, (argument + 1)); skillname[qend - 1] = '\0'; if ((skill = find_skill_num(skillname)) <= 0) { sprintf(errorbuf, "Trigger: %s, VNum %d. Train, Unrecognized Skill: %s", GET_TRIG_NAME(trig), GET_TRIG_VNUM(trig), skillname); script_log(errorbuf); return; } argument += qend + 1; /* skip to next parameter */ argument = two_arguments(argument, buf, buf2); if (!*buf) { sprintf(errorbuf, "Trigger: %s, VNum %d. Train, No Learned Value.", GET_TRIG_NAME(trig), GET_TRIG_VNUM(trig)); script_log(errorbuf); return; } value = atoi(buf); if (value == -1) value = GET_SKILL(ch,i); if ((value < 0) || (value > 100)) { sprintf(errorbuf, "Trigger: %s, VNum %d. Train, Invalid Learned Value: %d", GET_TRIG_NAME(trig), GET_TRIG_VNUM(trig), value); script_log(errorbuf); return; } if (IS_NPC(vict)) { sprintf(errorbuf, "Trigger: %s, VNum %d. Train, Victim can not be an NPC!", GET_TRIG_NAME(trig), GET_TRIG_VNUM(trig)); script_log(errorbuf); return; } if (!*buf2) level = -1; else level = atoi(buf2); /* * find_skill_num() guarantees a valid spell_info[] index, or -1, and we * checked for the -1 above so we are safe here. */ if (GET_SKILL(vict,skill)>value) value=GET_SKILL(vict,skill); if (GET_SKILL_LEVEL(vict,skill)<level) level=GET_SKILL(vict,skill); SET_SKILL(vict, skill, value, level); } -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT