rngnext
This commit is contained in:
@@ -34,7 +34,7 @@ UniValue games_rawtxresult(UniValue &result,std::string rawtx,int32_t broadcastf
|
|||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t games_rngnext(uint64_t initseed)
|
uint64_t _games_rngnext(uint64_t initseed)
|
||||||
{
|
{
|
||||||
uint16_t seeds[4]; int32_t i;
|
uint16_t seeds[4]; int32_t i;
|
||||||
seeds[0] = initseed;
|
seeds[0] = initseed;
|
||||||
@@ -48,6 +48,25 @@ uint64_t games_rngnext(uint64_t initseed)
|
|||||||
return(((uint64_t)seeds[3] << 48) | ((uint64_t)seeds[2] << 24) | ((uint64_t)seeds[1] << 16) | seeds[0]);
|
return(((uint64_t)seeds[3] << 48) | ((uint64_t)seeds[2] << 24) | ((uint64_t)seeds[1] << 16) | seeds[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UniValue games_rngnext(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
|
||||||
|
{
|
||||||
|
UniValue result(UniValue::VOBJ); int32_t n; uint64_t seed;
|
||||||
|
if ( params != 0 && (n= cJSON_GetArraySize(params)) == 1 )
|
||||||
|
{
|
||||||
|
seed = jdouble(jitem(params,0),0);
|
||||||
|
result.push_back(Pair("seed",seed));
|
||||||
|
seed = games_rngnext(seed);
|
||||||
|
result.push_back(Pair("rng",seed));
|
||||||
|
result.push_back(Pair("result","success"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result.push_back(Pair("result","error"));
|
||||||
|
result.push_back(Pair("error","not enough params"));
|
||||||
|
}
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
UniValue games_rng(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
|
UniValue games_rng(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
|
||||||
{
|
{
|
||||||
UniValue result(UniValue::VOBJ); int32_t i,n,playerid=0; uint64_t seed,initseed; bits256 hash;
|
UniValue result(UniValue::VOBJ); int32_t i,n,playerid=0; uint64_t seed,initseed; bits256 hash;
|
||||||
@@ -75,13 +94,13 @@ UniValue games_rng(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
initseed = seed;
|
initseed = seed;
|
||||||
seed = games_rngnext(initseed);
|
seed = _games_rngnext(initseed);
|
||||||
result.push_back(Pair("playerid",(int64_t)(playerid - 1)));
|
result.push_back(Pair("playerid",(int64_t)(playerid - 1)));
|
||||||
result.push_back(Pair("initseed",initseed));
|
result.push_back(Pair("seed",initseed));
|
||||||
result.push_back(Pair("seed",seed));
|
result.push_back(Pair("rng",seed));
|
||||||
for (i=0; i<GAMES_MAXRNGS; i++)
|
for (i=0; i<GAMES_MAXRNGS; i++)
|
||||||
seed = games_rngnext(seed);
|
seed = _games_rngnext(seed);
|
||||||
result.push_back(Pair("lastseed",seed));
|
result.push_back(Pair("lastrng",seed));
|
||||||
result.push_back(Pair("maxrngs",GAMES_MAXRNGS));
|
result.push_back(Pair("maxrngs",GAMES_MAXRNGS));
|
||||||
result.push_back(Pair("result","success"));
|
result.push_back(Pair("result","success"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,20 +11,20 @@ std::string MYCCLIBNAME = (char *)"gamescc";
|
|||||||
#define MYCCNAME "games"
|
#define MYCCNAME "games"
|
||||||
|
|
||||||
#define RPC_FUNCS \
|
#define RPC_FUNCS \
|
||||||
{ (char *)MYCCNAME, (char *)"rng", (char *)"hash,seed,playerid", 2, 3, '0', EVAL_GAMES }, \
|
{ (char *)MYCCNAME, (char *)"rng", (char *)"hash,seed,playerid", 2, 3, ' ', EVAL_GAMES }, \
|
||||||
{ (char *)MYCCNAME, (char *)"func1", (char *)"<no args>", 0, 0, '1', EVAL_GAMES },
|
{ (char *)MYCCNAME, (char *)"rngnext", (char *)"seed", 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);
|
||||||
UniValue games_rng(uint64_t txfee,struct CCcontract_info *cp,cJSON *params);
|
UniValue games_rng(uint64_t txfee,struct CCcontract_info *cp,cJSON *params);
|
||||||
UniValue games_func1(uint64_t txfee,struct CCcontract_info *cp,cJSON *params);
|
UniValue games_rngnext(uint64_t txfee,struct CCcontract_info *cp,cJSON *params);
|
||||||
|
|
||||||
#define CUSTOM_DISPATCH \
|
#define CUSTOM_DISPATCH \
|
||||||
if ( cp->evalcode == EVAL_GAMES ) \
|
if ( cp->evalcode == EVAL_GAMES ) \
|
||||||
{ \
|
{ \
|
||||||
if ( strcmp(method,"rng") == 0 ) \
|
if ( strcmp(method,"rng") == 0 ) \
|
||||||
return(games_rng(txfee,cp,params)); \
|
return(games_rng(txfee,cp,params)); \
|
||||||
else if ( strcmp(method,"func1") == 0 ) \
|
else if ( strcmp(method,"rngnext") == 0 ) \
|
||||||
return(games_func1(txfee,cp,params)); \
|
return(games_rngnext(txfee,cp,params)); \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
result.push_back(Pair("result","error")); \
|
result.push_back(Pair("result","error")); \
|
||||||
|
|||||||
Reference in New Issue
Block a user