Example #1
0
void            input_for_one(player * p)
{
   char           *pick;
   void            (*fn) ();

   if (p->input_to_fn &&
			!(current_room == prison && !(p->residency & (ADMIN | SU))))
   {
      p->idle = 0;
      p->idle_msg[0] = 0;
      last_com = &input_to;
      stack_check = stack;
      fn = p->input_to_fn;
      (*fn) (p, p->ibuffer);
      if (stack != stack_check)
         bad_stack();
      sys_flags &= ~(FAILED_COMMAND | PIPE | ROOM_TAG | FRIEND_TAG
                     | EVERYONE_TAG);
      command_type = 0;
      return;
   }
   if (!p->ibuffer[0])
      return;
   p->idle = 0;
   p->idle_msg[0] = 0;
   action = "doing command";
   if (p->ibuffer[0] != '#')
   {
      if (p->saved_flags & CONVERSE)
      {
         pick = p->ibuffer;
         while (*pick && isspace(*pick))
            pick++;
         if (*pick)
            if (*pick == '/')
               if (current_room == prison &&
                   !(p->residency & (ADMIN | SU)))
                  sub_command(p, pick + 1, restricted_list);
               else
                  match_commands(p, pick + 1);
            else
               say(p, pick);
      } else if (current_room == prison && !(p->residency & (ADMIN | SU)))
         sub_command(p, p->ibuffer, restricted_list);
      else
         match_commands(p, p->ibuffer);
   }
}
Example #2
0
void news_command(player *p,char *str)
{
    if (p->edit_info) {
	tell_player(p,"Can't do news commands whilst in editor.\n");
	return;
    }

    if ((*str=='/') && (p->input_to_fn==news_command)) {
	match_commands(p,str+1);
	if (!(p->flags&PANIC) && (p->input_to_fn==news_command))
	    do_prompt(p,"News Mode >");
	return;
    }
    if (!*str) 
	if (p->input_to_fn==news_command) {
	    tell_player(p,"Format: news <action>\n");
	    if (!(p->flags&PANIC) && (p->input_to_fn==news_command))
		do_prompt(p,"News Mode >");
	    return;
	}
	else {
	    tell_player(p,"Entering news mode. Use 'end' to leave.\n"
			"'/<command>' does normal commands.\n");
	    p->flags &= ~PROMPT;
	    p->input_to_fn=news_command;
	}
    else sub_command(p,str,news_list);
    if (!(p->flags&PANIC) && (p->input_to_fn==news_command))
	do_prompt(p,"News Mode >");
}
Example #3
0
void intercom_command(player * p, char *str)
{
  if (!*str)
  {
    tell_player(p, " Format: intercom <sub command>\n");
    return;
  }
  sub_command(p, str, intercom_list);

  return;
}
Example #4
0
void editor_main(player *p,char *str)
{
  if (!p->edit_info) {
    log("error","Editor called with no edit_info");
    return;
  }
  if (*str=='/') {
    restore_flags(p);
    match_commands(p,str+1);
    save_flags(p);
    return;
  }
  if (*str=='.') {
    sub_command(p,str+1,editor_list);
    if (p->edit_info) do_prompt(p,"+");
    return;
  }
  insert_line(p,str);
  do_prompt(p,"+");
}
Example #5
0
void mail_command(player *p,char *str)
{
    if (p->edit_info) {
	tell_player(p,"Can't do mail commands whilst in editor.\n");
	return;
    }

    if (!p->saved) {
	tell_player(p,"You have no save information, and so can't use "
		    "mail.\n");
	return;
    }

    if ((*str=='/') && (p->input_to_fn==mail_command)) {
	match_commands(p,str+1);
	if (!(p->flags&PANIC) && (p->input_to_fn==mail_command))
	    do_prompt(p,"Mail Mode >");
	return;
    }
    if (!*str) 
	if (p->input_to_fn==mail_command) {
	    tell_player(p,"Format: mail <action>\n");
	    if (!(p->flags&PANIC) && (p->input_to_fn==mail_command))
		do_prompt(p,"Mail Mode >");
	    return;
	}
	else {
	    tell_player(p,"Entering mail mode. Use 'end' to leave.\n"
			"'/<command>' does normal commands.\n");
	    p->flags &= ~PROMPT;
	    p->input_to_fn=mail_command;
	}
    else sub_command(p,str,mail_list);
    if (!(p->flags&PANIC) && (p->input_to_fn==mail_command))
	do_prompt(p,"Mail Mode >");
}
Example #6
0
/*
 * void execute_commands()
 *
 * Processes commands until the QUIT command is entered
 *
 */
void execute_commands() {
  char buffer[MAX_INPUT_STRING];
  int num_chars = 0;

  while ( TRUE ) {
	
	printf( PROMPT );

	scanf("%s", buffer);
	num_chars = strlen(buffer);
	if ( is_valid_number( buffer ) ) {
	  push( atoi(buffer) );
	  continue;
	}

	if ( num_chars > 1 ) {
	  printf( BAD_INPUT_MSG );
	  continue;
	}

	if ( tolower( buffer[0] ) == QUIT ) return;

	/* Remove the TODO_MSG as you implement and test commands */
	switch( tolower( buffer[0] ) ){
	case ADD:
	  add_command();
	  break;
	case SUB:
	  sub_command();
	  break;
	case MULT:
	  mult_command();
	  break;
	case DIV:
	  div_command();
	  break;
	case MOD:
	  mod_command();
	  break;
	case AND:
	  and_command();
	  break;
	case OR:
	  or_command();
	  break;
	case XOR:
	  xor_command();
	  break;
	case NOT:
	  not_command();
	  break;
	case FACTORIAL:
	  factorial_command();
	  break;
	case TOGGLE_HEX:
	  toggle_hex();
	  break;
	case TOGGLE_BUG:
	  toggle_bug();
	  break;
	case PRINT_STACK:
	  print_stack();
	  break;
	case PRINT_TOP:
	  print_top();
	  break;
	case CLEAR:
	  clear_command();
	  break;
	case EXCHANGE:
	  exchange_command();
	  break;
	case POP:
	  pop();
	  break;
	case HELP:
	  help_command();
	  break;
	default:
	  printf( BAD_INPUT_MSG );
	}
  }
}