Exemplo n.º 1
0
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;
    }
  }
}
Exemplo n.º 2
0
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;
        }
      }
  }
}
Exemplo n.º 3
0
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;
		}
	}
}
Exemplo n.º 4
0
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");
}
Exemplo n.º 5
0
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");
}
Exemplo n.º 6
0
Arquivo: lexer.c Projeto: girards/42sh
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);
}
Exemplo n.º 7
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;
      }
    }
}
Exemplo n.º 8
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)) {
        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;
      }	
    }
}