Ismine and datastr

This commit is contained in:
jl777
2019-02-10 01:24:51 -11:00
parent 9919b39bce
commit a98a2413e8

View File

@@ -362,12 +362,17 @@ int32_t rogue_isvalidgame(struct CCcontract_info *cp,int32_t &gameheight,CTransa
UniValue rogue_playerobj(std::vector<uint8_t> playerdata,uint256 playertxid) UniValue rogue_playerobj(std::vector<uint8_t> playerdata,uint256 playertxid)
{ {
int32_t i; struct rogue_player P; char packitemstr[512]; UniValue obj(UniValue::VOBJ),a(UniValue::VARR); int32_t i; struct rogue_player P; char packitemstr[512],*datastr; UniValue obj(UniValue::VOBJ),a(UniValue::VARR);
memset(&P,0,sizeof(P)); memset(&P,0,sizeof(P));
if ( playerdata.size() > 0 ) if ( playerdata.size() > 0 )
{ {
datastr = (char *)malloc(playerdata.size()*2+1);
for (i=0; i<playerdata.size(); i++) for (i=0; i<playerdata.size(); i++)
{
((uint8_t *)&P)[i] = playerdata[i]; ((uint8_t *)&P)[i] = playerdata[i];
sprintf(&datastr[i<<1],"%02x",playerdata[i]);
}
datastr[i<<1] = 0;
} }
int32_t gold,hitpoints,strength,level,experience,packsize,dungeonlevel,pad; int32_t gold,hitpoints,strength,level,experience,packsize,dungeonlevel,pad;
for (i=0; i<P.packsize&&i<MAXPACK; i++) for (i=0; i<P.packsize&&i<MAXPACK; i++)
@@ -376,6 +381,8 @@ UniValue rogue_playerobj(std::vector<uint8_t> playerdata,uint256 playertxid)
a.push_back(packitemstr); a.push_back(packitemstr);
} }
obj.push_back(Pair("playertxid",playertxid.GetHex())); obj.push_back(Pair("playertxid",playertxid.GetHex()));
obj.push_back(Pair("data",datastr));
free(datastr);
obj.push_back(Pair("pack",a)); obj.push_back(Pair("pack",a));
obj.push_back(Pair("packsize",(int64_t)P.packsize)); obj.push_back(Pair("packsize",(int64_t)P.packsize));
obj.push_back(Pair("hitpoints",(int64_t)P.hitpoints)); obj.push_back(Pair("hitpoints",(int64_t)P.hitpoints));
@@ -541,7 +548,7 @@ int32_t rogue_findbaton(struct CCcontract_info *cp,uint256 &playertxid,char **ke
return(-1); return(-1);
} }
void rogue_gameplayerinfo(struct CCcontract_info *cp,UniValue &obj,uint256 gametxid,CTransaction gametx,int32_t vout,int32_t maxplayers) void rogue_gameplayerinfo(struct CCcontract_info *cp,UniValue &obj,uint256 gametxid,CTransaction gametx,int32_t vout,int32_t maxplayers,char *myrogueaddr)
{ {
// identify if bailout or quit or timed out // identify if bailout or quit or timed out
uint256 batontxid,spenttxid,gtxid,ptxid,hashBlock,playertxid; CTransaction spenttx,batontx; int32_t numplayers,regslot,numkeys,batonvout,batonht,retval; int64_t batonvalue; std::vector<uint8_t> playerdata; char destaddr[64]; uint256 batontxid,spenttxid,gtxid,ptxid,hashBlock,playertxid; CTransaction spenttx,batontx; int32_t numplayers,regslot,numkeys,batonvout,batonht,retval; int64_t batonvalue; std::vector<uint8_t> playerdata; char destaddr[64];
@@ -565,6 +572,7 @@ void rogue_gameplayerinfo(struct CCcontract_info *cp,UniValue &obj,uint256 gamet
} else obj.push_back(Pair("status","finished")); } else obj.push_back(Pair("status","finished"));
obj.push_back(Pair("baton",batontxid.ToString())); obj.push_back(Pair("baton",batontxid.ToString()));
obj.push_back(Pair("batonaddr",destaddr)); obj.push_back(Pair("batonaddr",destaddr));
obj.push_back(Pair("ismine",strcmp(myrogueaddr,destaddr)==0));
obj.push_back(Pair("batonvout",(int64_t)batonvout)); obj.push_back(Pair("batonvout",(int64_t)batonvout));
obj.push_back(Pair("batonvalue",ValueFromAmount(batonvalue))); obj.push_back(Pair("batonvalue",ValueFromAmount(batonvalue)));
obj.push_back(Pair("batonht",(int64_t)batonht)); obj.push_back(Pair("batonht",(int64_t)batonht));
@@ -885,7 +893,7 @@ UniValue rogue_gameinfo(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
if ( CCgettxout(txid,i+1,1) < 0 ) if ( CCgettxout(txid,i+1,1) < 0 )
{ {
UniValue obj(UniValue::VOBJ); UniValue obj(UniValue::VOBJ);
rogue_gameplayerinfo(cp,obj,txid,tx,i+1,maxplayers); rogue_gameplayerinfo(cp,obj,txid,tx,i+1,maxplayers,myrogueaddr);
a.push_back(obj); a.push_back(obj);
} }
} }