Extract zombies for comparison

This commit is contained in:
jl777
2019-03-02 22:34:28 -11:00
parent 78f4a6c627
commit 548c281975
5 changed files with 296 additions and 280 deletions

View File

@@ -235,6 +235,7 @@ int32_t safecopy(char *dest,char *src,long len)
#endif #endif
int32_t rogue_replay(uint64_t seed,int32_t sleeptime); int32_t rogue_replay(uint64_t seed,int32_t sleeptime);
char *rogue_keystrokesload(int32_t *numkeysp,uint64_t seed,int32_t counter);
int rogue(int argc, char **argv, char **envp); int rogue(int argc, char **argv, char **envp);
void *OS_loadfile(char *fname,uint8_t **bufp,long *lenp,long *allocsizep) void *OS_loadfile(char *fname,uint8_t **bufp,long *lenp,long *allocsizep)
@@ -762,6 +763,11 @@ void rogue_progress(struct rogue_state *rs,int32_t waitflag,uint64_t seed,char *
} }
free(rs->keystrokeshex), rs->keystrokeshex = 0; free(rs->keystrokeshex), rs->keystrokeshex = 0;
} }
if ( (pastkeys= rogue_keystrokesload(&numpastkeys,seed,1)) != 0 )
{
free(pastkeys);
}
for (i=0; i<num; i++) for (i=0; i<num; i++)
sprintf(&hexstr[i<<1],"%02x",keystrokes[i]&0xff); sprintf(&hexstr[i<<1],"%02x",keystrokes[i]&0xff);
hexstr[i<<1] = 0; hexstr[i<<1] = 0;

View File

@@ -254,11 +254,10 @@ long get_filesize(FILE *fp)
return(fsize); return(fsize);
} }
int32_t rogue_replay(uint64_t seed,int32_t sleeptime) char *rogue_keystrokesload(int32_t *numkeysp,uint64_t seed,int32_t counter)
{ {
FILE *fp; char fname[1024]; char *keystrokes = 0; long num=0,fsize; int32_t i,counter = 0; struct rogue_state *rs; struct rogue_player P,*player = 0; char fname[1024],*keystrokes = 0; FILE *fp; long fsize; int32_t num = 0;
if ( seed == 0 ) *numkeysp = 0;
seed = 777;
while ( 1 ) while ( 1 )
{ {
roguefname(fname,seed,counter); roguefname(fname,seed,counter);
@@ -288,6 +287,16 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime)
counter++; counter++;
fprintf(stderr,"loaded %ld from (%s) total %ld\n",fsize,fname,num); fprintf(stderr,"loaded %ld from (%s) total %ld\n",fsize,fname,num);
} }
*numkeysp = num;
return(keystrokes);
}
int32_t rogue_replay(uint64_t seed,int32_t sleeptime)
{
FILE *fp; char fname[1024]; char *keystrokes = 0; long num=0,fsize; int32_t i,counter = 0; struct rogue_state *rs; struct rogue_player P,*player = 0;
if ( seed == 0 )
seed = 777;
keystrokes = rogue_keystrokesload(&num,seed,counter);
if ( num > 0 ) if ( num > 0 )
{ {
sprintf(fname,"rogue.%llu.player",(long long)seed); sprintf(fname,"rogue.%llu.player",(long long)seed);
@@ -301,7 +310,6 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime)
fclose(fp); fclose(fp);
} }
rogue_replay2(0,seed,keystrokes,num,player,sleeptime); rogue_replay2(0,seed,keystrokes,num,player,sleeptime);
mvaddstr(LINES - 2, 0, (char *)"replay completed"); mvaddstr(LINES - 2, 0, (char *)"replay completed");
endwin(); endwin();
my_exit(0); my_exit(0);

View File

@@ -978,16 +978,18 @@ char *rogue_extractgame(int32_t makefiles,char *str,int32_t *numkeysp,std::vecto
} }
if ( endP.gold <= 0 || endP.hitpoints <= 0 || (endP.strength&0xffff) <= 0 || endP.level <= 0 || endP.experience <= 0 || endP.dungeonlevel <= 0 ) if ( endP.gold <= 0 || endP.hitpoints <= 0 || (endP.strength&0xffff) <= 0 || endP.level <= 0 || endP.experience <= 0 || endP.dungeonlevel <= 0 )
{ {
fprintf(stderr,"zero value character was killed -> no playerdata\n"); sprintf(str,"zero value character was killed -> no playerdata\n");
newdata.resize(0); newdata.resize(0);
//P.gold = (P.gold * 8) / 10; *numkeysp = numkeys;
return(keystrokes);
/* P.gold = (P.gold * 8) / 10;
if ( keystrokes != 0 ) if ( keystrokes != 0 )
{ {
free(keystrokes); free(keystrokes);
keystrokes = 0; keystrokes = 0;
*numkeysp = 0; *numkeysp = 0;
return(keystrokes); return(keystrokes);
} }*/
} }
else else
{ {