mirror of
https://github.com/tbamud/tbamud.git
synced 2025-12-23 10:40:13 +01:00
Setting up 3.5.0 as trunk
This commit is contained in:
parent
0ddbd8b56e
commit
99e3aa4d8b
1336 changed files with 514917 additions and 0 deletions
156
src/tedit.c
Normal file
156
src/tedit.c
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
/*
|
||||
* Originally written by: Michael Scott -- Manx.
|
||||
* Last known e-mail address: scottm@workcomm.net
|
||||
*
|
||||
* XXX: This needs Oasis-ifying.
|
||||
*/
|
||||
|
||||
#include "conf.h"
|
||||
#include "sysdep.h"
|
||||
#include "structs.h"
|
||||
#include "utils.h"
|
||||
#include "interpreter.h"
|
||||
#include "comm.h"
|
||||
#include "db.h"
|
||||
#include "genolc.h"
|
||||
#include "oasis.h"
|
||||
#include "improved-edit.h"
|
||||
#include "tedit.h"
|
||||
|
||||
extern const char *credits;
|
||||
extern const char *news;
|
||||
extern const char *motd;
|
||||
extern const char *imotd;
|
||||
extern const char *GREETINGS;
|
||||
extern const char *help;
|
||||
extern const char *ihelp;
|
||||
extern const char *info;
|
||||
extern const char *background;
|
||||
extern const char *handbook;
|
||||
extern const char *policies;
|
||||
extern const char *wizlist;
|
||||
extern const char *immlist;
|
||||
|
||||
void tedit_string_cleanup(struct descriptor_data *d, int terminator)
|
||||
{
|
||||
FILE *fl;
|
||||
char *storage = OLC_STORAGE(d);
|
||||
|
||||
if (!storage)
|
||||
terminator = STRINGADD_ABORT;
|
||||
|
||||
switch (terminator) {
|
||||
case STRINGADD_SAVE:
|
||||
if (!(fl = fopen(storage, "w")))
|
||||
mudlog(CMP, LVL_IMPL, TRUE, "SYSERR: Can't write file '%s'.", storage);
|
||||
else {
|
||||
if (*d->str) {
|
||||
strip_cr(*d->str);
|
||||
fputs(*d->str, fl);
|
||||
}
|
||||
fclose(fl);
|
||||
mudlog(CMP, LVL_GOD, TRUE, "OLC: %s saves '%s'.", GET_NAME(d->character), storage);
|
||||
write_to_output(d, "Saved.\r\n");
|
||||
}
|
||||
break;
|
||||
case STRINGADD_ABORT:
|
||||
write_to_output(d, "Edit aborted.\r\n");
|
||||
act("$n stops editing some scrolls.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
break;
|
||||
default:
|
||||
log("SYSERR: tedit_string_cleanup: Unknown terminator status.");
|
||||
break;
|
||||
}
|
||||
|
||||
/* Common cleanup code. */
|
||||
cleanup_olc(d, CLEANUP_ALL);
|
||||
STATE(d) = CON_PLAYING;
|
||||
}
|
||||
|
||||
ACMD(do_tedit)
|
||||
{
|
||||
int l, i = 0;
|
||||
char field[MAX_INPUT_LENGTH];
|
||||
char *backstr = NULL;
|
||||
|
||||
struct {
|
||||
char *cmd;
|
||||
char level;
|
||||
const char **buffer;
|
||||
int size;
|
||||
char *filename;
|
||||
} fields[] = {
|
||||
/* edit the lvls to your own needs */
|
||||
{ "credits", LVL_IMPL, &credits, 2400, CREDITS_FILE},
|
||||
{ "news", LVL_GRGOD, &news, 8192, NEWS_FILE},
|
||||
{ "motd", LVL_GRGOD, &motd, 2400, MOTD_FILE},
|
||||
{ "imotd", LVL_IMPL, &imotd, 2400, IMOTD_FILE},
|
||||
{ "greetings", LVL_IMPL, &GREETINGS, 2400, GREETINGS_FILE},
|
||||
{ "help", LVL_GRGOD, &help, 2400, HELP_PAGE_FILE},
|
||||
{ "ihelp", LVL_GRGOD, &ihelp, 2400, IHELP_PAGE_FILE},
|
||||
{ "info", LVL_GRGOD, &info, 8192, INFO_FILE},
|
||||
{ "background", LVL_IMPL, &background, 8192, BACKGROUND_FILE},
|
||||
{ "handbook", LVL_IMPL, &handbook, 8192, HANDBOOK_FILE},
|
||||
{ "policies", LVL_IMPL, &policies, 8192, POLICIES_FILE},
|
||||
{ "wizlist", LVL_IMPL, &wizlist, 2400, WIZLIST_FILE},
|
||||
{ "immlist", LVL_GRGOD, &immlist, 2400, IMMLIST_FILE},
|
||||
{ "\n", 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
if (ch->desc == NULL)
|
||||
return;
|
||||
|
||||
one_argument(argument, field);
|
||||
|
||||
if (!*field) {
|
||||
send_to_char(ch, "Files available to be edited:\r\n");
|
||||
for (l = 0; *fields[l].cmd != '\n'; l++) {
|
||||
if (GET_LEVEL(ch) >= fields[l].level) {
|
||||
send_to_char(ch, "%-11.11s ", fields[l].cmd);
|
||||
if (!(++i % 7))
|
||||
send_to_char(ch, "\r\n");
|
||||
}
|
||||
}
|
||||
if (i % 7)
|
||||
send_to_char(ch, "\r\n");
|
||||
if (i == 0)
|
||||
send_to_char(ch, "None.\r\n");
|
||||
return;
|
||||
}
|
||||
for (l = 0; *(fields[l].cmd) != '\n'; l++)
|
||||
if (!strncmp(field, fields[l].cmd, strlen(field)))
|
||||
break;
|
||||
|
||||
if (*fields[l].cmd == '\n') {
|
||||
send_to_char(ch, "Invalid text editor option.\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (GET_LEVEL(ch) < fields[l].level) {
|
||||
send_to_char(ch, "You are not godly enough for that!\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* set up editor stats */
|
||||
clear_screen(ch->desc);
|
||||
send_editor_help(ch->desc);
|
||||
send_to_char(ch, "Edit file below:\r\n\r\n");
|
||||
|
||||
if (ch->desc->olc) {
|
||||
mudlog(BRF, LVL_IMMORT, TRUE, "SYSERR: do_tedit: Player already had olc structure.");
|
||||
free(ch->desc->olc);
|
||||
}
|
||||
CREATE(ch->desc->olc, struct oasis_olc_data, 1);
|
||||
|
||||
if (*fields[l].buffer) {
|
||||
send_to_char(ch, "%s", *fields[l].buffer);
|
||||
backstr = strdup(*fields[l].buffer);
|
||||
}
|
||||
|
||||
OLC_STORAGE(ch->desc) = strdup(fields[l].filename);
|
||||
string_write(ch->desc, (char **)fields[l].buffer, fields[l].size, 0, backstr);
|
||||
|
||||
act("$n begins editing a scroll.", TRUE, ch, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
STATE(ch->desc) = CON_TEDIT;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue