int command_wtrigger(char_data *actor, char *cmd, char *argument) { struct room_data *room; trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!actor || !SCRIPT_CHECK(&world[IN_ROOM(actor)], WTRIG_COMMAND)) return 0; room = &world[IN_ROOM(actor)]; for (t = TRIGGERS(SCRIPT(room)); t; t = t->next) { if (!TRIGGER_CHECK(t, WTRIG_COMMAND)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { sprintf(buf,"SYSERR: W-Command Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); mudlog(buf, NRM, LVL_BUILDER, TRUE); continue; } if (*GET_TRIG_ARG(t)=='*' || !strn_cmp(GET_TRIG_ARG(t), cmd, strlen(GET_TRIG_ARG(t)))) { ADD_UID_VAR(buf, t, actor, "actor", 0); skip_spaces(&argument); add_var(&GET_TRIG_VARS(t), "arg", argument, 0); skip_spaces(&cmd); add_var(&GET_TRIG_VARS(t), "cmd", cmd, 0); return script_driver(room, t, WLD_TRIGGER, TRIG_NEW); } } return 0; }
/** * This is the command interpreter used by vehicless, called by script_driver. * * @param vehicle_data *veh The vehicle that's acting. * @param char *argument The typed-in arg. */ void vehicle_command_interpreter(vehicle_data *veh, char *argument) { char line[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH]; int cmd, length; skip_spaces(&argument); /* just drop to next line for hitting CR */ if (!*argument) { return; } half_chop(argument, arg, line); /* find the command */ for (length = strlen(arg), cmd = 0; *veh_cmd_info[cmd].command != '\n'; cmd++) { if (!strn_cmp(veh_cmd_info[cmd].command, arg, length)) { break; } } if (*veh_cmd_info[cmd].command == '\n') { veh_log(veh, "Unknown vehicle cmd: '%s'", argument); } else { ((*veh_cmd_info[cmd].command_pointer) (veh, line, cmd, veh_cmd_info[cmd].subcmd)); } }
/* checks for command trigger on specific object. assumes obj has cmd trig */ int cmd_otrig(obj_data *obj, char_data *actor, char *cmd, char *argument, int type) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (obj && SCRIPT_CHECK(obj, OTRIG_COMMAND)) for (t = TRIGGERS(SCRIPT(obj)); t; t = t->next) { if (!TRIGGER_CHECK(t, OTRIG_COMMAND)) continue; if (IS_SET(GET_TRIG_NARG(t), type) && (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t))) { mudlog(NRM, LVL_BUILDER, TRUE, "SYSERR: O-Command Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); continue; } if (IS_SET(GET_TRIG_NARG(t), type) && (*GET_TRIG_ARG(t) == '*' || !strn_cmp(GET_TRIG_ARG(t), cmd, strlen(GET_TRIG_ARG(t))))) { ADD_UID_VAR(buf, t, actor, "actor", 0); skip_spaces(&argument); add_var(&GET_TRIG_VARS(t), "arg", argument, 0); skip_spaces(&cmd); add_var(&GET_TRIG_VARS(t), "cmd", cmd, 0); if (script_driver(&obj, t, OBJ_TRIGGER, TRIG_NEW)) return 1; } } return 0; }
int main(void) { char *s1, *s2; char s3[] = "fiast", s4[] = "firbalaportocala"; s1 = s3; printf("%d", strn_cmp(s1, s4, 2)); return 0; }
/** * Checks for common building problems and reports them to ch. * * @param bld_data *bld The building to audit. * @param char_data *ch The person to report to. * @return bool TRUE if any problems were reported; FALSE if all good. */ bool audit_building(bld_data *bld, char_data *ch) { extern bool audit_extra_descs(any_vnum vnum, struct extra_descr_data *list, char_data *ch); extern bool audit_interactions(any_vnum vnum, struct interaction_item *list, int attach_type, char_data *ch); extern bool audit_spawns(any_vnum vnum, struct spawn_info *list, char_data *ch); bool problem = FALSE; if (!str_cmp(GET_BLD_NAME(bld), "Unnamed Building")) { olc_audit_msg(ch, GET_BLD_VNUM(bld), "Name not set"); problem = TRUE; } if (!str_cmp(GET_BLD_TITLE(bld), "An Unnamed Building")) { olc_audit_msg(ch, GET_BLD_VNUM(bld), "Title not set"); problem = TRUE; } if (!IS_SET(GET_BLD_FLAGS(bld), BLD_ROOM) && !str_cmp(GET_BLD_ICON(bld), "&0[ ]")) { olc_audit_msg(ch, GET_BLD_VNUM(bld), "Icon not set"); problem = TRUE; } if (!IS_SET(GET_BLD_FLAGS(bld), BLD_OPEN) && (!GET_BLD_DESC(bld) || !*GET_BLD_DESC(bld) || !str_cmp(GET_BLD_DESC(bld), "Nothing.\r\n"))) { olc_audit_msg(ch, GET_BLD_VNUM(bld), "Description not set"); problem = TRUE; } else if (!IS_SET(GET_BLD_FLAGS(bld), BLD_OPEN) && !strn_cmp(GET_BLD_DESC(bld), "Nothing.", 8)) { olc_audit_msg(ch, GET_BLD_VNUM(bld), "Description starting with 'Nothing.'"); problem = TRUE; } if (GET_BLD_EXTRA_ROOMS(bld) > 0 && IS_SET(GET_BLD_FLAGS(bld), BLD_ROOM)) { olc_audit_msg(ch, GET_BLD_VNUM(bld), "Designated room has extra rooms set"); problem = TRUE; } if (GET_BLD_EXTRA_ROOMS(bld) > 0 && GET_BLD_DESIGNATE_FLAGS(bld) == NOBITS) { olc_audit_msg(ch, GET_BLD_VNUM(bld), "Has extra rooms but no designate flags"); problem = TRUE; } if (IS_SET(GET_BLD_FLAGS(bld), BLD_ROOM) && IS_SET(GET_BLD_FLAGS(bld), BLD_OPEN | BLD_CLOSED | BLD_TWO_ENTRANCES | BLD_ATTACH_ROAD | BLD_INTERLINK)) { olc_audit_msg(ch, GET_BLD_VNUM(bld), "Designated room has incompatible flag(s)"); problem = TRUE; } if (!IS_SET(GET_BLD_FLAGS(bld), BLD_ROOM) && IS_SET(GET_BLD_FLAGS(bld), BLD_SECONDARY_TERRITORY)) { olc_audit_msg(ch, GET_BLD_VNUM(bld), "2ND-TERRITORY flag on a non-designated building"); problem = TRUE; } problem |= audit_extra_descs(GET_BLD_VNUM(bld), GET_BLD_EX_DESCS(bld), ch); problem |= audit_spawns(GET_BLD_VNUM(bld), GET_BLD_SPAWNS(bld), ch); problem |= audit_interactions(GET_BLD_VNUM(bld), GET_BLD_INTERACTIONS(bld), TYPE_ROOM, ch); return problem; }
int read_type_list(FILE *shop_f, struct shop_buy_data * list, int new_format, int max) { int index, num, len = 0, error = 0; char *ptr; if (!new_format) return (read_list(shop_f, list, 0, max, LIST_TRADE)); do { fgets(buf, MAX_STRING_LENGTH - 1, shop_f); if ((ptr = strchr(buf, ';')) != NULL) *ptr = 0; else *(END_OF(buf) - 1) = 0; for (index = 0, num = NOTHING; *item_types[index] != '\n'; index++) if (!strn_cmp(item_types[index], buf, strlen(item_types[index]))) { num = index; strcpy(buf, buf + strlen(item_types[index])); break; } ptr = buf; if (num == NOTHING) { sscanf(buf, "%d", &num); while (!isdigit(*ptr)) ptr++; while (isdigit(*ptr)) ptr++; } while (isspace(*ptr)) ptr++; while (isspace(*(END_OF(ptr) - 1))) *(END_OF(ptr) - 1) = 0; error += add_to_list(list, LIST_TRADE, &len, &num); if (*ptr) BUY_WORD(list[len - 1]) = str_dup(ptr); } while (num >= 0); return (end_read_list(list, len, error)); }
int command_mtrigger(char_data *actor, char *cmd, char *argument) { char_data *ch, *ch_next; trig_data *t; char buf[MAX_INPUT_LENGTH]; /* prevent people we like from becoming trapped :P */ if (!valid_dg_target(actor, 0)) return 0; for (ch = world[IN_ROOM(actor)].people; ch; ch = ch_next) { ch_next = ch->next_in_room; if (SCRIPT_CHECK(ch, MTRIG_COMMAND) && !AFF_FLAGGED(ch, AFF_CHARM) && ((actor != ch) || CONFIG_SCRIPT_PLAYERS)) { for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (!TRIGGER_CHECK(t, MTRIG_COMMAND)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { mudlog(NRM, LVL_BUILDER, TRUE, "SYSERR: Command Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); continue; } if (*GET_TRIG_ARG(t) == '*' || !strn_cmp(GET_TRIG_ARG(t), cmd, strlen(GET_TRIG_ARG(t)))) { ADD_UID_VAR(buf, t, actor, "actor", 0); skip_spaces(&argument); add_var(&GET_TRIG_VARS(t), "arg", argument, 0); skip_spaces(&cmd); add_var(&GET_TRIG_VARS(t), "cmd", cmd, 0); if (script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW)) return 1; } } } } return 0; }
/* * This is the command interpreter used by objects, called by script_driver. */ void obj_command_interpreter(obj_data *obj, char *argument) { int cmd, length; char line[MAX_INPUT_LENGTH], arg[MAX_INPUT_LENGTH]; skip_spaces(&argument); /* just drop to next line for hitting CR */ if (!*argument) return; half_chop(argument, arg, line); /* find the command */ for (length = strlen(arg), cmd = 0; *obj_cmd_info[cmd].command != '\n'; cmd++) if (!strn_cmp(obj_cmd_info[cmd].command, arg, length)) break; if (*obj_cmd_info[cmd].command == '\n') obj_log(obj, "Unknown object cmd: '%s'", argument); else ((*obj_cmd_info[cmd].command_pointer) (obj, line, cmd, obj_cmd_info[cmd].subcmd)); }