Player data extraction

This commit is contained in:
jl777
2019-02-09 20:25:52 -11:00
parent a68d3a00a2
commit 1f5b5b7394

View File

@@ -384,7 +384,6 @@ int32_t rogue_playerdata(struct CCcontract_info *cp,uint256 &origplayergame,CPub
if ( vopret.size() > 34 && script[0] == EVAL_ROGUE && (script[1] == 'H' || script[1] == 'Q' || script[1] == 'S') ) if ( vopret.size() > 34 && script[0] == EVAL_ROGUE && (script[1] == 'H' || script[1] == 'Q' || script[1] == 'S') )
{ {
memcpy(&highlander,script+2,sizeof(highlander)); memcpy(&highlander,script+2,sizeof(highlander));
//highlander = revuint256(highlander);
fprintf(stderr,"got vin.%s \n",playertx.vin[1].prevout.hash.ToString().c_str()); fprintf(stderr,"got vin.%s \n",playertx.vin[1].prevout.hash.ToString().c_str());
// verify highlander is a valid gametxid, verify playertxid is linked to it // verify highlander is a valid gametxid, verify playertxid is linked to it
//if ( rogue_iterateplayer(highlander,playertx.vin[1].prevout.n,playertxid) == 0 ) //if ( rogue_iterateplayer(highlander,playertx.vin[1].prevout.n,playertxid) == 0 )
@@ -392,7 +391,7 @@ int32_t rogue_playerdata(struct CCcontract_info *cp,uint256 &origplayergame,CPub
{ {
//if ( GetTransaction(highlander,highlandertx,hashBlock,false) != 0 && (numvouts= highlandertx.vout.size()) > 0 ) //if ( GetTransaction(highlander,highlandertx,hashBlock,false) != 0 && (numvouts= highlandertx.vout.size()) > 0 )
{ {
if ( (f= rogue_highlanderopretdecode(origplayergame,pk,playerdata,playertx.vout[numvouts-1].scriptPubKey)) == 'H' || f == 'Q' ) if ( (f= rogue_highlanderopretdecode(origplayergame,pk,playerdata,playertx.vout[numvouts-1].scriptPubKey)) == 'H' || f == 'Q' || f == 'S' )
{ {
//if ( highlandertx.vin[0].prevout.hash == origplayergame && highlandertx.vin[0].prevout.n == 0 && rogue_isvalidgame(cp,gametx,buyin,maxplayers,origplayergame) == 0 && maxplayers > 1 ) //if ( highlandertx.vin[0].prevout.hash == origplayergame && highlandertx.vin[0].prevout.n == 0 && rogue_isvalidgame(cp,gametx,buyin,maxplayers,origplayergame) == 0 && maxplayers > 1 )
return(0); return(0);
@@ -438,11 +437,14 @@ int32_t rogue_findbaton(struct CCcontract_info *cp,char **keystrokesp,int32_t &n
} //else fprintf(stderr,"%d+2 unspent\n",i); } //else fprintf(stderr,"%d+2 unspent\n",i);
} }
if ( matches == 1 ) if ( matches == 1 )
{
if ( myIsutxo_spent(spenttxid,gametxid,maxplayers+i+2) < 0 )
{ {
numvouts = matchtx.vout.size(); numvouts = matchtx.vout.size();
//fprintf(stderr,"matches.%d numvouts.%d\n",matches,numvouts); //fprintf(stderr,"matches.%d numvouts.%d\n",matches,numvouts);
if ( rogue_registeropretdecode(txid,playertxid,matchtx.vout[numvouts-1].scriptPubKey) == 'R' && txid == gametxid ) if ( rogue_registeropretdecode(txid,playertxid,matchtx.vout[numvouts-1].scriptPubKey) == 'R' && txid == gametxid )
{ {
fprintf(stderr,"playertxid.%s\n",playertxid.ToString().c_str());
if ( playertxid == zeroid || rogue_playerdata(cp,origplayergame,pk,playerdata,playertxid) == 0 ) if ( playertxid == zeroid || rogue_playerdata(cp,origplayergame,pk,playerdata,playertxid) == 0 )
{ {
txid = matchtx.GetHash(); txid = matchtx.GetHash();
@@ -492,6 +494,12 @@ int32_t rogue_findbaton(struct CCcontract_info *cp,char **keystrokesp,int32_t &n
} }
} else fprintf(stderr,"findbaton opret error\n"); } else fprintf(stderr,"findbaton opret error\n");
} }
else
{
fprintf(stderr,"already played\n");
return(-5);
}
}
return(-1); return(-1);
} }
@@ -775,6 +783,7 @@ UniValue rogue_finishgame(uint64_t txfee,struct CCcontract_info *cp,cJSON *param
free(keystrokes); free(keystrokes);
mtx.vin.push_back(CTxIn(batontxid,batonvout,CScript())); mtx.vin.push_back(CTxIn(batontxid,batonvout,CScript()));
mtx.vin.push_back(CTxIn(gametxid,2+maxplayers+regslot,CScript())); mtx.vin.push_back(CTxIn(gametxid,2+maxplayers+regslot,CScript()));
mtx.vout.push_back(MakeCC1vout(cp->evalcode,1,mypk));
mtx.vout.push_back(MakeCC1vout(cp->evalcode,txfee,mypk)); mtx.vout.push_back(MakeCC1vout(cp->evalcode,txfee,mypk));
if ( num > 0 ) if ( num > 0 )
{ {