Greetings
I want to keep track of mob kills/killed stats and show the top ten in
each category....
I cant get the stats to load properly...here is my update_mobstats and
load_mobstats and a sample of the data....
What am I doing wrong?
*****LOAD_MOBSTAT*****
void load_mobstats()
{
FILE *fp;
int vnum;
fclose(fpReserve);
if ((fp=fopen("../data/mobstat.txt","r")) == NULL)
{
log_string("Error: unable to open mobstat file!");
fpReserve = fopen( NULL_FILE, "r" );
exit(1);
}
for ( ; ; )
{
MOB_INDEX_DATA *pMobIndex;
if ( feof(fp) )
{
fclose( fp );
fpReserve = fopen( NULL_FILE, "r" );
return;
}
vnum = fread_number( fp );
if ( vnum == -1 )
{
fclose( fp );
return;
}
pMobIndex = get_mob_index(vnum);
pMobIndex->killed = fread_number(fp);
pMobIndex->kills = fread_number(fp);
}
fclose(fp);
fpReserve = fopen( NULL_FILE, "r" );
return;
}
*****UPDATE_MOBSTATS***** Called one every 5 mins or so
void mobstat_update (void)
{
FILE *fp;
int vnum;
MOB_INDEX_DATA *pMobIndex;
CHAR_DATA *mob;
int nMatch;
char buf[MSL];
fclose(fpReserve);
fp = fopen("../data/mobstat.txt","w");
nMatch = 0;
for (vnum = 0; nMatch < top_mob_index; vnum++)
if ((pMobIndex = get_mob_index(vnum)) != NULL)
{
nMatch++;
if ( ( pMobIndex = get_mob_index( vnum ) ) != NULL )
{
mob = create_mobile( pMobIndex );
if (mob->pIndexData->kills >= 3 || mob->pIndexData->killed >= 3)
{
sprintf(buf,"%5d %5d %5d\n", mob->pIndexData->vnum,
mob->pIndexData->kills, mob->pIndexData->killed);
fprintf( fp, buf );
}
}
}
fprintf(fp,"-1");
fclose(fp);
fpReserve = fopen( NULL_FILE, "r" );
return;
}
*****DATA FILE**** mobstats.txt
11 0 3
12 1 2
101 2 0
-1
Any help in pointing out my mistake would be great....it appears that the
data is not getting loaded into the indexdata.....
Thanks
-T