void speech_wtrigger(char_data *actor, char *str) { struct room_data *room; trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!actor || !SCRIPT_CHECK(&world[IN_ROOM(actor)], WTRIG_SPEECH)) return; room = &world[IN_ROOM(actor)]; for (t = TRIGGERS(SCRIPT(room)); t; t = t->next) { if (!TRIGGER_CHECK(t, WTRIG_SPEECH)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { sprintf(buf,"SYSERR: W-Speech Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); mudlog(buf, NRM, LVL_BUILDER, TRUE); continue; } if (((GET_TRIG_NARG(t) && word_check(str, GET_TRIG_ARG(t))) || (!GET_TRIG_NARG(t) && is_substring(GET_TRIG_ARG(t), str)))) { ADD_UID_VAR(buf, t, actor, "actor", 0); add_var(&GET_TRIG_VARS(t), "speech", str, 0); script_driver(room, t, WLD_TRIGGER, TRIG_NEW); break; } } }
void speech_mtrigger(char_data *actor, char *str) { char_data *ch, *ch_next; trig_data *t; char buf[MAX_INPUT_LENGTH]; for (ch = world[IN_ROOM(actor)].people; ch; ch = ch_next) { ch_next = ch->next_in_room; if (SCRIPT_CHECK(ch, MTRIG_SPEECH) && AWAKE(ch) && !AFF_FLAGGED(ch, AFF_CHARM) && (actor!=ch)) for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (!TRIGGER_CHECK(t, MTRIG_SPEECH)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { sprintf(buf,"SYSERR: Speech Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); mudlog(buf, NRM, LVL_BUILDER, TRUE); continue; } if (((GET_TRIG_NARG(t) && word_check(str, GET_TRIG_ARG(t))) || (!GET_TRIG_NARG(t) && is_substring(GET_TRIG_ARG(t), str)))) { ADD_UID_VAR(buf, t, actor, "actor", 0); add_var(&GET_TRIG_VARS(t), "speech", str, 0); script_driver(ch, t, MOB_TRIGGER, TRIG_NEW); break; } } } }
void js_speech_test(Character *actor, const char *str, JSBindable *self=0 ) { std::shared_ptr<std::vector<JSTrigger*> > js_scripts; std::shared_ptr<std::vector<JSTrigger*> > js_scripts2; js_scripts=globalJS_Scripts; js_scripts2 = js_scripts; if( self ) { if (!self->js_scripts || self->js_scripts->size() == 0) return; js_scripts = self->js_scripts; } else js_scripts = globalJS_Scripts; for (int i = 0; i < js_scripts->size(); ++i) { // this looks for scripts that _might_ match if (js_scripts->at(i)->isFlagged(JS::SPEECH) && (!self || is_allowed(self, actor, js_scripts->at(i)))) { // this looks for scripts that _do_ match JSTrigger* trig = js_scripts->at(i); int rval=0; switch (trig->narg) { case 2: // exact match if (trig->args == str) rval = JSManager::get()->execute(trig, self, actor, str); break; case 1: // substring match if (word_check(str, trig->args.c_str())) rval = JSManager::get()->execute(trig, self, actor, str); break; case 0: // substring match // cout << str << ":::" << trig->args << endl; // cout << word_check(str, trig->args.c_str()) << endl; if (word_check(str, trig->args.c_str())) { rval = JSManager::get()->execute(trig, (Character*)self, actor, str); } break; default: MudLog(NRM, LVL_BUILDER, TRUE, "Error in script %d : Narg %d is not 0, 1, or 2", trig->vnum, trig->narg); break; } //if( rval == 0 ) return; } } }
void word_test (unsigned addr) { unsigned i, n; printf (&uart, "\nTesting address %08X... ", addr); for (i=0; ; ++i) { for (n=1; n; n<<=1) { word_check (addr, n); word_check (addr, ~n); } putchar (&uart, "|/-\\" [i&3]); putchar (&uart, '\b'); if (peekchar (&uart) >= 0) { getchar (&uart); break; } } puts (&uart, "done.\n"); }
void crams_test (void) { unsigned addr, nerrors; puts (&uart, "\nTesting all CRAMS "); puts (&uart, "--------------------------------"); puts (&uart, "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); nerrors = 0; for (addr=CRAMS_START; addr<CRAMS_START+CRAMS_SIZE; addr+=4) { nerrors += word_check (addr, 0x55555555); nerrors += word_check (addr, 0xAAAAAAAA); if (nerrors > 20) { puts (&uart, "\nToo many errors, test stopped.\n"); return; } /* Заменяем '-' на '.' каждые 64 Кб */ if ((addr & 0xfffc) == 0xfffc) putchar (&uart, '.'); } puts (&uart, " done.\n"); }
int lex(char *str, t_token **token) { int i; i = 0; while (str[i]) { i = comma_check(str, i, token); i = pipe_check(str, i, token); i = red_r(str, i, token); i = red_l(str, i, token); i = check_and(str, i, token); i = word_check(str, i, token); i = check_unk(str, i, token); } return (0); }
void act_mtrigger(const char_data *ch, char *str, char_data *actor, char_data *victim, obj_data *object, obj_data *target, char *arg) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (SCRIPT_CHECK(ch, MTRIG_ACT) && !AFF_FLAGGED(ch, AFF_CHARM) && (actor != ch)) for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (!TRIGGER_CHECK(t, MTRIG_ACT)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { mudlog(NRM, LVL_BUILDER, TRUE, "SYSERR: Act Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); continue; } if (((GET_TRIG_NARG(t) && word_check(str, GET_TRIG_ARG(t))) || (!GET_TRIG_NARG(t) && is_substring(GET_TRIG_ARG(t), str)))) { if (actor) ADD_UID_VAR(buf, t, actor, "actor", 0); if (victim) ADD_UID_VAR(buf, t, victim, "victim", 0); if (object) ADD_UID_VAR(buf, t, object, "object", 0); if (target) ADD_UID_VAR(buf, t, target, "target", 0); if (str) { /* we're guaranteed to have a string ending with \r\n\0 */ char *nstr = strdup(str), *fstr = nstr, *p = strchr(nstr, '\r'); skip_spaces(&nstr); *p = '\0'; add_var(&GET_TRIG_VARS(t), "arg", nstr, 0); free(fstr); } script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW); break; } } }
void act_mtrigger(const char_data *ch, char *str, char_data *actor, char_data *victim, obj_data *object, obj_data *target, char *arg) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (SCRIPT_CHECK(ch, MTRIG_ACT) && !AFF_FLAGGED(ch, AFF_CHARM) && (actor!=ch)) for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (!TRIGGER_CHECK(t, MTRIG_ACT)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { sprintf(buf,"SYSERR: Act Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); mudlog(buf, NRM, LVL_BUILDER, TRUE); continue; } if (((GET_TRIG_NARG(t) && word_check(str, GET_TRIG_ARG(t))) || (!GET_TRIG_NARG(t) && is_substring(GET_TRIG_ARG(t), str)))) { if (actor) ADD_UID_VAR(buf, t, actor, "actor", 0); if (victim) ADD_UID_VAR(buf, t, victim, "victim", 0); if (object) ADD_UID_VAR(buf, t, object, "object", 0); if (target) ADD_UID_VAR(buf, t, target, "target", 0); if (arg) { skip_spaces(&arg); add_var(&GET_TRIG_VARS(t), "arg", arg, 0); } script_driver(ch, t, MOB_TRIGGER, TRIG_NEW); break; } } }