In an attempt to write an website which uses player passwords and usernames
which match with the MUD, I am parsing the playerfile (instead of making a
passwd file). In doing so, I've determined the char_file_u size to be 1292
(in our case). However, the following utility code, used to derive the
width of each field ends up resulting with 1285.
Utility Code:
int main(){
int size = 0;
printf("Structure Data\n\n");
printf("Name: %d\n", MAX_NAME_LENGTH+1);
size+= (MAX_NAME_LENGTH+1);
printf("Desc: %d\n", EXDSCR_LENGTH);
size += EXDSCR_LENGTH;
printf("Title: %d\n", MAX_TITLE_LENGTH+1);
size += (MAX_TITLE_LENGTH+1);
printf("Sex: %d\n", sizeof(byte));
size += sizeof(byte);
printf("Level: %d\n", sizeof(byte));
size += sizeof(byte);
printf("Hometown: %d\n", sizeof(sh_int));
size += sizeof(sh_int);
printf("Birth: %d\n", sizeof(time_t));
size += sizeof(time_t);
printf("Played: %d\n", sizeof(int));
size += sizeof(int);
printf("Weight: %d\n", sizeof(ubyte));
size += sizeof(ubyte);
printf("Height: %d\n", sizeof(ubyte));
size += sizeof(ubyte);
printf("Passwd: %d\n", MAX_PWD_LENGTH+1);
size += (MAX_PWD_LENGTH+1);
printf("Struct: %d\n", sizeof(struct char_special_data_saved));
size += sizeof(struct char_special_data_saved);
printf("Struct: %d\n", sizeof(struct player_special_data_saved));
size += sizeof(struct player_special_data_saved);
printf("Struct: %d\n", sizeof(struct char_ability_data));
size += sizeof(struct char_ability_data);
printf("Struct: %d\n", sizeof(struct char_point_data));
size += sizeof(struct char_point_data);
printf("Struct: %d\n", (sizeof(struct affected_type)*MAX_AFFECT));
size += (sizeof(struct affected_type)*MAX_AFFECT);
printf("LastLog: %d\n", sizeof(time_t));
size += sizeof(time_t);
printf("Host: %d\n", HOST_LENGTH+1);
size += (HOST_LENGTH+1);
printf("Size: %d\n", size);
printf("Actual: %d\n", sizeof(struct char_file_u));
return 1;
}
End Utility code:
The utility code also includes sysdep.h, conf.h, and structs.h
This is the reflected structure in structs.h:
struct char_file_u {
/* char_player_data */
char name[MAX_NAME_LENGTH+1];
char description[EXDSCR_LENGTH];
char title[MAX_TITLE_LENGTH+1];
byte sex;
byte level;
sh_int hometown;
time_t birth; /* Time of birth of character */
int played; /* Number of secs played in total */
ubyte weight;
ubyte height;
char pwd[MAX_PWD_LENGTH+1]; /* character's password */
struct char_special_data_saved char_specials_saved;
struct player_special_data_saved player_specials_saved;
struct char_ability_data abilities;
struct char_point_data points;
struct affected_type affected[MAX_AFFECT];
time_t last_logon; /* Time (in secs) of last logon */
char host[HOST_LENGTH+1]; /* host of last logon */
};
End structure code
I have not had the time to truly hammer out the utility code, so it is
very... dirty code. This is a 5 minute bit of coding... however, due to
the fact that I'd like to get this site up and running... I'd appreciate
any comments on where you believe the 7 bit offset may be. Yes.. I know
this seems noobish of me... but... frankly, given the 2 hours of sleep I've
gotten... I figure I deserve it ;)
Thanks,
Lodaren of Rhu-Dina'ar
rhudin.newvisiongames.net 7777
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/06/01 PST