📄 act_info.c
字号:
{
if ( *argument == cEnd )
{
argument++;
break;
}
*pArg++ = *argument++;
}
*pArg = '\0';
pArg = arg2;
while ( isspace(*argument) )
argument++;
cEnd = ' ';
if ( *argument == '\'' || *argument == '"' )
cEnd = *argument++;
while ( *argument != '\0' )
{
if ( *argument == cEnd )
{
argument++;
break;
}
*pArg++ = *argument++;
}
*pArg = '\0';
if ( arg1[0] == '\0' || arg2[0] == '\0' )
{
send_to_char( "Syntax: password <old> <new>.\n\r", ch );
return;
}
if ( strcmp( crypt( arg1, ch->pcdata->pwd ), ch->pcdata->pwd ) )
{
WAIT_STATE( ch, 40 );
send_to_char( "Wrong password. Wait 10 seconds.\n\r", ch );
return;
}
if ( strlen(arg2) < 5 )
{
send_to_char(
"New password must be at least five characters long.\n\r", ch );
return;
}
/*
* No tilde allowed because of player file format.
*/
pwdnew = crypt( arg2, ch->name );
for ( p = pwdnew; *p != '\0'; p++ )
{
if ( *p == '~' )
{
send_to_char(
"New password not acceptable, try again.\n\r", ch );
return;
}
}
free_string( ch->pcdata->pwd );
ch->pcdata->pwd = str_dup( pwdnew );
save_char_obj( ch );
send_to_char( "Ok.\n\r", ch );
return;
}
void do_socials( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
int iSocial;
int col;
col = 0;
for ( iSocial = 0; social_table[iSocial].name[0] != '\0'; iSocial++ )
{
sprintf( buf, "%-12s", social_table[iSocial].name );
send_to_char( buf, ch );
if ( ++col % 6 == 0 )
send_to_char( "\n\r", ch );
}
if ( col % 6 != 0 )
send_to_char( "\n\r", ch );
return;
}
/*
* Contributed by Alander.
*/
void do_commands( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
char buf1[MAX_STRING_LENGTH];
int cmd;
int col;
buf1[0] = '\0';
col = 0;
for ( cmd = 0; cmd_table[cmd].name[0] != '\0'; cmd++ )
{
if ( cmd_table[cmd].level < LEVEL_HERO
&& cmd_table[cmd].level <= get_trust( ch ) )
{
sprintf( buf, "%-12s", cmd_table[cmd].name );
strcat( buf1, buf );
if ( ++col % 6 == 0 )
strcat( buf1, "\n\r" );
}
}
if ( col % 6 != 0 )
strcat( buf1, "\n\r" );
send_to_char( buf1, ch );
return;
}
void do_channels( CHAR_DATA *ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
one_argument( argument, arg );
if ( arg[0] == '\0' )
{
if ( !IS_NPC(ch) && IS_SET(ch->act, PLR_SILENCE) )
{
send_to_char( "You are silenced.\n\r", ch );
return;
}
send_to_char( "Channels:", ch );
send_to_char( !IS_SET(ch->deaf, CHANNEL_AUCTION)
? " +AUCTION"
: " -auction",
ch );
send_to_char( !IS_SET(ch->deaf, CHANNEL_CHAT)
? " +CHAT"
: " -chat",
ch );
#if 0
send_to_char( !IS_SET(ch->deaf, CHANNEL_HACKER)
? " +HACKER"
: " -hacker",
ch );
#endif
if ( IS_HERO(ch) )
{
send_to_char( !IS_SET(ch->deaf, CHANNEL_IMMTALK)
? " +IMMTALK"
: " -immtalk",
ch );
}
send_to_char( !IS_SET(ch->deaf, CHANNEL_MUSIC)
? " +MUSIC"
: " -music",
ch );
send_to_char( !IS_SET(ch->deaf, CHANNEL_QUESTION)
? " +QUESTION"
: " -question",
ch );
send_to_char( !IS_SET(ch->deaf, CHANNEL_SHOUT)
? " +SHOUT"
: " -shout",
ch );
send_to_char( !IS_SET(ch->deaf, CHANNEL_YELL)
? " +YELL"
: " -yell",
ch );
send_to_char( ".\n\r", ch );
}
else
{
bool fClear;
int bit;
if ( arg[0] == '+' ) fClear = TRUE;
else if ( arg[0] == '-' ) fClear = FALSE;
else
{
send_to_char( "Channels -channel or +channel?\n\r", ch );
return;
}
if ( !str_cmp( arg+1, "auction" ) ) bit = CHANNEL_AUCTION;
else if ( !str_cmp( arg+1, "chat" ) ) bit = CHANNEL_CHAT;
#if 0
else if ( !str_cmp( arg+1, "hacker" ) ) bit = CHANNEL_HACKER;
#endif
else if ( !str_cmp( arg+1, "immtalk" ) ) bit = CHANNEL_IMMTALK;
else if ( !str_cmp( arg+1, "music" ) ) bit = CHANNEL_MUSIC;
else if ( !str_cmp( arg+1, "question" ) ) bit = CHANNEL_QUESTION;
else if ( !str_cmp( arg+1, "shout" ) ) bit = CHANNEL_SHOUT;
else if ( !str_cmp( arg+1, "yell" ) ) bit = CHANNEL_YELL;
else
{
send_to_char( "Set or clear which channel?\n\r", ch );
return;
}
if ( fClear )
REMOVE_BIT (ch->deaf, bit);
else
SET_BIT (ch->deaf, bit);
send_to_char( "Ok.\n\r", ch );
}
return;
}
/*
* Contributed by Grodyn.
*/
void do_config( CHAR_DATA *ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
if ( IS_NPC(ch) )
return;
one_argument( argument, arg );
if ( arg[0] == '\0' )
{
send_to_char( "[ Keyword ] Option\n\r", ch );
send_to_char( IS_SET(ch->act, PLR_AUTOEXIT)
? "[+AUTOEXIT ] You automatically see exits.\n\r"
: "[-autoexit ] You don't automatically see exits.\n\r"
, ch );
send_to_char( IS_SET(ch->act, PLR_AUTOLOOT)
? "[+AUTOLOOT ] You automatically loot corpses.\n\r"
: "[-autoloot ] You don't automatically loot corpses.\n\r"
, ch );
send_to_char( IS_SET(ch->act, PLR_AUTOSAC)
? "[+AUTOSAC ] You automatically sacrifice corpses.\n\r"
: "[-autosac ] You don't automatically sacrifice corpses.\n\r"
, ch );
send_to_char( IS_SET(ch->act, PLR_BLANK)
? "[+BLANK ] You have a blank line before your prompt.\n\r"
: "[-blank ] You have no blank line before your prompt.\n\r"
, ch );
send_to_char( IS_SET(ch->act, PLR_BRIEF)
? "[+BRIEF ] You see brief descriptions.\n\r"
: "[-brief ] You see long descriptions.\n\r"
, ch );
send_to_char( IS_SET(ch->act, PLR_COMBINE)
? "[+COMBINE ] You see object lists in combined format.\n\r"
: "[-combine ] You see object lists in single format.\n\r"
, ch );
send_to_char( IS_SET(ch->act, PLR_PROMPT)
? "[+PROMPT ] You have a prompt.\n\r"
: "[-prompt ] You don't have a prompt.\n\r"
, ch );
send_to_char( IS_SET(ch->act, PLR_TELNET_GA)
? "[+TELNETGA ] You receive a telnet GA sequence.\n\r"
: "[-telnetga ] You don't receive a telnet GA sequence.\n\r"
, ch );
send_to_char( IS_SET(ch->act, PLR_SILENCE)
? "[+SILENCE ] You are silenced.\n\r"
: ""
, ch );
send_to_char( !IS_SET(ch->act, PLR_NO_EMOTE)
? ""
: "[-emote ] You can't emote.\n\r"
, ch );
send_to_char( !IS_SET(ch->act, PLR_NO_TELL)
? ""
: "[-tell ] You can't use 'tell'.\n\r"
, ch );
}
else
{
bool fSet;
int bit;
if ( arg[0] == '+' ) fSet = TRUE;
else if ( arg[0] == '-' ) fSet = FALSE;
else
{
send_to_char( "Config -option or +option?\n\r", ch );
return;
}
if ( !str_cmp( arg+1, "autoexit" ) ) bit = PLR_AUTOEXIT;
else if ( !str_cmp( arg+1, "autoloot" ) ) bit = PLR_AUTOLOOT;
else if ( !str_cmp( arg+1, "autosac" ) ) bit = PLR_AUTOSAC;
else if ( !str_cmp( arg+1, "blank" ) ) bit = PLR_BLANK;
else if ( !str_cmp( arg+1, "brief" ) ) bit = PLR_BRIEF;
else if ( !str_cmp( arg+1, "combine" ) ) bit = PLR_COMBINE;
else if ( !str_cmp( arg+1, "prompt" ) ) bit = PLR_PROMPT;
else if ( !str_cmp( arg+1, "telnetga" ) ) bit = PLR_TELNET_GA;
else
{
send_to_char( "Config which option?\n\r", ch );
return;
}
if ( fSet )
SET_BIT (ch->act, bit);
else
REMOVE_BIT (ch->act, bit);
send_to_char( "Ok.\n\r", ch );
}
return;
}
void do_wizlist ( CHAR_DATA *ch, char *argument )
{
do_help ( ch, "wizlist" );
return;
}
void do_spells ( CHAR_DATA *ch, char *argument )
{
char buf [MAX_STRING_LENGTH];
char buf1[MAX_STRING_LENGTH];
int sn;
int col;
if ( ( !IS_NPC( ch ) &&
!class_table[ch->class].fMana )
|| IS_NPC ( ch ) )
{
send_to_char ( "You do not know how to cast spells!\n\r", ch );
return;
}
buf1[0] = '\0';
col = 0;
for ( sn = 0; sn < MAX_SKILL; sn++ )
{
if ( skill_table[sn].name == NULL )
break;
if ( ( ch->level < skill_table[sn].skill_level[ch->class] )
|| ( skill_table[sn].skill_level[ch->class] > LEVEL_HERO ) )
continue;
sprintf ( buf, "%18s %3dpts ",
skill_table[sn].name, MANA_COST( ch, sn ) );
strcat( buf1, buf );
if ( ++col % 3 == 0 )
strcat( buf1, "\n\r" );
}
if ( col % 3 != 0 )
strcat( buf1, "\n\r" );
send_to_char ( buf1, ch );
return;
}
void do_slist ( CHAR_DATA *ch, char *argument )
{
char buf [MAX_STRING_LENGTH];
char buf1[MAX_STRING_LENGTH];
int sn;
int col;
int level;
bool pSpell;
if ( ( !IS_NPC( ch ) &&
!class_table[ch->class].fMana )
|| IS_NPC ( ch ) )
{
send_to_char ( "You do not need any stinking spells!\n\r", ch );
return;
}
buf1[0] = '\0';
strcat ( buf1, "ALL Spells available for your class.\n\r\n\r" );
strcat ( buf1, "Lv Spells\n\r\n\r" );
for ( level = 1; level < LEVEL_IMMORTAL; level++ )
{
col = 0;
pSpell = TRUE;
for ( sn = 0; sn < MAX_SKILL; sn++ )
{
if ( skill_table[sn].name == NULL )
break;
if ( skill_table[sn].skill_level[ch->class] != level )
continue;
if (pSpell)
{
sprintf ( buf, "%2d:", level );
strcat ( buf1, buf );
pSpell = FALSE;
}
if ( ++col % 5 == 0 )
strcat ( buf1, " " );
sprintf ( buf, "%18s", skill_table[sn].name );
strcat ( buf1, buf );
if ( col % 4 == 0 )
strcat ( buf1, "\n\r" );
}
if ( col % 4 != 0 )
strcat ( buf1, "\n\r" );
}
send_to_char( buf1, ch );
return;
}
/* by passing the conf command - Kahn */
void do_autoexit ( CHAR_DATA *ch, char *argument )
{
( IS_SET ( ch->act, PLR_AUTOEXIT )
? do_config( ch, "-autoexit" )
: do_config( ch, "+autoexit" ) );
}
void do_autoloot ( CHAR_DATA *ch, char *argument )
{
( IS_SET ( ch->act, PLR_AUTOLOOT )
? do_config( ch, "-autoloot" )
: do_config( ch, "+autoloot" ) );
}
void do_autosac ( CHAR_DATA *ch, char *argument )
{
( IS_SET ( ch->act, PLR_AUTOSAC )
? do_config( ch, "-autosac" )
: do_config( ch, "+autosac" ) );
}
void do_blank ( CHAR_DATA *ch, char *argument )
{
( IS_SET ( ch->act, PLR_BLANK )
? do_config( ch, "-blank" )
: do_config( ch, "+blank" ) );
}
void do_brief ( CHAR_DATA *ch, char *argument )
{
( IS_SET ( ch->act, PLR_BRIEF )
? do_config( ch, "-brief" )
: do_config( ch, "+brief" ) );
}
void do_combine ( CHAR_DATA *ch, char *argument )
{
( IS_SET ( ch->act, PLR_COMBINE )
? do_config( ch, "-combine" )
: do_config( ch, "+combine" ) );
}
void do_pagelen ( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
char arg[MAX_INPUT_LENGTH];
int lines;
one_argument( argument, arg );
if ( arg[0] == '\0' )
lines = 20;
else
lines = atoi( arg );
if ( lines < 1 )
{
send_to_char(
"Negative or Zero values for a page pause is not legal.\n\r",
ch );
return;
}
ch->pcdata->pagelen = lines;
sprintf( buf, "Page pause set to %d lines.\n\r", lines );
send_to_char( buf, ch );
return;
}
/* Do_prompt from Morgenes from Aldara Mud */
void do_prompt( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
// Next line is the Sands fix
ch = ( ch->desc->original != NULL ? ch->desc->original :
ch->desc->character);
if ( argument[0] == '\0' )
{
( IS_SET ( ch->act, PLR_PROMPT )
? do_config( ch, "-prompt" )
: do_config( ch, "+prompt" ) );
return;
}
if( !strcmp( argument, "all" ) )
strcpy( buf, "<%hhp %mm %vmv> ");
else
{
if ( strlen(argument) > 50 )
argument[50] = '\0';
strcpy( buf, argument );
smash_tilde( buf );
}
// Sands erases this
// free_string( ch->prompt );
ch->prompt = str_dup( buf );
send_to_char( "Ok.\n\r", ch );
return;
}
void do_auto( CHAR_DATA *ch, char *argument )
{
do_config( ch, "" );
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -