/*
* main.c - conversion of the old character file to the new one
*/
#include <sys/time.h>
#include <stdio.h>
#include <errno.h>
typedef char bool;
/* string sizes */
#define SZ_NAME 33 /* player name (incl. trailing null) */
#define SZ_PASSWORD 17 /* password size (incl. null) */
#define SZ_FROM 81 /* ip or dns login (incl. null) */
#define SZ_AREA 24
struct newPlayer_t /* player attributes */
{
/* player information */
char name[SZ_NAME]; /* player name */
char lcname[SZ_NAME]; /* player name in lowercase */
unsigned char password[16]; /* password hash */
/* player location */
double x; /* x coord */
double y; /* y coord */
char area[SZ_AREA]; /* name of the area player is in */
double circle; /* current circle player is in */
bool beyond; /* is the character past no return */
short location; /* codes for special all locations */
/* player stats */
double experience; /* experience */
double level; /* level */
double strength; /* strength */
double max_strength; /* maximum strength */
double energy; /* energy */
double max_energy; /* maximum energy */
float quickness; /* quickness */
float max_quickness; /* quickness */
double mana; /* mana */
double brains; /* brains */
double magiclvl; /* magic level */
float poison; /* poison */
float sin; /* sin */
bool gender; /* player is male/female */
short lives; /* multiple lives for council, valar */
int age; /* age of player */
int degenerated; /* age/3000 last degenerated */
/* player status */
short type; /* character type */
short special_type; /* special character type */
bool cloaked; /* is character cloaked */
bool blind; /* blindness */
short shield_nf; /* does player get shield next battle */
short invisible_nf; /* will the player be invisible */
short strong_nf; /* does player get a strength bonus */
/* player currency */
double gold; /* gold */
double gems; /* gems */
/* player equipment */
double sword; /* sword */
double shield; /* shield */
float quicksilver; /* quicksilver */
int holywater; /* holy water */
int amulets; /* amulets */
int charms; /* charms */
short crowns; /* crowns */
bool virgin; /* virgin */
bool palantir; /* palantir */
bool blessing; /* blessing */
short ring_type; /* type of ring */
int ring_duration; /* duration of ring */
/* creation information */
char parent_account[SZ_NAME]; /* created by this account */
char parent_network[SZ_FROM]; /* created from this address */
time_t date_created; /* created at this time */
bool faithful; /* may other accounts load? */
/* current or previous user information */
char last_IP[SZ_FROM]; /* last IP or DNS address */
char last_account[SZ_NAME]; /* last account accessed */
time_t last_load; /* time last accessed */
time_t last_reset; /* time password was last reset */
int load_count; /* times character has been loaded */
time_t time_played; /* seconds character has been played */
/* hack foilers */
int bad_passwords; /* unsuccessful load attempts */
int muteCount; /* times caught spamming */
time_t lastMute; /* last instance spammed */
/* purgatory options */
bool purgatoryFlag;
short monsterNumber;
};
#define SZ_NEW_PLAYER sizeof(struct newPlayer_t)
main(argc, argv)
int argc;
char *argv[];
{
struct newPlayer_t newPlayer;
FILE *character_file;
char string_buffer[80];
int i;
if (argc != 2) {
printf("usage: a.out filename\n");
printf("This program will print out names, passwords and dates");
printf("from the passed character file.\n");
exit(10);
}
errno = 0;
if ((character_file=fopen(argv[1], "r")) == NULL) {
printf("fopen of %s failed: %s\n", argv[0], strerror(errno));
exit(1);
}
/* start reading the characters */
while (fread((void *)&newPlayer, SZ_NEW_PLAYER, 1, character_file) == 1) {
/*
printf("Name: %s, Password %s, X: %.0lf Y: %.0lf\n",
newPlayer.name, newPlayer.password, newPlayer.x,
newPlayer.y);
printf("Name: %s, From: %s, Password %s, Last Used: %s\n",
newPlayer.name, newPlayer.from,
newPlayer.password, ctime(&newPlayer.lastUsed));
*/
printf("Name: %s\n", newPlayer.name);
printf("Lowercase Name: %s\n", newPlayer.lcname);
printf("Password: ");
for (i = 0; i < 16; i++) {
printf("%x", newPlayer.password[i]);
}
printf("\n");
printf("Last Used: %s", ctime(&newPlayer.last_load));
printf("Location: ( %lf, %lf )\n", newPlayer.x, newPlayer.y);
printf("Experience: %lf\n", newPlayer.experience);
printf("Strength: %lf\n", newPlayer.strength);
printf("Maximum Strength: %lf\n", newPlayer.max_strength);
printf("Energy: %lf\n", newPlayer.energy);
printf("Maximum Energy: %lf\n", newPlayer.max_energy);
printf("Quickness: %lf\n", newPlayer.quickness);
printf("Maximum Quickness: %lf\n", newPlayer.max_quickness);
printf("Mana: %lf\n", newPlayer.mana);
printf("Brains: %lf\n", newPlayer.brains);
printf("Level: %lf\n", newPlayer.level);
printf("Magic Level: %lf\n", newPlayer.magiclvl);
printf("Poison: %f\n", newPlayer.poison);
printf("Sin: %f\n", newPlayer.sin);
printf("Lives: %hd\n", newPlayer.lives);
printf("Age: %d\n", newPlayer.age);
printf("Degenerated: %d\n", newPlayer.degenerated);
printf("Blind: %hd\n", newPlayer.blind);
printf("Gender: %hd\n", newPlayer.gender);
printf("Type: %hd\n", newPlayer.type);
printf("Special Type: %hd\n", newPlayer.special_type);
printf("Shield Next Fight: %hd\n", newPlayer.shield_nf);
printf("Invisible Next Fight: %hd\n", newPlayer.invisible_nf);
printf("Strong Next Fight: %hd\n", newPlayer.strong_nf);
printf("Gold: %lf\n", newPlayer.gold);
printf("Gems: %lf\n", newPlayer.gems);
printf("Sword: %lf\n", newPlayer.sword);
printf("Shield: %lf\n", newPlayer.shield);
printf("Quicksilver: %f\n", newPlayer.quicksilver);
printf("Holy Water: %hd\n", newPlayer.holywater);
printf("Amulets: %hd\n", newPlayer.amulets);
printf("Charms: %hd\n", newPlayer.charms);
printf("Crowns: %hd\n", newPlayer.crowns);
printf("Virgin: %hd\n", newPlayer.virgin);
printf("Palantir: %hd\n", newPlayer.palantir);
printf("Blessing: %hd\n", newPlayer.blessing);
printf("Ring Type: %hd\n", newPlayer.ring_type);
printf("Ring Duration: %hd\n", newPlayer.ring_duration);
printf("Parent Account: %s\n", newPlayer.parent_account);
printf("Parent Network: %s\n", newPlayer.parent_network);
printf("Creation Date: %s", ctime(&newPlayer.date_created));
printf("Faithful: %hd\n", newPlayer.faithful);
printf("Previous Account: %s\n", newPlayer.last_account);
printf("Previous IP: %s\n", newPlayer.last_IP);
printf("Previous Load: %s", ctime(&newPlayer.last_load));
printf("Bad Passwords: %d\n", newPlayer.bad_passwords);
printf("Load Count: %d\n", newPlayer.load_count);
printf("Time Played: %d\n\n", newPlayer.time_played);
}
}