Gametxid and eventid as params

This commit is contained in:
jl777
2019-03-25 03:48:00 -11:00
parent b1b71ac6a1
commit c833422a79
2 changed files with 21 additions and 8 deletions

View File

@@ -248,22 +248,32 @@ int32_t games_payload(CPubKey pk,uint32_t timestamp,std::vector<uint8_t> payload
UniValue games_events(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) UniValue games_events(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
{ {
static uint256 lastgametxid; static uint256 lastgametxid; static uint32_t numevents;
UniValue result(UniValue::VOBJ); std::vector<uint8_t> sig,payload,vopret; int32_t len,i,n; uint32_t x; CPubKey mypk; char str[67]; uint32_t timestamp = 0; UniValue result(UniValue::VOBJ); std::vector<uint8_t> sig,payload,vopret; int32_t len,i,n; uint32_t x; CPubKey mypk; char str[67]; uint32_t eventid,timestamp = 0; uint256 gametxid;
if ( params != 0 && (n= cJSON_GetArraySize(params)) == 1 ) if ( params != 0 && (n= cJSON_GetArraySize(params)) >= 1 && n <= 3 )
{ {
if ( payments_parsehexdata(payload,jitem(params,0),0) == 0 ) if ( payments_parsehexdata(payload,jitem(params,0),0) == 0 )
{ {
if ( Gametxid != lastgametxid ) if ( n >= 2 )
gametxid = juint256(jitem(params,1),0);
else gametxid = zeroid;
if ( gametxid != lastgametxid )
{ {
lastgametxid = Gametxid; lastgametxid = gametxid;
numevents = 0; numevents = 1;
eventid = 0;
} }
if ( n == 3 )
{
eventid = juint(jitem(params,2),0);
if ( numevents <= eventid )
numevents = eventid+1;
} else eventid = numevents++;
len = payload.size(); len = payload.size();
payload.resize(len + 4 + 32); payload.resize(len + 4 + 32);
for (i=0; i<32; i++) for (i=0; i<32; i++)
payload[len++] = ((uint8_t *)&Gametxid)[i]; payload[len++] = ((uint8_t *)&Gametxid)[i];
x = numevents++; x = eventid;
payload[len++] = x, x >>= 8; payload[len++] = x, x >>= 8;
payload[len++] = x, x >>= 8; payload[len++] = x, x >>= 8;
payload[len++] = x, x >>= 8; payload[len++] = x, x >>= 8;
@@ -274,6 +284,9 @@ UniValue games_events(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
GetOpReturnData(games_eventopret(timestamp,mypk,sig,payload),vopret); GetOpReturnData(games_eventopret(timestamp,mypk,sig,payload),vopret);
games_payload(mypk,timestamp,payload); games_payload(mypk,timestamp,payload);
komodo_sendmessage(4,8,"events",vopret); komodo_sendmessage(4,8,"events",vopret);
result.push_back(Pair("gametxid",gametxid.GetHex()));
result.push_back(Pair("eventid",(int64_t)eventid));
result.push_back(Pair("timestamp",(int64_t)timestamp));
result.push_back(Pair("result","success")); result.push_back(Pair("result","success"));
result.push_back(Pair("pubkey33",pubkey33_str(str,(uint8_t *)&mypk))); result.push_back(Pair("pubkey33",pubkey33_str(str,(uint8_t *)&mypk)));
} }

View File

@@ -23,7 +23,7 @@ std::string MYCCLIBNAME = (char *)"gamescc";
{ (char *)MYCCNAME, (char *)"rngnext", (char *)"seed", 1, 1, ' ', EVAL_GAMES }, \ { (char *)MYCCNAME, (char *)"rngnext", (char *)"seed", 1, 1, ' ', EVAL_GAMES }, \
{ (char *)MYCCNAME, (char *)"create", (char *)"game,minplayers,maxplayers,buyin,numblocks", 5, 5, ' ', EVAL_GAMES }, \ { (char *)MYCCNAME, (char *)"create", (char *)"game,minplayers,maxplayers,buyin,numblocks", 5, 5, ' ', EVAL_GAMES }, \
{ (char *)MYCCNAME, (char *)"info", (char *)"txid", 1, 1, ' ', EVAL_GAMES }, \ { (char *)MYCCNAME, (char *)"info", (char *)"txid", 1, 1, ' ', EVAL_GAMES }, \
{ (char *)MYCCNAME, (char *)"events", (char *)"hex", 1, 1, ' ', EVAL_GAMES }, \ { (char *)MYCCNAME, (char *)"events", (char *)"eventshex [gametxid [eventid]]", 1, 3, ' ', EVAL_GAMES }, \
{ (char *)MYCCNAME, (char *)"register", (char *)"txid", 1, 1, ' ', EVAL_GAMES }, { (char *)MYCCNAME, (char *)"register", (char *)"txid", 1, 1, ' ', EVAL_GAMES },
bool games_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const CTransaction tx); bool games_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const CTransaction tx);