mirror of
https://github.com/tbamud/tbamud.git
synced 2025-12-21 09:40:14 +01:00
Cleaned up search_help and do_helpcheck. Fixed do_sstat_room, no shop on load crash. Removed strip_string and added online mail notification. --Rumble
This commit is contained in:
parent
befec4df59
commit
8508dc476a
15 changed files with 169 additions and 100 deletions
71
doc/README.MSVC8
Normal file
71
doc/README.MSVC8
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
Compiling CircleMUD under Microsoft Windows XP
|
||||||
|
using Microsoft Visual C++ 2005 (8.0)
|
||||||
|
|
||||||
|
|
||||||
|
The following information is from by Jason Pullara. You can contact him at
|
||||||
|
<webmaster@geekstreak.com>. [1][2]
|
||||||
|
|
||||||
|
Compiling with MS Visual C++ 8.0:
|
||||||
|
|
||||||
|
1. In the src directory, rename conf.h.win to conf.h.
|
||||||
|
|
||||||
|
2. Go to File|New Project... Create a new workspace called circle.
|
||||||
|
Put the root directory path into the location field.
|
||||||
|
|
||||||
|
3. Select "Win32 Console Application." Click OK.
|
||||||
|
|
||||||
|
4. On the next screen Select "Application Settings" and check "Empty
|
||||||
|
Project" under the "Additonal Options" heading. Click Finish.
|
||||||
|
|
||||||
|
5. In the solution explorer, right click on the "header" folder, and select
|
||||||
|
Add->Existing Item...
|
||||||
|
|
||||||
|
6. Select all of the .h files in the src directory and click Add.
|
||||||
|
|
||||||
|
7. In the solution explorer, right click on the "source" folder, and select
|
||||||
|
Add->Existing Item...
|
||||||
|
|
||||||
|
8. Select all of the .c files in the src directory and click Add.
|
||||||
|
|
||||||
|
9. In the solution explorer, right click on the workspace name ("circle").
|
||||||
|
Select properties.
|
||||||
|
|
||||||
|
10. In the solution properties dialog box, under Configuration Properties,
|
||||||
|
select "General"
|
||||||
|
|
||||||
|
11. Change "Character Set" to "Use Multi-Byte Character Set"*
|
||||||
|
|
||||||
|
12. In the solution properties dialog box, expand "Linker" and select
|
||||||
|
"Input"
|
||||||
|
|
||||||
|
13. Under the "Additional Dependencies" add wsock32.lib and click OK.
|
||||||
|
|
||||||
|
14. Save all.
|
||||||
|
|
||||||
|
15. In the menu click Build->Build Solution (or press Ctrl-Shft-B).
|
||||||
|
CircleMUD should now build.
|
||||||
|
|
||||||
|
16. Move the circle.exe file from the circle/Debug directory to the root
|
||||||
|
directory.
|
||||||
|
|
||||||
|
17. You're done! =)
|
||||||
|
|
||||||
|
|
||||||
|
* Yes, you have to change it to multi-byte character set, otherwise MSVC8
|
||||||
|
will throw a hissey-fit about being unable to convert char to wchar_t.
|
||||||
|
|
||||||
|
|
||||||
|
=========
|
||||||
|
|
||||||
|
[1] - This appears (by 'diff') to be based on the README.MSVC5 document by Rob
|
||||||
|
Baumstark from http://www.connect.ab.ca/~rbmstrk/. You can contact Rob at his
|
||||||
|
<shirak@connect.ab.ca> e-mail address.
|
||||||
|
|
||||||
|
[2] - This is based on the README.MSVC6 document by Michael Robinson. You can
|
||||||
|
contact Michael at his <chevy67ss@geocities.com> e-mail address.
|
||||||
|
|
||||||
|
George Greer
|
||||||
|
greerga@circlemud.org
|
||||||
|
|
||||||
|
Jason Pullara
|
||||||
|
webmaster@geekstreak.com
|
||||||
|
|
@ -7728,8 +7728,11 @@ ALIAS-EXAMPLES
|
||||||
alias poofin set self poofin $*
|
alias poofin set self poofin $*
|
||||||
alias poofout set self poofout $*
|
alias poofout set self poofout $*
|
||||||
alias poofs score
|
alias poofs score
|
||||||
|
alias syslog toggle syslog $*
|
||||||
|
alias color toggle color $*
|
||||||
|
alias cheat return
|
||||||
|
|
||||||
See also: ALIAS
|
See also: ALIASES
|
||||||
#31
|
#31
|
||||||
AC-CONFIDENCE ARMOR-CLASS ARMOUR-CLASS AC-APPLY
|
AC-CONFIDENCE ARMOR-CLASS ARMOUR-CLASS AC-APPLY
|
||||||
|
|
||||||
|
|
@ -10952,7 +10955,7 @@ AFK
|
||||||
|
|
||||||
Usage : afk
|
Usage : afk
|
||||||
|
|
||||||
Let's other players know you will be away from keyboard. (AFK) flag will
|
Lets other players know you will be away from the keyboard. The (AFK) flag will
|
||||||
be displayed in who after your name and title.
|
be displayed in who after your name and title.
|
||||||
|
|
||||||
See also: TOGGLE, WHO
|
See also: TOGGLE, WHO
|
||||||
|
|
@ -11100,6 +11103,21 @@ bit further along. I am oftentimes in another window or near my computer so
|
||||||
page me if you really need something, if I don't respond I'm probably sleeping
|
page me if you really need something, if I don't respond I'm probably sleeping
|
||||||
or in class or just don't want to be bothered :-)
|
or in class or just don't want to be bothered :-)
|
||||||
|
|
||||||
|
#0
|
||||||
|
FIZBAN
|
||||||
|
|
||||||
|
Unlike Rumble, Fizban actually doesn't want your help. He is already well
|
||||||
|
on his way to world domination. Sometimes he pretends to lack powers he
|
||||||
|
mastered long ago so to seem feeble, but in actuality he is one of the
|
||||||
|
most powerful beings in existence and seeks to destroy the world. He only
|
||||||
|
pretends to be the Avatar of Paladine because then no one suspects him.
|
||||||
|
The Avatar of Fizban that is here on The Builder Academy is one of his
|
||||||
|
feeble essences, where he pretends to not be overly competent and actually
|
||||||
|
humble and helpful, but whatever you do...don't be fooled! It should be obvious
|
||||||
|
from the fact he's built 4 rooms in that many years that he is spending most
|
||||||
|
of his time elsewhere...on much darker motives than building happy zones
|
||||||
|
for CircleMUD players.
|
||||||
|
|
||||||
#0
|
#0
|
||||||
PRAISE REVIEWS RATINGS
|
PRAISE REVIEWS RATINGS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -992,37 +992,35 @@ void space_to_minus(char *str)
|
||||||
*str = '-';
|
*str = '-';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int search_help(char *argument, int level)
|
||||||
int search_help(struct char_data *ch, char *argument)
|
|
||||||
{
|
{
|
||||||
int chk, bot, top, mid, minlen;
|
int chk, bot, top, mid, minlen;
|
||||||
|
|
||||||
bot = 0;
|
bot = 0;
|
||||||
top = top_of_h_table;
|
top = top_of_h_table;
|
||||||
minlen = strlen(argument);
|
minlen = strlen(argument);
|
||||||
for (;;) {
|
|
||||||
|
while (bot <= top) {
|
||||||
mid = (bot + top) / 2;
|
mid = (bot + top) / 2;
|
||||||
if (bot > top)
|
|
||||||
return FALSE;
|
if (!(chk = strn_cmp(argument, help_table[mid].keywords, minlen))) {
|
||||||
else if (!(chk = strn_cmp(argument, help_table[mid].keywords, minlen))) {
|
while ((mid > 0) && !strn_cmp(argument, help_table[mid - 1].keywords, minlen))
|
||||||
/* trace backwards to find first matching entry. Thanks Jeff Fink! */
|
|
||||||
while ((mid > 0) && (!(chk = strn_cmp(argument, help_table[mid - 1].keywords, minlen))))
|
|
||||||
mid--;
|
mid--;
|
||||||
if (help_table[mid].min_level > GET_LEVEL(ch))
|
|
||||||
/* trace back up... */
|
while (level < help_table[mid].min_level && mid < (bot + top) / 2)
|
||||||
while ((mid < top_of_h_table) &&
|
|
||||||
(!(chk = strn_cmp(argument, help_table[mid + 1].keywords, minlen)))) {
|
|
||||||
mid++;
|
mid++;
|
||||||
if (help_table[mid].min_level < GET_LEVEL(ch))
|
|
||||||
|
if (strn_cmp(argument, help_table[mid].keywords, minlen) || level < help_table[mid].min_level)
|
||||||
|
break;
|
||||||
|
|
||||||
return mid;
|
return mid;
|
||||||
}
|
}
|
||||||
return mid;
|
else if (chk > 0)
|
||||||
} else {
|
|
||||||
if (chk > 0)
|
|
||||||
bot = mid + 1;
|
bot = mid + 1;
|
||||||
else
|
else
|
||||||
top = mid - 1;
|
top = mid - 1;
|
||||||
}
|
}
|
||||||
}
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ACMD(do_help)
|
ACMD(do_help)
|
||||||
|
|
@ -1048,9 +1046,9 @@ ACMD(do_help)
|
||||||
}
|
}
|
||||||
|
|
||||||
space_to_minus(argument);
|
space_to_minus(argument);
|
||||||
mid = search_help(ch, argument);
|
mid = search_help(argument, GET_LEVEL(ch));
|
||||||
|
|
||||||
if (mid <= 0) {
|
if (mid < 0) {
|
||||||
send_to_char(ch, "There is no help on that word.\r\n");
|
send_to_char(ch, "There is no help on that word.\r\n");
|
||||||
mudlog(NRM, MAX(LVL_IMPL, GET_INVIS_LEV(ch)), TRUE,
|
mudlog(NRM, MAX(LVL_IMPL, GET_INVIS_LEV(ch)), TRUE,
|
||||||
"%s tried to get help on %s", GET_NAME(ch), argument);
|
"%s tried to get help on %s", GET_NAME(ch), argument);
|
||||||
|
|
|
||||||
|
|
@ -630,7 +630,7 @@ void do_stat_room(struct char_data *ch, struct room_data *rm)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check the room for a script */
|
/* check the room for a script */
|
||||||
do_sstat_room(ch);
|
do_sstat_room(ch, rm);
|
||||||
|
|
||||||
list_zone_commands_room(ch, rm->number);
|
list_zone_commands_room(ch, rm->number);
|
||||||
}
|
}
|
||||||
|
|
@ -946,7 +946,7 @@ void do_stat_character(struct char_data *ch, struct char_data *k)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IS_NPC(k) && (GET_LEVEL(ch) >= LVL_IMMORT)) {
|
if (!IS_NPC(k) && (GET_LEVEL(k) >= LVL_IMMORT)) {
|
||||||
if (POOFIN(k))
|
if (POOFIN(k))
|
||||||
send_to_char(ch, "%sPOOFIN: %s%s %s%s\r\n", QYEL, QCYN, GET_NAME(k), POOFIN(k), QNRM);
|
send_to_char(ch, "%sPOOFIN: %s%s %s%s\r\n", QYEL, QCYN, GET_NAME(k), POOFIN(k), QNRM);
|
||||||
else
|
else
|
||||||
|
|
@ -1265,9 +1265,9 @@ void do_cheat(struct char_data *ch)
|
||||||
GET_LEVEL(ch) = LVL_IMPL;
|
GET_LEVEL(ch) = LVL_IMPL;
|
||||||
break;
|
break;
|
||||||
case 2: // Shamra
|
case 2: // Shamra
|
||||||
|
case 156: // Fizban
|
||||||
GET_LEVEL(ch) = LVL_GRGOD;
|
GET_LEVEL(ch) = LVL_GRGOD;
|
||||||
break;
|
break;
|
||||||
case 4: // Fizban
|
|
||||||
case 7: // Rhade
|
case 7: // Rhade
|
||||||
GET_LEVEL(ch) = LVL_GOD;
|
GET_LEVEL(ch) = LVL_GOD;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -841,10 +841,8 @@ void script_stat (char_data *ch, struct script_data *sc)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void do_sstat_room(struct char_data * ch)
|
void do_sstat_room(struct char_data * ch, struct room_data *rm)
|
||||||
{
|
{
|
||||||
struct room_data *rm = &world[IN_ROOM(ch)];
|
|
||||||
|
|
||||||
send_to_char(ch, "Script information:\r\n");
|
send_to_char(ch, "Script information:\r\n");
|
||||||
if (!SCRIPT(rm)) {
|
if (!SCRIPT(rm)) {
|
||||||
send_to_char(ch, " None.\r\n");
|
send_to_char(ch, " None.\r\n");
|
||||||
|
|
|
||||||
|
|
@ -286,7 +286,7 @@ obj_data *get_object_in_equip(char_data * ch, char *name);
|
||||||
void script_trigger_check(void);
|
void script_trigger_check(void);
|
||||||
void check_time_triggers(void);
|
void check_time_triggers(void);
|
||||||
void find_uid_name(char *uid, char *name, size_t nlen);
|
void find_uid_name(char *uid, char *name, size_t nlen);
|
||||||
void do_sstat_room(struct char_data * ch);
|
void do_sstat_room(struct char_data * ch, room_data *r);
|
||||||
void do_sstat_object(char_data *ch, obj_data *j);
|
void do_sstat_object(char_data *ch, obj_data *j);
|
||||||
void do_sstat_character(char_data *ch, char_data *k);
|
void do_sstat_character(char_data *ch, char_data *k);
|
||||||
void add_trigger(struct script_data *sc, trig_data *t, int loc);
|
void add_trigger(struct script_data *sc, trig_data *t, int loc);
|
||||||
|
|
|
||||||
|
|
@ -322,23 +322,22 @@ void free_shop(struct shop_data *shop)
|
||||||
*/
|
*/
|
||||||
shop_rnum real_shop(shop_vnum vnum)
|
shop_rnum real_shop(shop_vnum vnum)
|
||||||
{
|
{
|
||||||
shop_rnum bot, top, mid;
|
int bot, top, mid;
|
||||||
|
|
||||||
bot = 0;
|
bot = 0;
|
||||||
top = top_shop - top_shop_offset;
|
top = top_shop - top_shop_offset;
|
||||||
|
|
||||||
/* perform binary search on shop_table */
|
/* perform binary search on shop_table */
|
||||||
for (;;) {
|
while (bot < top) {
|
||||||
mid = (bot + top) / 2;
|
mid = (bot + top) / 2;
|
||||||
if (SHOP_NUM(mid) == vnum)
|
if (SHOP_NUM(mid) == vnum)
|
||||||
return (mid);
|
return (mid);
|
||||||
if (bot >= top)
|
|
||||||
return (NOWHERE);
|
|
||||||
if (SHOP_NUM(mid) > vnum)
|
if (SHOP_NUM(mid) > vnum)
|
||||||
top = mid;
|
top = mid;
|
||||||
else
|
else
|
||||||
bot = mid + 1;
|
bot = mid + 1;
|
||||||
}
|
}
|
||||||
|
return NOWHERE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------*/
|
||||||
|
|
|
||||||
42
src/hedit.c
42
src/hedit.c
|
|
@ -21,7 +21,6 @@
|
||||||
|
|
||||||
/* external data structures */
|
/* external data structures */
|
||||||
extern struct descriptor_data *descriptor_list;
|
extern struct descriptor_data *descriptor_list;
|
||||||
extern void strip_string(char *buffer);
|
|
||||||
void hedit_disp_menu(struct descriptor_data *d);
|
void hedit_disp_menu(struct descriptor_data *d);
|
||||||
|
|
||||||
/* external variables */
|
/* external variables */
|
||||||
|
|
@ -30,7 +29,7 @@ int top_of_h_table = 0; /* ref to top of help table */
|
||||||
int top_of_h_file = 0; /* ref of size of help file */
|
int top_of_h_file = 0; /* ref of size of help file */
|
||||||
long top_help_idnum = 0; /* highest idnum in use */
|
long top_help_idnum = 0; /* highest idnum in use */
|
||||||
void get_one_line(FILE *fl, char *buf);
|
void get_one_line(FILE *fl, char *buf);
|
||||||
int search_help(struct char_data *ch, char *argument);
|
int search_help(char *argument, int level);
|
||||||
ACMD(do_reboot);
|
ACMD(do_reboot);
|
||||||
|
|
||||||
/* local functions */
|
/* local functions */
|
||||||
|
|
@ -154,7 +153,7 @@ ACMD(do_oasis_hedit)
|
||||||
|
|
||||||
OLC_NUM(d) = 0;
|
OLC_NUM(d) = 0;
|
||||||
OLC_STORAGE(d) = strdup(argument);
|
OLC_STORAGE(d) = strdup(argument);
|
||||||
OLC_ZNUM(d) = search_help(ch, OLC_STORAGE(d));
|
OLC_ZNUM(d) = search_help(OLC_STORAGE(d), GET_LEVEL(ch));
|
||||||
|
|
||||||
for(i = 0; i < (int)strlen(argument); i++)
|
for(i = 0; i < (int)strlen(argument); i++)
|
||||||
argument[i] = toupper(argument[i]);
|
argument[i] = toupper(argument[i]);
|
||||||
|
|
@ -421,39 +420,36 @@ void hedit_string_cleanup(struct descriptor_data *d, int terminator)
|
||||||
|
|
||||||
ACMD(do_helpcheck)
|
ACMD(do_helpcheck)
|
||||||
{
|
{
|
||||||
char buf[MAX_STRING_LENGTH];
|
|
||||||
int i, w = 0;
|
|
||||||
char arg[64];
|
|
||||||
ACMD(do_action);
|
ACMD(do_action);
|
||||||
|
|
||||||
if(!help_table) {
|
char buf[MAX_STRING_LENGTH];
|
||||||
send_to_char(ch, "The help_table doesn't exist!\r\n");
|
int i, count = 0;
|
||||||
return;
|
size_t len = 0, nlen;
|
||||||
}
|
|
||||||
|
|
||||||
sprintf(buf, "\r\n");
|
send_to_char(ch, "Commands without help entries:\r\n");
|
||||||
strcpy(buf, "Commands without help entries:\r\n");
|
send_to_char(ch, "-------------------------------------------------------------------\r\n");
|
||||||
strcat(buf, "-------------------------------------------------------------------\r\n");
|
|
||||||
|
|
||||||
for (i = 1; *(complete_cmd_info[i].command) != '\n'; i++) {
|
for (i = 1; *(complete_cmd_info[i].command) != '\n'; i++) {
|
||||||
snprintf(arg, sizeof(arg), "%s", complete_cmd_info[i].command);
|
if (complete_cmd_info[i].command_pointer != do_action) {
|
||||||
if(search_help(ch, arg) <= 0) {
|
if (search_help((char *) complete_cmd_info[i].command, GET_LEVEL(ch)) < 0) {
|
||||||
if(complete_cmd_info[i].command_pointer == do_action)
|
nlen = snprintf(buf + len, sizeof(buf) - len, " %-20.20s%s",
|
||||||
continue;
|
complete_cmd_info[i].command, (++count % 3 ? "|":"\r\n"));
|
||||||
w++;
|
if (len + nlen >= sizeof(buf) || nlen < 0)
|
||||||
w = w%3;
|
break;
|
||||||
sprintf(buf + strlen(buf), " %-20.20s%s", complete_cmd_info[i].command, (w ? "|":"\r\n"));
|
len += nlen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(w)
|
}
|
||||||
strcat(buf, "\r\n");
|
if (count % 3 && len < sizeof(buf))
|
||||||
|
nlen = snprintf(buf + len, sizeof(buf) - len, "\r\n");
|
||||||
|
|
||||||
if (ch->desc)
|
if (ch->desc)
|
||||||
page_string(ch->desc, buf, 1);
|
page_string(ch->desc, buf, TRUE);
|
||||||
|
|
||||||
*buf = '\0';
|
*buf = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_hindex)
|
ACMD(do_hindex)
|
||||||
{
|
{
|
||||||
int len, count = 0, i;
|
int len, count = 0, i;
|
||||||
|
|
|
||||||
|
|
@ -436,3 +436,12 @@ void postmaster_receive_mail(struct char_data *ch, struct char_data *mailman,
|
||||||
act("$N gives $n a piece of mail.", FALSE, ch, 0, mailman, TO_ROOM);
|
act("$N gives $n a piece of mail.", FALSE, ch, 0, mailman, TO_ROOM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void notify_if_playing(struct char_data *from, int recipient_id)
|
||||||
|
{
|
||||||
|
struct descriptor_data *d;
|
||||||
|
|
||||||
|
for (d = descriptor_list; d; d = d->next)
|
||||||
|
if ((IS_PLAYING(d)) && (GET_IDNUM(d->character) == recipient_id) && (has_mail(GET_IDNUM(d->character))))
|
||||||
|
send_to_char(d->character, "You have new mudmail from %s.\r\n", GET_NAME(from));
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ int scan_file(void);
|
||||||
int has_mail(long recipient);
|
int has_mail(long recipient);
|
||||||
void store_mail(long to, long from, char *message_pointer);
|
void store_mail(long to, long from, char *message_pointer);
|
||||||
char *read_delete(long recipient);
|
char *read_delete(long recipient);
|
||||||
|
void notify_if_playing(struct char_data *from, int recipient_id);
|
||||||
|
|
||||||
struct mail_t {
|
struct mail_t {
|
||||||
long recipient;
|
long recipient;
|
||||||
|
|
|
||||||
|
|
@ -236,6 +236,7 @@ void playing_string_cleanup(struct descriptor_data *d, int action)
|
||||||
if (action == STRINGADD_SAVE && *d->str) {
|
if (action == STRINGADD_SAVE && *d->str) {
|
||||||
store_mail(d->mail_to, GET_IDNUM(d->character), *d->str);
|
store_mail(d->mail_to, GET_IDNUM(d->character), *d->str);
|
||||||
write_to_output(d, "Message sent!\r\n");
|
write_to_output(d, "Message sent!\r\n");
|
||||||
|
notify_if_playing(d->character, d->mail_to);
|
||||||
} else
|
} else
|
||||||
write_to_output(d, "Mail aborted.\r\n");
|
write_to_output(d, "Mail aborted.\r\n");
|
||||||
free(*d->str);
|
free(*d->str);
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,7 @@ void list_rooms(struct char_data *ch, zone_rnum rnum, room_vnum vmin, room_vnum
|
||||||
}
|
}
|
||||||
|
|
||||||
if (counter == 0)
|
if (counter == 0)
|
||||||
send_to_char(ch, "No rooms found for zone #%d\r\n", zone_table[rnum].number);
|
send_to_char(ch, "No rooms found for zone/range specified.\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,29 +64,11 @@ void Crash_rentsave(struct char_data *ch, int cost);
|
||||||
void Crash_cryosave(struct char_data *ch, int cost);
|
void Crash_cryosave(struct char_data *ch, int cost);
|
||||||
int Crash_load_objs(struct char_data *ch);
|
int Crash_load_objs(struct char_data *ch);
|
||||||
void tag_argument(char *argument, char *tag);
|
void tag_argument(char *argument, char *tag);
|
||||||
void strip_string(char *buffer);
|
|
||||||
int handle_obj(struct obj_data *obj, struct char_data *ch, int locate, struct obj_data **cont_rows);
|
int handle_obj(struct obj_data *obj, struct char_data *ch, int locate, struct obj_data **cont_rows);
|
||||||
obj_save_data *objsave_parse_objects(FILE *fl);
|
obj_save_data *objsave_parse_objects(FILE *fl);
|
||||||
int objsave_write_rentcode(FILE *fl, int rentcode, int cost_per_day, struct char_data *ch);
|
int objsave_write_rentcode(FILE *fl, int rentcode, int cost_per_day, struct char_data *ch);
|
||||||
int objsave_save_obj_record(struct obj_data *obj, FILE *fl, int location);
|
int objsave_save_obj_record(struct obj_data *obj, FILE *fl, int location);
|
||||||
|
void strip_cr(char *buffer);
|
||||||
/* This procedure turns the '\r\n' into '\n' in a string so that it may be
|
|
||||||
saved to a file. Use it only on buffers, not on the orginal
|
|
||||||
strings. */
|
|
||||||
void strip_string(char *buffer)
|
|
||||||
{
|
|
||||||
register char *ptr, *str;
|
|
||||||
|
|
||||||
ptr = buffer;
|
|
||||||
str = ptr;
|
|
||||||
|
|
||||||
while ((*str = *ptr)) {
|
|
||||||
str++;
|
|
||||||
ptr++;
|
|
||||||
if (*ptr == '\r')
|
|
||||||
ptr++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes one object record to FILE.
|
* Writes one object record to FILE.
|
||||||
|
|
@ -109,7 +91,7 @@ int objsave_save_obj_record(struct obj_data *obj, FILE *fp, int locate)
|
||||||
|
|
||||||
if (obj->action_description) {
|
if (obj->action_description) {
|
||||||
strcpy(buf1, obj->action_description);
|
strcpy(buf1, obj->action_description);
|
||||||
strip_string(buf1);
|
strip_cr(buf1);
|
||||||
} else
|
} else
|
||||||
*buf1 = 0;
|
*buf1 = 0;
|
||||||
|
|
||||||
|
|
@ -189,7 +171,7 @@ int objsave_save_obj_record(struct obj_data *obj, FILE *fp, int locate)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
strcpy(buf1, ex_desc->description);
|
strcpy(buf1, ex_desc->description);
|
||||||
strip_string(buf1);
|
strip_cr(buf1);
|
||||||
fprintf(fp, "EDes:\n"
|
fprintf(fp, "EDes:\n"
|
||||||
"%s~\n"
|
"%s~\n"
|
||||||
"%s~\n",
|
"%s~\n",
|
||||||
|
|
|
||||||
|
|
@ -21,11 +21,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If you want equipment to be automatically equipped to the same place
|
* If you want equipment to be automatically equipped to the same place
|
||||||
* it was when players rented, set the define below to 1. Please note
|
* it was when players rented, set the define below to 1.
|
||||||
* that this will require erasing or converting all of your rent files.
|
|
||||||
* And of course, you have to recompile everything. We need this feature
|
|
||||||
* for CircleMUD to be complete but we refuse to break binary file
|
|
||||||
* compatibility.
|
|
||||||
*/
|
*/
|
||||||
#define USE_AUTOEQ 1 /* TRUE/FALSE aren't defined yet. */
|
#define USE_AUTOEQ 1 /* TRUE/FALSE aren't defined yet. */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -266,8 +266,8 @@ void convert(char *filename)
|
||||||
sprintascii(bits, psds->pref);
|
sprintascii(bits, psds->pref);
|
||||||
fprintf(outfile, "Pref: %s\n", bits);
|
fprintf(outfile, "Pref: %s\n", bits);
|
||||||
}
|
}
|
||||||
if (psds->conditions[FULL] && player.level < LVL_IMMORT &&
|
if (psds->conditions[HUNGER] && player.level < LVL_IMMORT &&
|
||||||
psds->conditions[FULL] != PFDEF_HUNGER)
|
psds->conditions[HUNGER] != PFDEF_HUNGER)
|
||||||
fprintf(outfile, "Hung: %d\n", (int)psds->conditions[0]);
|
fprintf(outfile, "Hung: %d\n", (int)psds->conditions[0]);
|
||||||
if (psds->conditions[THIRST] && player.level < LVL_IMMORT &&
|
if (psds->conditions[THIRST] && player.level < LVL_IMMORT &&
|
||||||
psds->conditions[THIRST] != PFDEF_THIRST)
|
psds->conditions[THIRST] != PFDEF_THIRST)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue