I'm working on adding languages and have made the following
changes thus far (note: I know the changes arn't monumental but thier
going to be followed up by a complete race system):
structs.h:
in the define's --
#define LNG_COMMON 0
#define LNG_ELVEN 1
#define LNG_DWARVEN 2
#define MAX_LANG 3
in the struct player_special_data_saved --
ubyte lang[MAX_LANG+1]; /* for storing an array of languges */
int current_lang; /* for storing the curerent spoken language */
int native_lang; /* for storing the native language */
utils.h:
in the defines --
#define GET_LANG(ch, i) ((ch)->player_specials->saved.lang[i])
/* hopefully to be used in a loop checking if you actually know that
lang */
#define SET_LANG(ch, i) {(ch)->player_specials->saved.lang[i] = i;}
/* hopefully to be used in setting a language when a new one is learned
*/
#define GET_NATIVE_LANG(ch) ((ch)->player_specials->saved.native_lang)
/* this is where I'm having a problem I belive... It should return and
int that points to the characters native language */
#define SET_NATIVE_LANG(ch) {(ch)->player_specials->saved.native_lang = i;}
/* hopefully this sets the native language corectly */
#define CAN_SPEAK_COMMON(ch)... These arn't used yet so I knot thier not a
problem...
act.informative.c:
in the ACMD(do_score) --
Added the following...
After the "this ranks you as ... (level...)"
sprintf(buf, "%sYour native language is: %s\r\n", buf,
GET_NATIVE_LANG(ch));
act.lang.c (a new one so I don't have to clutter up existing code):
ACMD(do_senative) {
SET_NATIVE_LANG(ch, LNG_COMMON);
/* This does nothing but set the native language for testing */
}
ACMD(do_speak) {
sprintf(buf, "This isn't imp'ed yet.../r/n");
send_to_char(buf, ch);
Ok, so here's the problem. I've exausted all my coding experiance so I
figure it's time to ask the experts... When compiling I get an error:
act.informative.c:669: warning: format argument is not a pointer (arg 4)
That line corisponds to the change I made in ACMD(do_score) and if score
is ran right away the it displays (null) as the language (which is fine,
nothing is set in it yet) but after doing a 'senative' (see
ACMD(do_senative) above) typing score produces a segmentation fault.
I would be happy to give more information but I don't have any experiance
running gdb (I know I've got it and that's what helped find it was a
segmentation fault, I just don't know how to use it...)
I belive it has something to do what that warning but I can't fingure it
out...
Any help or pointers on how languages are imp'ed on other systems please
let me know...
TIA
--
Glutious Numbious Maximus - Numbuttitis:
The failure to feel you butt after staring at a terminal all day long...
--
Tim Yohn (yohnt@southwind.net)
This archive was generated by hypermail 2b30 : 12/18/00 PST