Ismine and datastr
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user