⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 variables.c

📁 Linux下的MUD客户端程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    get_arg_in_braces(arg, list, 1);    substitute_vars(list,temp);    substitute_myvars(temp,list,ses);    arg = list;    i=0;    do {      if(*arg) i++;      arg = get_arg_in_braces(arg, temp, 0);    } while(*arg);    sprintf(temp,"{%s} {%d}",left,i);    var_command(temp,ses);  }}/******************************************************************//* the #getitemnr command * By Sverre Normann                     */  /******************************************************************//* Syntax: #getitemnr {destination variable} {item number} {list} *//******************************************************************//* Note: This will return a specified item from a list.           *//*       An item is either a word, or grouped words in brackets.  *//*       Ex:  #geti {dothis} {2} {smile {say Hi!} flip bounce}    *//*            -> dothis = say Hi!                                 *//******************************************************************/void getitemnr_command(arg, ses)    char   *arg;  struct session *ses;{  char destvar[BUFFER_SIZE], itemnrtxt[BUFFER_SIZE],       list[BUFFER_SIZE], temp1[BUFFER_SIZE], temp2[BUFFER_SIZE];  int  i, itemnr;  arg = get_arg_in_braces(arg, destvar, 0);  arg = get_arg_in_braces(arg, itemnrtxt, 0);    if (!*destvar || !*itemnrtxt) {    tintin_puts2("#Error - Syntax: #getitemnr {destination variable} {item number} {list}", ses);  }  else {    substitute_vars(destvar,temp1);    substitute_myvars(temp1,destvar,ses);    substitute_vars(itemnrtxt,temp1);    substitute_myvars(temp1,itemnrtxt,ses);    if (sscanf(itemnrtxt,"%d",&itemnr)!=1) {      tintin_puts2("#Error in #getitemnr - item number has to be a digit!",ses);    }    else {      get_arg_in_braces(arg, list, 1);      substitute_vars(list,temp1);      substitute_myvars(temp1,list,ses);      arg = list;      i=0;      if (itemnr>0) {        do {          arg = get_arg_in_braces(arg, temp1, 0);          i++;        } while (i!=itemnr);        if (*temp1) {          sprintf(temp2,"{%s} {%s}",destvar,temp1);          var_command(temp2,ses);        }        else {          tintin_puts2("#Error in #getitemnr - item doesn't exist!",ses);        }      }    }  }}/*************************//* the #tolower command *//*************************/void tolower_command(arg, ses)     char *arg;     struct session *ses;{  char left[BUFFER_SIZE], right[BUFFER_SIZE], arg2[BUFFER_SIZE], *p;  struct listnode *tempvars, *ln;  tempvars = (ses) ? ses->myvars : common_myvars;  arg = get_arg_in_braces(arg, left,0);  arg = get_arg_in_braces(arg, right,1);  if (!*left || !*right) {    tintin_puts2("#Syntax: #tolower <var> <text>", ses);  } else {    if ((ln=searchnode_list(tempvars, left)) != NULL)      deletenode_list(tempvars, ln);    for (p=right; *p; p++)      *p = tolower(*p);    insertnode_list(tempvars, left, right, "0", ALPHA);    varnum++;    if (mesvar[5]) {      sprintf(arg2, "#Ok. $%s is now set to {%s}.",left, right);      tintin_puts2(arg2, ses);    }  }}/*************************//* the #toupper command *//*************************/void toupper_command(arg, ses)     char *arg;     struct session *ses;{  char left[BUFFER_SIZE], right[BUFFER_SIZE], arg2[BUFFER_SIZE], *p;  struct listnode *tempvars, *ln;  tempvars = (ses) ? ses->myvars : common_myvars;  arg = get_arg_in_braces(arg, left,0);  arg = get_arg_in_braces(arg, right,1);  if (!*left || !*right) {    tintin_puts2("#Syntax: #toupper <var> <text>", ses);  } else {    if ((ln=searchnode_list(tempvars, left)) != NULL)      deletenode_list(tempvars, ln);    for (p=right; *p; p++)      *p = toupper(*p);    insertnode_list(tempvars, left, right, "0", ALPHA);    varnum++;    if (mesvar[5]) {      sprintf(arg2, "#Ok. $%s is now set to {%s}.",left, right);      tintin_puts2(arg2, ses);    }  }}/***************************************************//* the #revstring command * By Sverre Normann      *//***************************************************//* Syntax: #revstr {destination variable} {string} *//***************************************************//* Will return the reverse of a string.            *//***************************************************/void revstring_command(arg, ses)  char   *arg;  struct session *ses;{   char destvar[BUFFER_SIZE], origstring[BUFFER_SIZE],       revstring[BUFFER_SIZE], temp[BUFFER_SIZE], *p, *q;           arg = get_arg_in_braces(arg, destvar, 0);  arg = get_arg_in_braces(arg, origstring, 1);           if (!*destvar) {    tintin_puts2("#Error - Syntax: #revstr {destination variable} {string}", ses);  }  else {    substitute_vars(destvar,temp);    substitute_myvars(temp,destvar,ses);    substitute_vars(origstring,temp);    substitute_myvars(temp,origstring,ses);    q=revstring;    if (strlen(origstring))      for (p=origstring+strlen(origstring)-1; p>=origstring; p--) {        *q=*p;        q++;      }    *q='\0';    sprintf(temp,"{%s} {%s}",destvar,revstring);    var_command(temp,ses);  }}/************************************************//* the #postpad command * By Sverre Normann     *//************************************************//* Syntax: #postpad {dest var} {length} {text}  *//*****************************************************//* Truncates text if it's too long for the specified *//* length. Pads with spaces at the end if the text   *//* isn't long enough.                                *//*****************************************************/void postpad_command(arg, ses)  char   *arg;  struct session *ses;{  char destvar[BUFFER_SIZE], textstr[BUFFER_SIZE],       newtextstr[BUFFER_SIZE],temp[BUFFER_SIZE], *p, *q,       lengthstr[BUFFER_SIZE];  int  length;   arg = get_arg_in_braces(arg, destvar, 0);  arg = get_arg_in_braces(arg, lengthstr, 0);  arg = get_arg_in_braces(arg, textstr, 1);   if (!*lengthstr) {    tintin_puts2("#Error - Syntax: #postpad {dest var} {length} {text}", ses);  }  else {    substitute_vars(destvar,temp);    substitute_myvars(temp,destvar,ses);    substitute_vars(lengthstr,temp);       substitute_myvars(temp,lengthstr,ses);    substitute_vars(textstr,temp);     substitute_myvars(temp,textstr,ses);        if (!sscanf(lengthstr,"%d",&length) || (length < 1)) {      tintin_puts2("#Error in #postpad - length has to be a positive digit > 0 !",ses);    }    else {      strncpy(newtextstr,textstr,length);      newtextstr[length]='\0';      if (strlen(textstr) < length) {        p=newtextstr+strlen(newtextstr);        for (length-=strlen(newtextstr);length>0;length--)          *p++=' ';      }      sprintf(temp,"{%s} {%s}",destvar,newtextstr);      var_command(temp,ses);    }  }} /***********************************************//* the #prepad command * By Sverre Normann     *//***********************************************//* Syntax: #prepad {dest var} {length} {text}  *//*****************************************************//* Truncates text if it's too long for the specified *//* length. Pads with spaces at the start if the text *//* isn't long enough.                                *//*****************************************************/void prepad_command(arg, ses)  char   *arg;  struct session *ses;{  char destvar[BUFFER_SIZE], textstr[BUFFER_SIZE],        newtextstr[BUFFER_SIZE],temp[BUFFER_SIZE], *p, *q,       lengthstr[BUFFER_SIZE];  int  length,i;   arg = get_arg_in_braces(arg, destvar, 0);  arg = get_arg_in_braces(arg, lengthstr, 0);  arg = get_arg_in_braces(arg, textstr, 1);    if (!*lengthstr) {    tintin_puts2("#Error - Syntax: #prepad {dest var} {length} {text}", ses);  }    else {    substitute_vars(destvar,temp);    substitute_myvars(temp,destvar,ses);    substitute_vars(lengthstr,temp);     substitute_myvars(temp,lengthstr,ses);     substitute_vars(textstr,temp);      substitute_myvars(temp,textstr,ses);    if (!sscanf(lengthstr,"%d",&length) || (length < 1)) {      tintin_puts2("#Error in #prepad - length has to be a postitive digit > 0 !",ses);    }       else {      p=newtextstr;      if (strlen(textstr) < length) {        for (i=length-strlen(textstr);i>0;i--)          *p++=' ';      }      strncpy(p,textstr,length);      p[length]='\0';      sprintf(temp,"{%s} {%s}",destvar,newtextstr);      var_command(temp,ses);    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -