Why bother, just make and alias. alias pf poofin blah; poofout blah. Or is it too much to write pf every time you log in ? :) (or even make that alias call automatic at logintime, not too much work.) On Wed, 29 May 1996, Ron Hensley wrote: > > Sorry if this is a stupid question, but I'm just curious as to what I need > > to do to get poofins to save. I realize poofins are similar in respect to > > aliases in that they are not a structure in the pfile. So, to get them to > > save, I could put a char poofin and char poofout in the pfile, which of > > course would corrupt the pfile and would require a wipe, correct? > > Wrong thankfully :) Yeah if you used the pfile it would require a wipe, > as theres only free bytes and ints etc in there, no room for big long > string buffers > > > Is there an easier way to do the poof saving _without_ needing a pfile > > wipe, maybe incorporate it into alias saving (I have added the alias saving > > code to 3.0 bpl11)?? > > Ive done this exact thing. Actully I just took the alias.c code and > hacked my own extras.c based on it. But your right, would be easiest just > to add a line to read_aliases and write_aliases > > > Heres what i did though: Note this is done so i can add lots of things to > this file without affecting the game at all. > > /********** extras.c ************/ > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > #include <unistd.h> > > #include "structs.h" > #include "utils.h" > #include "interpreter.h" > > void write_extras(struct char_data *ch) > { > FILE *file; > char fn[127]; > > get_filename(GET_NAME(ch),fn,EXTRAS_FILE); > unlink(fn); > > if(POOFIN(ch) == NULL && POOFOUT(ch) == NULL) > return; > > if ( (file = fopen(fn,"wt")) == NULL) > return; > > if (POOFIN(ch) != NULL) { > fprintf(file,"|1\n"); > fprintf(file,"%s\n",POOFIN(ch)); > } > if (POOFOUT(ch) != NULL) { > fprintf(file,"|2\n"); > fprintf(file,"%s\n",POOFOUT(ch)); > } > fclose(file); > } > > void read_extras(struct char_data *ch) > { > FILE *file; > char fn[127], buf[127]; > char temp_buf[127]; > > get_filename(GET_NAME(ch),fn,EXTRAS_FILE); > > file = fopen(fn,"r"); > > if( !file ) > return; > > while (fgets(temp_buf,80,file)) { > > /* Yeah i was lazy at the time, this could be a strcmp() > if (temp_buf[0] == '|' && temp_buf[1] == '1') { > > fgets(temp_buf,80,file); > sprintf(buf,"poofin %s", temp_buf); > command_interpreter(ch, buf); > } > if (temp_buf[0] == '|' && temp_buf[1] == '2') { > fgets(temp_buf,80,file); > sprintf(buf, "poofout %s", temp_buf); > command_interpreter(ch, buf); > } > } > fclose(file); > } > > /******************************************/ > > > in utils.c > > to the int get_filename() function, add: > > case EXTRAS_FILE: > prefix = "plrextras"; > suffix = "extras"; > break; > > to utils.h, add > > #define EXTRAS_FILE 3 > > > Then is interpreter.c, in the function nanny, in the case '1' where the > player enters the game, add an > read_extras(); > right before the > break; > > and in act.other.c in ACMD(do_save), add an: > write_extras(); > mines right before > save_char(ch, NOWHERE); > > add extras.c to Makefile > create mud/lib/plrextras > A-E > F-J > K-O > P-T > U-Z > ZZZ > > Hope thats about it, gives you the generally idea though. > uses line labels 'l1' and 'l2' in the file so when reading back in you > can tell if theres only an poofoit and no poofin or vice versa > > So easy enough to add anything at all in there, with more line labels > > Im sure theres better ways to do it, but hey ....... it works > > ******************************************************************* > * Ron Hensley ron@dmv.com * > * Junior Systems Administrator http://www.dmv.com/~ron * > * DelMarVa OnLine 749-1111 Ext. 403 * > ******************************************************************* > > _/_/_/_/_/_/_/_/_/_/ _/ Classic@Cloud9.net _/ uskgf89j@ibmmail.com _/ http://www.cloud9.net/~classic _/_/_/_/_/_/_/_/_/_/
This archive was generated by hypermail 2b30 : 12/18/00 PST