public MyJson.IJsonNode Parser(Component com,NeedList list) { UITexture t = com as UITexture; var json = new MyJson.JsonNode_Object(); if(t.mainTexture!=null) { string needtex = AtlasMgr.SaveTexture(t.mainTexture, System.IO.Path.Combine(Application.streamingAssetsPath, "nguitex")); json["mainTexture"] = new MyJson.JsonNode_ValueString(needtex); list.AddDependTexture(needtex); if(t.shader!=null) { string shader = t.shader.name; json["shader"] = new MyJson.JsonNode_ValueString(shader); } } else { Debug.LogWarning("不支持 导出使用材质的UITexture"); } json["uvRect"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.RectToString(t.uvRect)); ComponentParser.ParserWidget(json, t); return json; }
public MyJson.IJsonNode Parser(Component com, NeedList list) { MeshRenderer t = com as MeshRenderer; var json = new MyJson.JsonNode_Object(); json["castShadows"] = new MyJson.JsonNode_ValueNumber(t.castShadows); json["receiveShadows"] = new MyJson.JsonNode_ValueNumber(t.receiveShadows); json["useLightProbes"] = new MyJson.JsonNode_ValueNumber(t.useLightProbes); int meshcount = t.sharedMaterials.Length; json["materials"] = new MyJson.JsonNode_Array(); foreach (var m in t.sharedMaterials) { MyJson.JsonNode_Object matobj = new MyJson.JsonNode_Object(); json["materials"].AddArrayValue(matobj); matobj.SetDictValue("name", m.name); matobj.SetDictValue("shader", m.shader.name); matobj.SetDictValue("shaderkeyword", new MyJson.JsonNode_Array()); foreach (var shaderkey in m.shaderKeywords) { matobj["shaderkeyword"].AddArrayValue(shaderkey); } if (m.mainTexture != null) { string name = AssetMgr.SaveTexture(m.mainTexture, System.IO.Path.Combine(Application.streamingAssetsPath, "texture")); matobj.SetDictValue("maintex", name); list.AddDependTexture(name); } } return json; }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { UISlider t = com as UISlider; var json = new MyJson.JsonNode_Object(); json["value"] = new MyJson.JsonNode_ValueNumber(t.value); json["alpha"] = new MyJson.JsonNode_ValueNumber(t.alpha); json["numberOfSteps"] = new MyJson.JsonNode_ValueNumber(t.numberOfSteps); if (t.foregroundWidget != null) { json["foregroundWidget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.foregroundWidget.gameObject)); } if (t.backgroundWidget != null) { json["backgroundWidget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.backgroundWidget.gameObject)); } if (t.thumb != null) { json["thumb"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.thumb.gameObject)); } json["fillDirection"] = new MyJson.JsonNode_ValueString(t.fillDirection.ToString()); return json; }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { var json = new MyJson.JsonNode_Object(); return json; }
public MyJson.IJsonNode Parser(Component com, NeedList list) { MeshFilter t = com as MeshFilter; var json = new MyJson.JsonNode_Object(); var name = AssetMgr.SaveMesh(t.sharedMesh, System.IO.Path.Combine(Application.streamingAssetsPath, "mesh")); list.AddDependMesh(name); json["mesh"] = new MyJson.JsonNode_ValueString(name); return json; }
public MyJson.IJsonNode Parser(Component com,NeedList list) { Transform t = com as Transform; var json = new MyJson.JsonNode_Object(); json["P"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.localPosition)); json["R"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.localEulerAngles)); json["S"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.localScale)); return json; }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { LGButton btn = com as LGButton; var json = new MyJson.JsonNode_Object(); json["Tag"] = new MyJson.JsonNode_ValueString(btn.Tag.ToString()); json["Team"] = new MyJson.JsonNode_ValueString(btn.Team.ToString()); return json; }
public MyJson.IJsonNode Parser(Component com,NeedList list) { BoxCollider t = com as BoxCollider; var json = new MyJson.JsonNode_Object(); json["isTrigger"] = new MyJson.JsonNode_ValueNumber(t.isTrigger); json["center"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.center)); json["size"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.size)); return json; }
public MyJson.IJsonNode Parser(Component com,NeedList needlist) { UISprite t = com as UISprite; var json = new MyJson.JsonNode_Object(); //t.atlas atlas 有特殊的打包逻辑 string atlas = AtlasMgr.SaveAtlas(t.atlas, System.IO.Path.Combine(Application.streamingAssetsPath, "nguiatlas"), System.IO.Path.Combine(Application.streamingAssetsPath, "nguitex")); json["atlas"] =new MyJson.JsonNode_ValueString( atlas); if(needlist!=null) { needlist.AddDependAtlas(atlas); } json["spriteName"] = new MyJson.JsonNode_ValueString(t.spriteName); json["spriteType"] = new MyJson.JsonNode_ValueString(t.type.ToString()); if (t.type == UISprite.Type.Simple) { json["flip"] = new MyJson.JsonNode_ValueString(t.flip.ToString()); } else if (t.type == UISprite.Type.Sliced) { json["centerType"] = new MyJson.JsonNode_ValueString(t.centerType.ToString()); json["flip"] = new MyJson.JsonNode_ValueString(t.flip.ToString()); } else if (t.type == UISprite.Type.Tiled) { } else if (t.type == UISprite.Type.Filled) { json["flip"] = new MyJson.JsonNode_ValueString(t.flip.ToString()); json["fillDirection"] = new MyJson.JsonNode_ValueString(t.fillDirection.ToString()); json["fillAmount"] = new MyJson.JsonNode_ValueNumber(t.fillAmount); json["invert"] = new MyJson.JsonNode_ValueNumber(t.invert); } else if(t.type== UISprite.Type.Advanced) { json["leftType"] = new MyJson.JsonNode_ValueString(t.leftType.ToString()); json["rightType"] = new MyJson.JsonNode_ValueString(t.rightType.ToString()); json["topType"] = new MyJson.JsonNode_ValueString(t.topType.ToString()); json["bottomType"] = new MyJson.JsonNode_ValueString(t.bottomType.ToString()); json["centerType"] = new MyJson.JsonNode_ValueString(t.centerType.ToString()); json["flip"] = new MyJson.JsonNode_ValueString(t.flip.ToString()); } ComponentParser.ParserWidget(json, t); return json; }
public MyJson.IJsonNode Parser(Component com,NeedList list) { MeshCollider t = com as MeshCollider; var json = new MyJson.JsonNode_Object(); json["isTrigger"] = new MyJson.JsonNode_ValueNumber(t.isTrigger); var name = AssetMgr.SaveMesh(t.sharedMesh, System.IO.Path.Combine(Application.streamingAssetsPath, "mesh")); list.AddDependMesh(name); json.SetDictValue("mesh", name); json.SetDictValue("convex", t.convex); json.SetDictValue("smoothSphereCollisions", t.smoothSphereCollisions); return json; }
public MyJson.IJsonNode Parser(Component com,NeedList list) { UIAnchor t = com as UIAnchor; var json = new MyJson.JsonNode_Object(); json["uiCamera"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ComponentToID(t.uiCamera)); json["container"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.container)); json["side"] = new MyJson.JsonNode_ValueString(t.side.ToString()); json["runOnlyOnce"] = new MyJson.JsonNode_ValueNumber(t.runOnlyOnce); json["relativeOffset"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.relativeOffset)); json["pixelOffset"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.pixelOffset)); return json; }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { UIDragScrollView t = com as UIDragScrollView; var json = new MyJson.JsonNode_Object(); if (t.scrollView != null) { json["scrollView"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.scrollView.gameObject)); } return json; }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { UIDragDropContainer t = com as UIDragDropContainer; var json = new MyJson.JsonNode_Object(); if (t.reparentTarget != null) { json["reparentTarget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.reparentTarget.gameObject)); } return json; }
public MyJson.IJsonNode Parser(Component com, NeedList list) { Light t = com as Light; var json = new MyJson.JsonNode_Object(); json.SetDictValue("type", (int)t.type); if (t.type == LightType.Spot) { json.SetDictValue("range", t.range); json.SetDictValue("spotangle", t.spotAngle); } if (t.type == LightType.Point) { json.SetDictValue("range", t.range); } if (t.type != LightType.Area) { json.SetDictValue("color", ComponentTypeConvert.ColorToString(t.color)); json.SetDictValue("intensity", t.intensity); //t.cookie //t.cookiesize json.SetDictValue("shadowtype", (int)t.shadows); if (t.shadows != LightShadows.None) { json.SetDictValue("shadowStrength", t.shadowStrength); json.SetDictValue("shadowBias", t.shadowBias); //shadow质量找不到怎么操作 } if (t.shadows == LightShadows.Soft) { json.SetDictValue("shadowSoftness", t.shadowSoftness); json.SetDictValue("shadowSoftnessFade", t.shadowSoftnessFade); } //Drawhalo not found //flare json.SetDictValue("renderMode", (int)t.renderMode); json.SetDictValue("cullingMask", t.cullingMask); //lightmapping not found } return json; }
public MyJson.IJsonNode Parser(Component com,NeedList list) { UIToggle t = com as UIToggle; var json = new MyJson.JsonNode_Object(); if (t.activeSprite != null) { json["activeSprite"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.activeSprite.gameObject)); Debug.Log(t.gameObject + "&&&&&&&&&&&&&&&&&&&&&"+t.activeSprite.gameObject); } //json["activeSprite"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t)); //json["group"] = new MyJson.JsonNode_ValueNumber(t.group); //json["value"] = new MyJson.JsonNode_ValueNumber(t.value); // json ["sprite"] = new MyJson.JsonNode_ValueString (t.activeSprite); // json ["onChange"] = new MyJson.JsonNode_ValueString (t.onChange); return json; }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { UIScrollView sv = com as UIScrollView; var json = new MyJson.JsonNode_Object(); json["movement"] = new MyJson.JsonNode_ValueString(sv.movement.ToString()); json["dragEffect"] = new MyJson.JsonNode_ValueString(sv.dragEffect.ToString()); json["scrollWheelFactor"] = new MyJson.JsonNode_ValueNumber(sv.scrollWheelFactor); json["momentumAmount"] = new MyJson.JsonNode_ValueNumber(sv.momentumAmount); json["restrictWithinPanel"] = new MyJson.JsonNode_ValueNumber(sv.restrictWithinPanel); json["disableDragIfFits"] = new MyJson.JsonNode_ValueNumber(sv.disableDragIfFits); json["smoothDragStart"] = new MyJson.JsonNode_ValueNumber(sv.smoothDragStart); json["iOSDragEmulation"] = new MyJson.JsonNode_ValueNumber(sv.iOSDragEmulation); return json; }
public MyJson.IJsonNode Parser(Component com,NeedList list) { UILabel t = com as UILabel; var json = new MyJson.JsonNode_Object(); //font 有特殊的打包逻辑 if (t.bitmapFont != null) { json["bfont"] = new MyJson.JsonNode_ValueString(t.bitmapFont.name); } else if (t.trueTypeFont != null) { json["tfont"] = new MyJson.JsonNode_ValueString(t.trueTypeFont.name); if(list!=null) { list.AddDependTFont(t.trueTypeFont.name); } } else { Debug.LogError("UILabel" + com.name + " 未指定Font"); } json["fontsize"] = new MyJson.JsonNode_ValueNumber(t.fontSize); //材质有特殊的打包逻辑 //json["mate"] = t.material; json["text"] = new MyJson.JsonNode_ValueString(t.text); json["overflowMethod"] = new MyJson.JsonNode_ValueString(t.overflowMethod.ToString()); json["alignment"] = new MyJson.JsonNode_ValueString(t.alignment.ToString()); json["keepCrispWhenShrunk"] = new MyJson.JsonNode_ValueString(t.keepCrispWhenShrunk.ToString()); json["applyGradient"] = new MyJson.JsonNode_ValueNumber(t.applyGradient); json["gradientTop"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.gradientTop)); json["gradientBottom"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.gradientBottom)); json["effectStyle"] = new MyJson.JsonNode_ValueString(t.effectStyle.ToString()); json["effectColor"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.effectColor)); json["effectDistance"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.effectDistance)); json["spacing"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(new Vector2(t.spacingX, t.spacingY))); json["maxLineCount"] = new MyJson.JsonNode_ValueNumber(t.maxLineCount); ComponentParser.ParserWidget(json, t); return json; }
public static string SaveAtlas(UIAtlas atlas, string path,string pathtex) { if (System.IO.Directory.Exists(path) == false) { System.IO.Directory.CreateDirectory(path); } string tname = SaveTexture(atlas.texture, pathtex); MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); obj["pixelSize"] = new MyJson.JsonNode_ValueNumber(atlas.pixelSize); var jsonmat = new MyJson.JsonNode_Object(); obj["mat"] = jsonmat; jsonmat["shader"] = new MyJson.JsonNode_ValueString(atlas.spriteMaterial.shader.name); MyJson.JsonNode_Array shaderparams = new MyJson.JsonNode_Array(); jsonmat["shaderparam"] = shaderparams; foreach (var p in atlas.spriteMaterial.shaderKeywords) { shaderparams.Add(new MyJson.JsonNode_ValueString(p)); } jsonmat["img"] = new MyJson.JsonNode_ValueString(tname); var jsonsparray = new MyJson.JsonNode_Object(); obj["sprites"] = jsonsparray; foreach (var s in atlas.spriteList) { MyJson.JsonNode_Array sarray = new MyJson.JsonNode_Array(); jsonsparray[s.name] = sarray; sarray.Add(new MyJson.JsonNode_ValueNumber(s.x)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.y)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.width)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.height)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderLeft)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderRight)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderTop)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderBottom)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingLeft)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingRight)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingTop)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingBottom)); } string atalsName = atlas.name.ToLower(); System.IO.File.WriteAllText(System.IO.Path.Combine(path, atalsName + ".atlas.txt"), obj.ToString()); return atalsName; }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { UIGrid t = com as UIGrid; var json = new MyJson.JsonNode_Object(); json["arrangement"] = new MyJson.JsonNode_ValueString(t.arrangement.ToString()); json["sorting"] = new MyJson.JsonNode_ValueString(t.sorting.ToString()); json["pivot"] = new MyJson.JsonNode_ValueString(t.pivot.ToString()); json["maxPerLine"] = new MyJson.JsonNode_ValueNumber(t.maxPerLine); json["cellWidth"] = new MyJson.JsonNode_ValueNumber(t.cellWidth); json["cellHeight"] = new MyJson.JsonNode_ValueNumber(t.cellHeight); json["animateSmoothly"] = new MyJson.JsonNode_ValueNumber(t.animateSmoothly); json["hideInactive"] = new MyJson.JsonNode_ValueNumber(t.hideInactive); json["keepWithinPanel"] = new MyJson.JsonNode_ValueNumber(t.keepWithinPanel); return json; }
public MyJson.IJsonNode Parser(Component com,NeedList list) { UIPanel t = com as UIPanel; var json = new MyJson.JsonNode_Object(); json["alpha"] = new MyJson.JsonNode_ValueNumber(t.alpha); json["depth"] = new MyJson.JsonNode_ValueNumber(t.depth); json["clipping"] = new MyJson.JsonNode_ValueString(t.clipping.ToString()); if(t.clipping!= UIDrawCall.Clipping.None) { json["offset"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.clipOffset)); json["region"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector4ToString(t.baseClipRegion)); if(t.clipping== UIDrawCall.Clipping.SoftClip) { json["softness"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.clipSoftness)); } } return json; }
public static MyJson.JsonNode_Object GetMatConfig(Material mat) { MaterialProperty[] mps = MaterialEditor.GetMaterialProperties(new UnityEngine.Object[] { mat }); MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["name"] = new MyJson.JsonNode_ValueString(mat.shader.name); if (mps != null && mps.Length > 0) { MyJson.JsonNode_Object _params = new MyJson.JsonNode_Object(); json["params"] = _params; foreach (var mp in mps) { if (mp.flags == MaterialProperty.PropFlags.HideInInspector) continue; MyJson.JsonNode_Object p = new MyJson.JsonNode_Object(); _params[mp.name] = p; p["name"] = new MyJson.JsonNode_ValueString(mp.name); p["type"] = new MyJson.JsonNode_ValueString(mp.type.ToString()); p["flags"] = new MyJson.JsonNode_ValueString(mp.flags.ToString()); if (mp.type == MaterialProperty.PropType.Texture) { p["texdim"] = new MyJson.JsonNode_ValueString(mp.textureDimension.ToString()); } if (mp.type == MaterialProperty.PropType.Range) { p["rangex"] = new MyJson.JsonNode_ValueNumber(mp.rangeLimits.x); p["rangey"] = new MyJson.JsonNode_ValueNumber(mp.rangeLimits.y); } } } else { json["error"] = new MyJson.JsonNode_ValueString("this mat do not have property."); } return json; }
public MyJson.IJsonNode Parser(Component com,NeedList list) { UIButton t = com as UIButton; var json = new MyJson.JsonNode_Object(); json["tweenTarget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.tweenTarget)); json["dragHighlight"] = new MyJson.JsonNode_ValueNumber(t.dragHighlight); json["duration"] = new MyJson.JsonNode_ValueNumber(t.duration); json["colorN"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.defaultColor)); json["colorH"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.hover)); json["colorP"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.pressed)); json["colorD"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.disabledColor)); json["spriteN"] = new MyJson.JsonNode_ValueString(t.normalSprite); json["springH"] = new MyJson.JsonNode_ValueString(t.hoverSprite); json["springP"] = new MyJson.JsonNode_ValueString(t.pressedSprite); json["springD"] = new MyJson.JsonNode_ValueString(t.disabledSprite); json["pixelSnap"] = new MyJson.JsonNode_ValueNumber(t.pixelSnap); return json; }
async public Task Start() { string wif = "KwwJMvfFPcRx2HSgQRPviLv4wPrxRaLk7kfQntkH8kCXzTgAts8t"; string targetAddress = "ALjSnMZidJqd18iQaoCgFun6iqWRm2cVtj"; decimal sendCount = new decimal(1); byte[] prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif); byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey); //获取自己的utxo Dictionary <string, List <UTXO> > dic_UTXO = await GetUTXOByAddress("https://api.nel.group/api/testnet", address); //拼装交易体 Transaction tran = makeTran(dic_UTXO, address, targetAddress, new ThinNeo.Hash256("0xc56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b"), sendCount); tran.version = 0; tran.attributes = new ThinNeo.Attribute[0]; tran.type = ThinNeo.TransactionType.ContractTransaction; byte[] msg = tran.GetMessage(); string msgstr = ThinNeo.Helper.Bytes2HexString(msg); byte[] signdata = ThinNeo.Helper.Sign(msg, prikey); tran.AddWitness(signdata, pubkey, address); string txid = tran.GetHash().ToString(); byte[] data = tran.GetRawData(); string rawdata = ThinNeo.Helper.Bytes2HexString(data); byte[] postdata; var url = HttpHelper.MakeRpcUrlPost("https://api.nel.group/api/testnet", "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata)); var result = await HttpHelper.HttpPost(url, postdata); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result); Console.WriteLine(resJO.ToString()); }
public async Task CreateNep5Async(string ChainHash, string WIF, string ContractPath) { KeyPair keypair = ZoroHelper.GetKeyPairFromWIF(WIF); byte[] script = System.IO.File.ReadAllBytes(ContractPath); Console.WriteLine("NEP5 Contract Hash:" + script.ToScriptHash()); byte[] parameter__list = ZoroHelper.HexString2Bytes("0710"); byte[] return_type = ZoroHelper.HexString2Bytes("05"); int need_storage = 1; int need_nep4 = 0; int need_canCharge = 4; string name = "mygas"; string version = "1.0"; string auther = "LZ"; string email = "0"; string description = "0"; using (ScriptBuilder sb = new ScriptBuilder()) { var ss = need_storage | need_nep4 | need_canCharge; sb.EmitPush(description); sb.EmitPush(email); sb.EmitPush(auther); sb.EmitPush(version); sb.EmitPush(name); sb.EmitPush(ss); sb.EmitPush(return_type); sb.EmitPush(parameter__list); sb.EmitPush(script); sb.EmitSysCall("Zoro.Contract.Create"); var result = await ZoroHelper.SendInvocationTransaction(sb.ToArray(), keypair, ChainHash, Config.GasPrice); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result); Console.WriteLine(resJO.ToString()); } }
void LoadState() { processedBlock = 0; //var highblock = System.IO.Path.Combine(statepath, "processedblock.json"); try { //if (System.IO.File.Exists(highblock) == false) // throw new Exception(highblock + " not found."); //var info = MyJson.Parse(System.IO.File.ReadAllText(highblock)).AsDict(); //processedBlock = info["blockindex"].AsInt(); //var hash = Helper.HexToString(info["hash"].AsString()); //var stateFile = System.IO.Path.Combine(statepath, "block_" + processedBlock.ToString() + ".state.json"); //if (System.IO.File.Exists(stateFile) == false) // throw new Exception(stateFile + " not found."); //var bytes = System.IO.File.ReadAllBytes(stateFile); //var hashinjson = sha256.ComputeHash(bytes); //if (Helper.BytesEqual(hash, hashinjson) == false) // throw new Exception("hash not match"); //largeState = MyJson.Parse(System.Text.Encoding.UTF8.GetString(bytes)) as MyJson.JsonNode_Object; largeState = new MyJson.JsonNode_Object(); processedBlock = 200000; } catch (Exception err) { Console.WriteLine("error LoadState:" + err.Message); largeState = new MyJson.JsonNode_Object(); processedBlock = -1; } Console.WriteLine("start block=" + processedBlock); }
static public void friend_getlist() { try { String URL = Config.ROOT_URL + "friend_getlist"; PostData nvc = new PostData(); Func.putPassWord(nvc); //nvc.Add("order", "addtime"); //nvc.Add("desc", "DESC"); nvc.Add("start", "0"); nvc.Add("count", "0"); nvc.Add("tag", "qq"); nvc.Add("tagval", "251197161"); if (nvc != null) { string sttuas = Func.HttpPostData(URL, 10000, nvc); if (sttuas.Length > 10) { MyJson.JsonNode_Array jsons = MyJson.Parse(sttuas) as MyJson.JsonNode_Array; for (int i = 0; i < jsons.GetListCount(); i++) { MyJson.JsonNode_Object json = jsons.GetArrayItem(i) as MyJson.JsonNode_Object; QQFriend info = new QQFriend(); info.qq = json["qq"].AsString(); info.qqfri = json["qqfri"].AsString(); info.addtime = Func.MyUrlDeCode(json["addtime"].AsString()); info.state = Func.MyUrlDeCode(json["state"].AsString()); lsQQFriend.Add(info); } } } } catch (Exception) { } }
public override void HandleMsg(params object[] _params) { result.msgCode = (EnumMsgCode)_params[0]; result.errorCode = (EnumErrorCode)_params[1]; byte[] data = (byte[])_params[2]; string appVersion = data[0] + "." + data[1]; MyJson.JsonNode_Object Jo_PackageInfo = new MyJson.JsonNode_Object(); Jo_PackageInfo["Framework"] = new MyJson.JsonNode_ValueString(appVersion); //获取有几种插件 for (var i = 2; i < data.Length; i = i + 4) { var version = data[i + 2] + "." + data[i + 3]; if (version == "0.0") { break; } var type = (NeoDun.AddressType)BitConverter.ToInt16(data, i); Jo_PackageInfo[type.ToString()] = new MyJson.JsonNode_ValueString(version); } result.data = Jo_PackageInfo; }
//从市场里面提币 void test_drawToken() { MyJson.JsonNode_Array paparms = new MyJson.JsonNode_Array(); MyJson.JsonNode_Object paparms_1 = new MyJson.JsonNode_Object(); var array = new MyJson.JsonNode_Array(); array.AddArrayValue("(addr)AYTcTTB8jpWtGgs8ukoUrQPm1zmEFxZHNk"); array.AddArrayValue("(int)" + 100000000); paparms_1["sbParamJson"] = array; paparms_1["sbPushString"] = new MyJson.JsonNode_ValueString("drawToken"); paparms_1["nnc"] = new MyJson.JsonNode_ValueString("0x7753e79cfb98e63e2b7aa00a819e0cb86fdb1930"); MyJson.JsonNode_Object paparms_extString = new MyJson.JsonNode_Object(); paparms_extString["txType"] = new MyJson.JsonNode_ValueString("transferNepToAuc"); paparms_extString["kind"] = new MyJson.JsonNode_ValueString("0"); paparms_extString["data"] = new MyJson.JsonNode_ValueString("1"); paparms_1["extString"] = paparms_extString; paparms.AddArrayValue(paparms_1); NeoGameSDK_CS.makeRawTransaction((bool timeout, WWW www) => { Debug.Log(www.text); }, paparms); }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { UIInput inp = com as UIInput; var json = new MyJson.JsonNode_Object(); if (inp.label != null) { json["label"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ComponentToID(inp.label.GetComponent<UILabel>())); } json["value"] = new MyJson.JsonNode_ValueString(inp.value); json["savedAs"] = new MyJson.JsonNode_ValueString(inp.savedAs); json["activeTextColor"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(inp.activeTextColor)); json["caretColor"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(inp.caretColor)); json["selectionColor"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(inp.selectionColor)); if (inp.selectOnTab != null) { json["selectOnTab"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(inp.selectOnTab.gameObject)); } json["inputType"] = new MyJson.JsonNode_ValueString(inp.inputType.ToString()); json["validation"] = new MyJson.JsonNode_ValueString(inp.validation.ToString()); json["characterLimit"] = new MyJson.JsonNode_ValueNumber(inp.characterLimit); return json; }
private static async Task <Dictionary <string, List <UTXO> > > GetUTXOByAddress(string address) { MyJson.JsonNode_Object response = (MyJson.JsonNode_Object)MyJson.Parse( await HttpHelper.HttpGet("https://api.nel.group/api/testnet?method=getutxo&id=1¶ms=['" + address + "']")); MyJson.JsonNode_Array resJA = (MyJson.JsonNode_Array)response["result"]; Dictionary <string, List <UTXO> > dic = new Dictionary <string, List <UTXO> >(); foreach (MyJson.JsonNode_Object j in resJA) { UTXO utxo = new UTXO(j["addr"].ToString(), new Hash256(j["txid"].ToString()), j["asset"].ToString(), decimal.Parse(j["value"].ToString()), int.Parse(j["n"].ToString())); if (dic.ContainsKey(j["asset"].ToString())) { dic[j["asset"].ToString()].Add(utxo); } else { List <UTXO> list = new List <UTXO>(); list.Add(utxo); dic[j["asset"].ToString()] = list; } } return(dic); }
MyJson.IJsonNode _rpc_ver_finish(string token, int ver) { string user; string game = CheckToken(token, out user); var vgroup = versions[game]; MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); if (commits.ContainsKey(user) == false) { obj.SetDictValue("status", -2004); obj.SetDictValue("msg", "not found commit."); return(obj); } var commit = commits[user]; if (commit.ver != ver) { obj.SetDictValue("status", -2005); obj.SetDictValue("msg", "not right commit ver."); return(obj); } MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); bool b = commit.Run(vgroup.path, array); obj.SetDictValue("info", array); if (!b) { obj.SetDictValue("status", -2006); obj.SetDictValue("msg", "commit fall."); } else { obj.SetDictValue("status", 0); } return(null); }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { UISlider t = com as UISlider; var json = new MyJson.JsonNode_Object(); json["value"] = new MyJson.JsonNode_ValueNumber(t.value); json["alpha"] = new MyJson.JsonNode_ValueNumber(t.alpha); json["numberOfSteps"] = new MyJson.JsonNode_ValueNumber(t.numberOfSteps); if (t.foregroundWidget != null) { json["foregroundWidget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.foregroundWidget.gameObject)); } if (t.backgroundWidget != null) { json["backgroundWidget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.backgroundWidget.gameObject)); } if (t.thumb != null) { json["thumb"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.thumb.gameObject)); } json["fillDirection"] = new MyJson.JsonNode_ValueString(t.fillDirection.ToString()); return(json); }
private static void SendTransWithoutUtxo(byte[] prikey, byte[] pubkey, string address, byte[] script) { ThinNeo.Transaction tran = new Transaction(); tran.inputs = new ThinNeo.TransactionInput[0]; tran.outputs = new TransactionOutput[0]; tran.attributes = new ThinNeo.Attribute[1]; tran.attributes[0] = new ThinNeo.Attribute(); tran.attributes[0].usage = TransactionAttributeUsage.Script; tran.attributes[0].data = ThinNeo.Helper.GetPublicKeyHashFromAddress(address); tran.version = 1; tran.type = ThinNeo.TransactionType.InvocationTransaction; var idata = new ThinNeo.InvokeTransData(); tran.extdata = idata; idata.script = script; idata.gas = 0; byte[] msg = tran.GetMessage(); string msgstr = ThinNeo.Helper.Bytes2HexString(msg); byte[] signdata = ThinNeo.Helper.Sign(msg, prikey); tran.AddWitness(signdata, pubkey, address); string txid = tran.GetHash().ToString(); byte[] data = tran.GetRawData(); string rawdata = ThinNeo.Helper.Bytes2HexString(data); byte[] postdata; var url = Helper.MakeRpcUrlPost(api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata)); var result = Helper.HttpPost(url, postdata); Console.WriteLine(txid); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result); Console.WriteLine(resJO.ToString()); }
public static async Task <Result> api_InvokeScript(Hash160 scripthash, string methodname, params string[] subparam) { byte[] data = null; using (ScriptBuilder sb = new ScriptBuilder()) { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); if (subparam != null && subparam.Length > 0) { for (var i = 0; i < subparam.Length; i++) { array.AddArrayValue(subparam[i]); } } sb.EmitParamJson(array); sb.EmitPushString(methodname); sb.EmitAppCall(scripthash); data = sb.ToArray(); } string script = ThinNeo.Helper.Bytes2HexString(data); byte[] postdata; var url = Helper.MakeRpcUrlPost(Config.api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(script)); var text = await Helper.HttpPost(url, postdata); MyJson.JsonNode_Object json = MyJson.Parse(text) as MyJson.JsonNode_Object; Result rest = new Result(); rest.textInfo = text; if (json.ContainsKey("result")) { var result = json["result"].AsList()[0].AsDict()["stack"].AsList(); rest.value = ResultItem.FromJson("Array", result); } return(rest);// subPrintLine("得到的结果是:" + result); }
public MyJson.JsonNode_Object ToJson() { MyJson.JsonNode_Object _op = new MyJson.JsonNode_Object(); _op.SetDictValue("addr", addr); _op.SetDictValue("op", op.ToString()); if (this.stack != null) { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); _op.SetDictValue("stack", array); foreach (var r in stack) { if (r.ind > 0) { array.AddArrayValue(r.type.ToString() + "|" + r.ind); } else { array.AddArrayValue(r.type.ToString()); } } } if (opresult != null) { _op.SetDictValue("result", StatkItemToJson(opresult)); } if (opparam != null) { _op.SetDictValue("param", opparam.ToHexString()); } if (subScript != null) { _op.SetDictValue("subscript", subScript.ToJson()); } return(_op); }
public static void handle(MyJson.JsonNode_Object blockData) { int blockindex = blockData["index"].AsInt(); var blockTx = blockData["tx"].AsList(); decimal totalSysFee = 0; foreach (MyJson.JsonNode_Object item in blockTx) { var fee = decimal.Parse(item["sys_fee"].AsString()); totalSysFee += fee; } //var blockSysfeeFindBson = BsonDocument.Parse("{index:" + (blockindex - 1) + "}"); //var blockSysfeeQuery = Collection.Find(blockSysfeeFindBson).ToList(); var blockSysfeeQuery = Mongo.Find(Collection, "index", (blockindex - 1).ToString()); if (blockSysfeeQuery.Count > 0) { totalSysFee += blockSysfeeQuery[0].totalSysfee; } BlockSysfee bsf = new BlockSysfee(blockindex, totalSysFee); Collection.InsertOne(bsf); }
public string SaveMat(Material mat) { int id = mat.GetInstanceID(); string name = null; if (savecache.TryGetValue(id, out name)) { return name; } MyJson.JsonNode_Object _json = new MyJson.JsonNode_Object(); //parser.matParser.WriteToJson(this, mat, _json); #if UNITY_EDITOR if (parser.GetMatParser(mat.shader.name) == null) { var json = nodeParser.GetMatConfig(mat); parser.InitMatParser(mat.shader.name, json); #region 自动保存shaderparser配置,这一段可以关闭 string path = Application.dataPath + "/resources/shaderparser"; if (System.IO.Directory.Exists(path) == false) System.IO.Directory.CreateDirectory(path); string shadername = mat.shader.name; shadername = shadername.Replace("/", "%2f"); string file = path + "/" + shadername + ".shaderparser.txt"; if (System.IO.File.Exists(file)) System.IO.File.Delete(file); System.IO.File.WriteAllText(file, json.ToString()); #endregion } #endif parser.GetMatParser(mat.shader.name).WriteToJson(this, mat, _json); System.Text.StringBuilder sb = new System.Text.StringBuilder(); _json.ConvertToStringWithFormat(sb, 4); byte[] bs = System.Text.Encoding.UTF8.GetBytes(sb.ToString()); string sha1 = ResLibTool.ComputeHashString(bs); name = sha1 + ".jsonmat.txt"; bufs[name] = bs; savecache[id] = name; return name; }
void Obj2Json(GameObject _obj, MyJson.JsonNode_Object _json) { _json["name"] = new MyJson.JsonNode_ValueString(_obj.name); _json["id"] = new MyJson.JsonNode_ValueNumber(_obj.GetInstanceID()); //遍历填充组件 MyJson.JsonNode_Array comps = new MyJson.JsonNode_Array(); _json["components"] = comps; foreach (var c in _obj.GetComponents<Component>()) { if (c == null) { Debug.LogWarning("got a commponet null."); continue; } string type = c.GetType().Name.ToLower(); var _cjson = new MyJson.JsonNode_Object(); _cjson["type"] = new MyJson.JsonNode_ValueString(type); if (componentParsers.ContainsKey(type) == false) { Debug.LogWarning("can't find comparser:" + type); continue; } componentParsers[type].WriteToJson(resmgr, _obj, c, _cjson); comps.Add(_cjson); } //遍历填充树 if (_obj.transform.childCount > 0) { MyJson.JsonNode_Array children = new MyJson.JsonNode_Array(); _json["children"] = children; for (int i = 0; i < _obj.transform.childCount; i++) { var subobj = _obj.transform.GetChild(i).gameObject; MyJson.JsonNode_Object _subjson = new MyJson.JsonNode_Object(); Obj2Json(subobj, _subjson); children.Add(_subjson); } } }
public void SaveNode(GameObject _object) { bufs = new Dictionary<string, byte[]>(); resmgr = new ResMgr(this); if (debug) Debug.Log("SaveNode:" + _object); MyJson.JsonNode_Object _json = new MyJson.JsonNode_Object(); Obj2Json(_object, _json);//扫描转换 //将树也加入bufs StringBuilder sb = new StringBuilder(); _json.ConvertToStringWithFormat(sb, 4); byte[] bs = System.Text.Encoding.UTF8.GetBytes(sb.ToString()); string sha1 = ResLibTool.ComputeHashString(bs); bufs[sha1 + ".jsontree.txt"] = bs; }
public static MyJson.JsonNode_Object Export(NeoModule module, byte[] script) { var sha256 = System.Security.Cryptography.SHA256.Create(); byte[] hash256 = sha256.ComputeHash(script); var ripemd160 = new Neo.Cryptography.RIPEMD160Managed(); var hash = ripemd160.ComputeHash(hash256); var outjson = new MyJson.JsonNode_Object(); //hash StringBuilder sb = new StringBuilder(); sb.Append("0x"); foreach (var b in hash.Reverse().ToArray()) { sb.Append(b.ToString("x02")); } outjson.SetDictValue("hash", sb.ToString()); //entrypoint outjson.SetDictValue("entrypoint", "Main"); var mainmethod = module.mapMethods[module.mainMethod]; if (mainmethod != null) { var name = mainmethod.displayName; outjson.SetDictValue("entrypoint", name); } //functions var funcsigns = new MyJson.JsonNode_Array(); outjson["functions"] = funcsigns; foreach (var function in module.mapMethods) { var mm = function.Value; if (mm.isPublic == false) { continue; } var ps = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries); var funcsign = new MyJson.JsonNode_Object(); funcsigns.Add(funcsign); var funcname = ps[1]; if (funcname.IndexOf("::") > 0) { var sps = funcname.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries); funcname = sps.Last(); } funcsign.SetDictValue("name", function.Value.displayName); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); funcsign["parameters"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { var ptype = ConvType(v.type); var item = new MyJson.JsonNode_Object(); funcparams.Add(item); item.SetDictValue("name", v.name); item.SetDictValue("type", ptype); } } var rtype = ConvType(mm.returntype); funcsign.SetDictValue("returntype", rtype); } //events var eventsigns = new MyJson.JsonNode_Array(); outjson["events"] = eventsigns; foreach (var events in module.mapEvents) { var mm = events.Value; var ps = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries); var funcsign = new MyJson.JsonNode_Object(); eventsigns.Add(funcsign); funcsign.SetDictValue("name", events.Value.displayName); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); funcsign["parameters"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { var ptype = ConvType(v.type); var item = new MyJson.JsonNode_Object(); funcparams.Add(item); item.SetDictValue("name", v.name); item.SetDictValue("type", ptype); } } var rtype = ConvType(mm.returntype); funcsign.SetDictValue("returntype", rtype); } return(outjson); }
public async Task Start() { /**私钥*/ string privateKey = "7c5a23ddb24c5eacb200874a32a64585bea7f1dd8efa23745e2b2a7753004c81"; /**gas资产编号*/ string gasAsset = "0xc56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b"; /**合约脚本散列*/ string scriptHash = "0x98f56b5dc40650da5c1ead5894979e0c2fe4bcd6"; /**合约代码*/ string scriptCode = "00c56b616168164e656f2e53746f726167652e476574436f6e746578740548656c6c6f05576f726c64615272680f4e656f2e53746f726167652e50757461616c7566"; /**名称*/ string name = "helloworld"; /**版本*/ string version = "1.0"; /**作者*/ string author = "zhan.li"; /**邮箱*/ string email = "*****@*****.**"; /**说明*/ string description = "test Create Contract"; /**参数列表*/ string paramList = "hello"; /**返回值*/ string returnValue = "world"; byte[] priKey = Encoding.Default.GetBytes(privateKey); byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(priKey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey); byte[] script = null; using (ScriptBuilder sb = new ScriptBuilder()) { sb.EmitSysCall(HexToBytes(scriptCode), HexToBytes(paramList), returnValue, "0", name, version, author, email, description); sb.EmitSysCall("Neo.Contract.Create"); script = sb.ToArray(); } Dictionary <string, List <UTXO> > dic_UTXO = await GetUTXOByAddress("http://localhost:20332/", address); Transaction tran = makeTran(dic_UTXO, address, targetAddress, new Hash256("0xc56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b"), new decimal(90)); tran.type = ThinNeo.TransactionType.InvocationTransaction; tran.version = 0; tran.attributes = new ThinNeo.Attribute[0]; var idata = new ThinNeo.InvokeTransData(); tran.extdata = idata; idata.script = script; idata.gas = 0; byte[] msg = tran.GetMessage(); string msgstr = ThinNeo.Helper.Bytes2HexString(msg); byte[] signdata = ThinNeo.Helper.Sign(msg, priKey); tran.AddWitness(signdata, pubkey, address); string txid = tran.GetHash().ToString(); byte[] data = tran.GetRawData(); string rawdata = ThinNeo.Helper.Bytes2HexString(data); byte[] postdata; var url = HttpHelper.MakeRpcUrlPost("https://api.nel.group/api/testnet", "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata)); var result = await HttpHelper.HttpPost(url, postdata); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result); }
public override string ToString() { MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); foreach(var list in needList) { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); obj[list.Key] = array; foreach(var item in list.Value) { array.Add(new MyJson.JsonNode_ValueString(item)); } } return obj.ToString(); }
private static async Task parseJAVA(IOwinContext context, FormData formdata) { try { string dictname = null; string classname = null; var file = formdata.mapFiles["file"]; var code = System.Text.Encoding.UTF8.GetString(file); //准备临时目录 { Random i = new Random(); var num = i.Next(); while (System.IO.Directory.Exists("tmp\\tmp_" + num.ToString("X08"))) { num++; } dictname = "tmp\\tmp_" + num.ToString("X08"); var fc = code.IndexOf("class"); int ibegin = -1; for (int ib = fc + 6; ib < fc + 100; ib++) { if (ibegin < 0) { if (code[ib] == ' ') { continue; } else { ibegin = ib; } } else { if (code[ib] == ' ' || code[ib] == '}') { classname = code.Substring(ibegin, ib - ibegin); break; } } } } System.IO.Directory.CreateDirectory(dictname); string filename = System.IO.Path.Combine(dictname, classname + ".java"); System.IO.File.WriteAllText(filename, code); string jarfile = "AntShares.SmartContract.Framework.jar"; System.IO.File.Copy(jarfile, System.IO.Path.Combine(dictname, jarfile)); //编译 try { System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(); info.FileName = "cmd.exe"; info.UseShellExecute = false; info.RedirectStandardOutput = true; info.RedirectStandardInput = true; info.RedirectStandardError = true; info.WorkingDirectory = dictname; var proc = System.Diagnostics.Process.Start(info); proc.StandardInput.WriteLine("javac -cp " + jarfile + " " + classname + ".java"); proc.StandardInput.WriteLine("exit"); string back = proc.StandardError.ReadToEnd(); string inerror = ""; int line = -1; string tag = ""; List <string> outline = new List <string>(); List <int> errorline = new List <int>(); List <string> errorTag = new List <string>(); string[] lines = back.Split(new string[] { "\r\n" }, StringSplitOptions.None); for (var i = 0; i < lines.Length; i++) { if (inerror == "") { var mm = lines[i].Split(':'); if (mm.Length > 3) { line = int.Parse(mm[1]); inerror += mm[3]; tag = mm[2]; } } else { if (lines[i].IndexOf("^") >= 0) { outline.Add(inerror); errorline.Add(line); errorTag.Add(tag); inerror = ""; } else { inerror += "\n" + lines[i]; } } } if (outline.Count == 0) { //succ } else { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-3); json["msg"] = new MyJson.JsonNode_ValueString("compile fail."); MyJson.JsonNode_Array errs = new MyJson.JsonNode_Array(); json["errors"] = errs; for (var i = 0; i < outline.Count; i++) { MyJson.JsonNode_Object errtag = new MyJson.JsonNode_Object(); errs.Add(errtag); errtag.SetDictValue("msg", outline[i]); errtag.SetDictValue("line", errorline[i]); errtag.SetDictValue("tag", errorTag[i]); //errtag.SetDictValue("col", r.Errors[i].Column); } await context.Response.WriteAsync(json.ToString()); return; } } catch (Exception err) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on comp."); json["err"] = new MyJson.JsonNode_ValueString(err.ToString()); await context.Response.WriteAsync(json.ToString()); return; } //conv try { JavaModule module = new JavaModule(); module.LoadJar(jarfile); module.LoadClass(System.IO.Path.Combine(dictname, classname + ".class")); var logjson = new Log2Json(); var conv = new Neo.Compiler.JVM.ModuleConverter(logjson); var neomd = conv.Convert(module); var mm = neomd.mapMethods[neomd.mainMethod]; var bs = neomd.Build(); if (bs != null) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(0); StringBuilder sb = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); var hash = System.Security.Cryptography.SHA256.Create(); var hashbs = hash.ComputeHash(bs); foreach (var b in bs) { sb.Append(b.ToString("X02")); } foreach (var b in hashbs) { sb2.Append(b.ToString("X02")); } json["hex"] = new MyJson.JsonNode_ValueString(sb.ToString()); json["hash"] = new MyJson.JsonNode_ValueString(sb2.ToString()); json["returntype"] = new MyJson.JsonNode_ValueString(mm.returntype); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); json["params"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { funcparams.Add(new MyJson.JsonNode_ValueString(v.type)); } } await context.Response.WriteAsync(json.ToString()); return; } else { { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-4); json["msg"] = new MyJson.JsonNode_ValueString("compile fail."); json["info"] = logjson.array; await context.Response.WriteAsync(json.ToString()); return; } } } catch (Exception err) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on conv."); json["err"] = new MyJson.JsonNode_ValueString(err.ToString()); await context.Response.WriteAsync(json.ToString()); return; } } catch { { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("parse fail."); await context.Response.WriteAsync(json.ToString()); return; } } }
private static async Task parseCSharp(IOwinContext context, FormData formdata) { try { var file = formdata.mapFiles["file"]; var code = System.Text.Encoding.UTF8.GetString(file); //编译 List <string> codes = new List <string>(); codes.Add(code); CompilerResults r = null; try { r = gencode.GenCode(codes, true); if (r.Errors.Count > 0) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-3); json["msg"] = new MyJson.JsonNode_ValueString("compile fail."); MyJson.JsonNode_Array errs = new MyJson.JsonNode_Array(); json["errors"] = errs; for (var i = 0; i < r.Errors.Count; i++) { MyJson.JsonNode_Object errtag = new MyJson.JsonNode_Object(); errs.Add(errtag); errtag.SetDictValue("msg", r.Errors[i].ErrorText); errtag.SetDictValue("line", r.Errors[i].Line); errtag.SetDictValue("col", r.Errors[i].Column); errtag.SetDictValue("tag", r.Errors[i].IsWarning ? "警告" : "错误"); } await context.Response.WriteAsync(json.ToString()); return; } } catch (Exception err) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on comp."); json["err"] = new MyJson.JsonNode_ValueString(err.ToString()); await context.Response.WriteAsync(json.ToString()); return; } //conv try { var st = System.IO.File.OpenRead(r.PathToAssembly); using (st) { var logjson = new Log2Json(); var module = new ILModule(); module.LoadModule(st, null); var conv = new Neo.Compiler.MSIL.ModuleConverter(logjson); var neomd = conv.Convert(module); //var mm = neomd.mapMethods[neomd.mainMethod]; var bs = neomd.Build(); if (bs != null) { { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(0); StringBuilder sb = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); var hash = System.Security.Cryptography.SHA256.Create(); var hashbs = hash.ComputeHash(bs); foreach (var b in bs) { sb.Append(b.ToString("X02")); } foreach (var b in hashbs) { sb2.Append(b.ToString("X02")); } json["hex"] = new MyJson.JsonNode_ValueString(sb.ToString()); json["hash"] = new MyJson.JsonNode_ValueString(sb2.ToString()); var funcsigns = new MyJson.JsonNode_Object(); json["funcsigns"] = funcsigns; foreach (var function in neomd.mapMethods) { var mm = function.Value; var ps = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries); var funcsign = new MyJson.JsonNode_Object(); funcsigns[ps[1]] = funcsign; funcsign.SetDictValue("name", ps[1]); var rtype = ConvCSharpType(mm.returntype); funcsign.SetDictValue("returntype", rtype); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); funcsign["params"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { var ptype = ConvCSharpType(v.type); var item = new MyJson.JsonNode_Object(); funcparams.Add(item); item.SetDictValue("name", v.name); item.SetDictValue("type", ptype); } } } await context.Response.WriteAsync(json.ToString()); return; } } else { { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-4); json["msg"] = new MyJson.JsonNode_ValueString("compile fail."); json["info"] = logjson.array; await context.Response.WriteAsync(json.ToString()); return; } } } } catch (Exception err) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on conv."); json["err"] = new MyJson.JsonNode_ValueString(err.ToString()); await context.Response.WriteAsync(json.ToString()); return; } } catch { { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("parse fail."); await context.Response.WriteAsync(json.ToString()); return; } } }
public static MyJson.JsonNode_Object Export(NeoModule module, byte[] script, Dictionary <int, int> addrConvTable) { var sha256 = System.Security.Cryptography.SHA256.Create(); byte[] hash256 = sha256.ComputeHash(script); var ripemd160 = new Neo.Cryptography.RIPEMD160Managed(); var hash = ripemd160.ComputeHash(hash256); var outjson = new MyJson.JsonNode_Object(); //hash StringBuilder sb = new StringBuilder(); sb.Append("0x"); foreach (var b in hash.Reverse().ToArray()) { sb.Append(b.ToString("x02")); } outjson.SetDictValue("hash", sb.ToString()); //functions var methods = new MyJson.JsonNode_Array(); outjson["methods"] = methods; List <string> names = new List <string>(); foreach (var function in module.mapMethods) { var mm = function.Value; if (mm.inSmartContract == false) { continue; } if (mm.isPublic == false) { continue; } var funcsign = new MyJson.JsonNode_Object(); methods.Add(funcsign); funcsign.SetDictValue("name", function.Value.displayName); if (names.Contains(function.Value.displayName)) { throw new Exception("abi not allow same name functions"); } names.Add(function.Value.displayName); var offset = addrConvTable?[function.Value.funcaddr] ?? function.Value.funcaddr; funcsign.SetDictValue("offset", offset.ToString()); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); funcsign["parameters"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { var ptype = ConvType(v.type); var item = new MyJson.JsonNode_Object(); funcparams.Add(item); item.SetDictValue("name", v.name); item.SetDictValue("type", ptype); } } var rtype = ConvType(mm.returntype); funcsign.SetDictValue("returnType", rtype); } //events var eventsigns = new MyJson.JsonNode_Array(); outjson["events"] = eventsigns; foreach (var events in module.mapEvents) { var mm = events.Value; var funcsign = new MyJson.JsonNode_Object(); eventsigns.Add(funcsign); funcsign.SetDictValue("name", events.Value.displayName); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); funcsign["parameters"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { var ptype = ConvType(v.type); var item = new MyJson.JsonNode_Object(); funcparams.Add(item); item.SetDictValue("name", v.name); item.SetDictValue("type", ptype); } } //event do not have returntype in nep3 //var rtype = ConvType(mm.returntype); //funcsign.SetDictValue("returntype", rtype); } return(outjson); }
void OnGUI() { bool bbox = GUI.Toggle(new Rect(-100 + Screen.width / 2, 0, 200, 30), bShowBox, "显示碰撞盒子"); if (bbox != bShowBox) { bShowBox = bbox; foreach (var c in battleField.createChars) { c.Value.aniplayer.IsShowBoxLine = bbox; } } var oc = GUI.color; int y = 0; foreach (var p in battleField.portals) { if (p.Key == activePortal) { GUI.color = new Color(0.6f, 0.6f, 1.0f); } else { GUI.color = Color.white; } if (GUI.Button(new Rect(0, y * 30, 100, 30), "入口:" + p.Key)) { activePortal = p.Key; } y++; } GUI.color = oc; if (string.IsNullOrEmpty(activePortal) == false) { y = 0; foreach (var c in battleField.canUsedCharactors) { if (GUI.Button(new Rect(Screen.width - 200, y * 30, 200, 30), "创建角色:" + c)) { if (activePortal == "playerin") {//替换玩家控制角色 //杀死之前的 var list = battleField.GetCCNotDeathBySide(1); if (list.Count > 0) { battleField.Cmd_Char_Death(list[0].idCare); } //创建与定位 var p = new MyJson.JsonNode_Object(); p["pushbox"] = new MyJson.JsonNode_ValueNumber(true); int cc = battleField.Cmd_CreateChar("char/" + c.Key, 1, p); battleField.Cmd_Char_Pos(cc, battleField.portals[activePortal]); //注册控制器 battleField.RegCharactorController(new CharController_Direct(cc, 1, FBJoy2.g_joy)); //摄像机跟随 cameraFollow.FollowObj = battleField.GetRealChar(cc).transform; //其他 battleField.GetRealChar(cc).transform.GetComponent <FB.FFSM.com_FightFSM>().debugMode = false; battleField.GetRealChar(cc).aniplayer.IsShowBoxLine = bShowBox; } else {//创建一个渣 //创建与定位 var p = new MyJson.JsonNode_Object(); p["pushbox"] = new MyJson.JsonNode_ValueNumber(false); int cc = battleField.Cmd_CreateChar("char/" + c.Key, 2, p); battleField.Cmd_Char_Pos(cc, battleField.portals[activePortal]); //注册控制器 var ai = new Input_AI(); battleField.RegCharactorController(new CharController_Direct(cc, 2, null)); //其他 battleField.GetRealChar(cc).transform.GetComponent <FB.FFSM.com_FightFSM>().debugMode = false; battleField.GetRealChar(cc).aniplayer.IsShowBoxLine = bShowBox; } } y++; } } }
public static MyJson.JsonNode_Object ExportDebugInfo(string avmName, NeoModule module) { var outjson = new MyJson.JsonNode_Object(); var debugMap = new List <DebugMapEntry>(); DebugMapEntry currentDebugEntry = null; var fileMap = new Dictionary <string, int>(); List <byte> bytes = new List <byte>(); foreach (var c in module.total_Codes.Values) { if (c.debugcode != null && c.debugline > 0 && c.debugline < 2000) { currentDebugEntry = new DebugMapEntry(); currentDebugEntry.startOfs = debugMap.Count > 0 ? bytes.Count : 0; currentDebugEntry.endOfs = currentDebugEntry.startOfs; currentDebugEntry.url = c.debugcode; currentDebugEntry.line = c.debugline; if (!fileMap.ContainsKey(c.debugcode)) { fileMap[c.debugcode] = fileMap.Count + 1; } debugMap.Add(currentDebugEntry); } else if (currentDebugEntry != null) { currentDebugEntry.endOfs = bytes.Count; } bytes.Add((byte)c.code); if (c.bytes != null) { for (var i = 0; i < c.bytes.Length; i++) { bytes.Add(c.bytes[i]); } } } var hash = CalculateMD5(bytes.ToArray()); string compilerName = System.AppDomain.CurrentDomain.FriendlyName.ToLowerInvariant(); var version = Assembly.GetEntryAssembly().GetName().Version.ToString(); var avmInfo = new MyJson.JsonNode_Object(); avmInfo.Add("name", new MyJson.JsonNode_ValueString(avmName)); avmInfo.Add("hash", new MyJson.JsonNode_ValueString(hash)); var compilerInfo = new MyJson.JsonNode_Object(); compilerInfo.Add("name", new MyJson.JsonNode_ValueString(compilerName)); compilerInfo.Add("version", new MyJson.JsonNode_ValueString(version)); var fileInfo = new MyJson.JsonNode_Array(); foreach (var entry in fileMap) { var fileEntry = new MyJson.JsonNode_Object(); fileEntry.Add("id", new MyJson.JsonNode_ValueNumber(entry.Value)); fileEntry.Add("url", new MyJson.JsonNode_ValueString(entry.Key)); fileInfo.AddArrayValue(fileEntry); } var mapInfo = new MyJson.JsonNode_Array(); foreach (var entry in debugMap) { if (!fileMap.ContainsKey(entry.url)) { continue; } var fileID = fileMap[entry.url]; var mapEntry = new MyJson.JsonNode_Object(); mapEntry.Add("start", new MyJson.JsonNode_ValueNumber(entry.startOfs)); mapEntry.Add("end", new MyJson.JsonNode_ValueNumber(entry.endOfs)); mapEntry.Add("file", new MyJson.JsonNode_ValueNumber(fileID)); mapEntry.Add("line", new MyJson.JsonNode_ValueNumber(entry.line)); mapInfo.AddArrayValue(mapEntry); } outjson["avm"] = avmInfo; outjson["compiler"] = compilerInfo; outjson["files"] = fileInfo; outjson["map"] = mapInfo; return(outjson); }
void SaveItem() { //GameObject setobj = null;//选中的对象 //bool bUseHashName = true;//是否使用hash作为资源文件名 //string exportResult = null;//导出结果 //string exportPath = null;//导出路径 //bool bUseHashTreeName = false;//是否使用hash作为导出节点名 //string exportNodeName = "";//导出节点名称 nodeParser.nodeParser np = new nodeParser.nodeParser(); np.SaveNode(this.setobj);//先强制使用HashName if (System.IO.Directory.Exists(exportPath) == false) System.IO.Directory.CreateDirectory(exportPath); string respath = System.IO.Path.Combine(exportPath, "resources"); if (System.IO.Directory.Exists(respath) == false) System.IO.Directory.CreateDirectory(respath); MyJson.JsonNode_Array indexfile = new MyJson.JsonNode_Array(); foreach (var f in np.bufs) { //写入文件 { var file = System.IO.Path.Combine(respath, f.Key); System.IO.File.WriteAllBytes(file, f.Value); } //记录索引 MyJson.JsonNode_Object indexitem = new MyJson.JsonNode_Object(); indexitem["Name"] = new MyJson.JsonNode_ValueString("resources/" + f.Key); indexitem["Length"] = new MyJson.JsonNode_ValueNumber(f.Value.Length); indexfile.Add(indexitem); } indexfile.Sort((a, b) => { return string.Compare(a.asDict()["Name"].AsString(), b.asDict()["Name"].AsString()); }); {//保存索引文件 byte[] indexcode = System.Text.Encoding.UTF8.GetBytes(indexfile.ToString()); exportResult = exportNodeName; if (bUseHashTreeName) { exportResult = ResLibTool.ComputeHashString(indexcode); } string outfile = System.IO.Path.Combine(exportPath, exportResult + ".indexlist.txt"); System.IO.File.WriteAllBytes(outfile, indexcode); } }
public static MyJson.JsonNode_Object ToJson(object ScriptObject) { CSLE.SInstance sobj = ScriptObject as CSLE.SInstance; if (sobj == null) return null; MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); CSLE.SType stype=sobj.type; foreach (var m in stype.members) { if ((Type)m.Value.type.type == typeof(int)) { obj[m.Key] = new MyJson.JsonNode_ValueNumber((int)sobj.member[m.Key].value); } else if ((Type)m.Value.type.type == typeof(float)) { obj[m.Key] = new MyJson.JsonNode_ValueNumber((float)sobj.member[m.Key].value); } else if ((Type)m.Value.type.type == typeof(double)) { obj[m.Key] = new MyJson.JsonNode_ValueNumber((double)sobj.member[m.Key].value); } else if ((Type)m.Value.type.type == typeof(string)) { obj[m.Key] = new MyJson.JsonNode_ValueString((string)sobj.member[m.Key].value); } else if ((Type)m.Value.type.type == typeof(List<object>)) { //处理List List<object> slist = sobj.member[m.Key].value as List<object>; var list = new MyJson.JsonNode_Array(); obj[m.Key] = list; foreach(var item in slist) { list.Add(ToJson(item)); } } else if ((Type)m.Value.type.type == typeof(List<string>)) { var list =new MyJson.JsonNode_Array(); obj[m.Key] = list; List<string> slist = sobj.member[m.Key].value as List<string>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueString(item)); } } else if ((Type)m.Value.type.type == typeof(List<int>)) { var list = new MyJson.JsonNode_Array(); obj[m.Key] = list; List<int> slist = sobj.member[m.Key].value as List<int>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)m.Value.type.type == typeof(List<float>)) { var list = new MyJson.JsonNode_Array(); obj[m.Key] = list; List<float> slist = sobj.member[m.Key].value as List<float>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)m.Value.type.type == typeof(List<double>)) { var list = new MyJson.JsonNode_Array(); obj[m.Key] = list; List<double> slist = sobj.member[m.Key].value as List<double>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型 { obj[m.Key] = ToJson(sobj.member[m.Key].value); } else { Debug.Log("发现不能处理的类型:" + stype.Name + ":" + m.Key + ":" + m.Value.type.ToString()); } } return obj; }
async Task test_setUpgrade() { byte[] pubkey_admin = ThinNeo.Helper.GetPublicKeyFromPrivateKey(adminPrikey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey_admin); Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Config.api, address); //从文件中读取合约脚本 //byte[] script = System.IO.File.ReadAllBytes("C:\\Neo\\SmartContracts\\0x89151760dba47464bbed6600b651e210996a318b.avm"); //这里填你的合约所在地址 byte[] script = System.IO.File.ReadAllBytes("C:\\Users\\wqq19\\Documents\\workspace\\solution\\OracleContract\\bin\\Debug\\0x2eaef11fa90014ccf4ae8bfabc0f58e7fc8bd591.avm"); string str_script = ThinNeo.Helper.Bytes2HexString(script); byte[] aa = ThinNeo.Helper.HexString2Bytes(str_script); var ss = 1 | 2 | 4; using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder()) { //倒叙插入数据 var array = new MyJson.JsonNode_Array(); array.AddArrayValue("(bytes)" + str_script); array.AddArrayValue("(bytes)0710"); array.AddArrayValue("(bytes)05"); array.AddArrayValue("(int)" + 5); array.AddArrayValue("(str)合约升级测试"); //name array.AddArrayValue("(str)1"); //version array.AddArrayValue("(str)ss"); //author array.AddArrayValue("(str)1"); //email array.AddArrayValue("(str)sssss"); //desc sb.EmitParamJson(array); //参数倒序入 sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)upgrade")); //参数倒序入 //var shash = Config.oracleAssetID; sb.EmitAppCall(shash); string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray()); byte[] postdata; var url = Helper.MakeRpcUrlPost(Config.api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish)); var result = await Helper.HttpPost(url, postdata); //string result = http.Post(api, "invokescript", new MyJson.JsonNode_Array() { new MyJson.JsonNode_ValueString(scriptPublish) },Encoding.UTF8); //var consume = (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as MyJson.JsonNode_Object)["gas_consumed"].ToString(); //decimal gas_consumed = decimal.Parse(consume); ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData(); extdata.gas = 1010;// Math.Ceiling(gas_consumed - 10); extdata.script = sb.ToArray(); //拼装交易体 ThinNeo.Transaction tran = Helper.makeTran(dir[Config.id_GAS], null, new ThinNeo.Hash256(Config.id_GAS), extdata.gas); tran.version = 1; tran.extdata = extdata; tran.type = ThinNeo.TransactionType.InvocationTransaction; byte[] msg = tran.GetMessage(); byte[] signdata = ThinNeo.Helper.Sign(msg, adminPrikey); tran.AddWitness(signdata, pubkey_admin, address); string txid = tran.GetHash().ToString(); byte[] data = tran.GetRawData(); string rawdata = ThinNeo.Helper.Bytes2HexString(data); url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata)); result = await Helper.HttpPost(url, postdata); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result); Console.WriteLine(resJO.ToString()); } }
public static MyJson.JsonNode_Object ToJson(object ScriptObject) { CLRSharp.CLRSharp_Instance sobj = ScriptObject as CLRSharp.CLRSharp_Instance; if (sobj == null) return null; MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); var stype = sobj.type; // CSLE.SType stype=sobj.type; var ms = stype.GetFieldNames(); foreach (var m in ms) { var field = stype.GetField(m); if (field.isStatic) continue; if ((Type)field.FieldType.TypeForSystem == typeof(int)) { obj[m] = new MyJson.JsonNode_ValueNumber((int)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(float)) { obj[m] = new MyJson.JsonNode_ValueNumber((float)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(double)) { obj[m] = new MyJson.JsonNode_ValueNumber((double)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(string)) { obj[m] = new MyJson.JsonNode_ValueString((string)sobj.Fields[m]); } // else if ((Type)m.Value.type.type == typeof(List<object>)) else if ((Type)field.FieldType.TypeForSystem == typeof(List<CLRSharp.CLRSharp_Instance>)) { //处理List List<CLRSharp.CLRSharp_Instance> slist = sobj.Fields[m] as List<CLRSharp.CLRSharp_Instance>; var list = new MyJson.JsonNode_Array(); obj[m] = list; foreach (var item in slist) { list.Add(ToJson(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List<string>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List<string> slist = sobj.Fields[m] as List<string>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueString(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List<int>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List<int> slist = sobj.Fields[m] as List<int>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List<float>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List<float> slist = sobj.Fields[m] as List<float>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List<double>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List<double> slist = sobj.Fields[m] as List<double>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if (field.FieldType is CLRSharp.ICLRType_Sharp) // else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型 { obj[m] = ToJson(sobj.Fields[m]); } else { Logger.Log("发现不能处理的类型:" + stype.Name + ":" + m + ":" + field.FieldType.ToString()); } } return obj; }
public static object FromJson(object ScriptType, MyJson.JsonNode_Object data) { CLRSharp.ICLRType_Sharp type = ScriptType as CLRSharp.ICLRType_Sharp; CLRSharp.CLRSharp_Instance s = new CLRSharp.CLRSharp_Instance(type); type.GetMethod(".ctor", CLRSharp.MethodParamList.constEmpty()).Invoke(null, s, new object[] { }); foreach (var m in type.GetFieldNames()) { var field = type.GetField(m); if (field.isStatic) { continue; } //s.Fields[m] = field.DefValue; // s.member[m.Key] = new CSLE.CLS_Content.Value(); // s.member[m.Key].type = m.Value.type.type; // s.member[m.Key].value = m.Value.type.DefValue;//先填默认值 if (data.ContainsKey(m) == false)//json中没有的部分填默认值 { continue; } if (data[m].IsNull())//json中没有的部分填默认值 { continue; } { if ((Type)field.FieldType.TypeForSystem == typeof(int)) { s.Fields[m] = data[m].AsInt(); } else if ((Type)field.FieldType.TypeForSystem == typeof(float)) { s.Fields[m] = (float)data[m].AsDouble(); } else if ((Type)field.FieldType.TypeForSystem == typeof(double)) { s.Fields[m] = data[m].AsDouble(); } else if ((Type)field.FieldType.TypeForSystem == typeof(string)) { s.Fields[m] = data[m].AsString(); } else if ((Type)field.FieldType.TypeForSystem == typeof(List <CLRSharp.CLRSharp_Instance>)) { //处理List List <CLRSharp.CLRSharp_Instance> list = new List <CLRSharp.CLRSharp_Instance>(); s.Fields[m] = list; var subtype = field.FieldType.SubTypes[0]; foreach (MyJson.JsonNode_Object item in data[m].AsList()) { list.Add(FromJson(subtype, item) as CLRSharp.CLRSharp_Instance); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <string>)) { List <string> list = new List <string>(); s.Fields[m] = list; foreach (MyJson.JsonNode_ValueString item in data[m].AsList()) { list.Add(item); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <int>)) { List <int> list = new List <int>(); s.Fields[m] = list; foreach (MyJson.JsonNode_ValueNumber item in data[m].AsList()) { list.Add(item); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <float>)) { List <float> list = new List <float>(); s.Fields[m] = list; foreach (MyJson.JsonNode_ValueNumber item in data[m].AsList()) { list.Add(item); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <double>)) { List <double> list = new List <double>(); s.Fields[m] = list; foreach (MyJson.JsonNode_ValueNumber item in data[m].AsList()) { list.Add(item); } } else if (field.FieldType.TypeForSystem == typeof(CLRSharp.CLRSharp_Instance))//其他嵌套脚本类型 { s.Fields[m] = FromJson(field.FieldType, data[m] as MyJson.JsonNode_Object); } else { Logger.Log("发现不能处理的类型:" + type + ":" + m + ":" + type.GetField(m).FieldType); } } } return(s); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); string resultStr = string.Empty; string findFliter = string.Empty; string sortStr = string.Empty; try { switch (req.method) { case "signup": { string password = (string)req.@params[0]; ThinNeo.NEP6.NEP6Wallet nep6wallet = new ThinNeo.NEP6.NEP6Wallet(); nep6wallet.CreateAccount(password); result = new JArray() { JObject.Parse(nep6wallet.GetWallet().ToString()) }; } break; case "signin": { string wif = (string)req.@params[0]; string str_wallet = (string)req.@params[1]; if (!string.IsNullOrEmpty(wif)) { byte[] bytes_prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif); string prikey = ThinNeo.Helper.Bytes2HexString(bytes_prikey); byte[] bytes_pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(bytes_prikey); string pubkey = ThinNeo.Helper.Bytes2HexString(bytes_pubkey); string address = ThinNeo.Helper.GetAddressFromPublicKey(bytes_pubkey); JObject Jo = new JObject(); Jo[address] = prikey; result = new JArray() { Jo }; } else if (!string.IsNullOrEmpty(str_wallet)) { MyJson.JsonNode_Object wallet = MyJson.Parse(str_wallet.Replace("\r\n", "")).AsDict(); ThinNeo.NEP6.NEP6Wallet nep6wallet = new ThinNeo.NEP6.NEP6Wallet(wallet); JArray Ja = new JArray(); foreach (var account in nep6wallet.accounts) { JObject jObject = new JObject(); jObject[ThinNeo.Helper.GetAddressFromPublicKey(account.Value.ScriptHash)] = account.Value.nep2key; Ja.Add(jObject); } result = Ja; } } break; case "getassets": //获取资产余额 { string prikey = (string)req.@params[0]; JArray jArray = new JArray(); JObject jObject = new JObject(); jObject["id"] = "neo"; jObject["name"] = "小蚁股"; jObject["value"] = 123; jArray.Add(jObject); jObject = new JObject(); jObject["id"] = "gas"; jObject["name"] = "小蚁币"; jObject["value"] = 321; jArray.Add(jObject); result = jArray; } break; case "chargemoney": //充钱 { string prikey = (string)req.@params[0]; Int64 value = (Int64)req.@params[1]; result = getJAbyKV("result", "success"); } break; case "getbackmoney": //退钱 { string prikey = (string)req.@params[0]; Int64 value = (Int64)req.@params[1]; result = getJAbyKV("result", "success"); } break; case "bet": //下注 { string prikey = (string)req.@params[0]; string seasonid = (string)req.@params[1]; string gameid = (string)req.@params[2]; Int64 value = (Int64)req.@params[3]; result = getJAbyKV("result", "success"); } break; case "take": //领奖 { string prikey = (string)req.@params[0]; string seasonid = (string)req.@params[1]; string gameid = (string)req.@params[2]; result = getJAbyKV("result", "success"); } break; case "getseasoninfo": //获得赛季信息 { string seasonid = (string)req.@params[0]; if (string.IsNullOrEmpty(seasonid)) { } else { } JObject jObject = new JObject(); jObject["seasonid"] = "1"; JArray jArray = new JArray(); for (var i = 1; i < 16; i++) { JObject jObject2 = new JObject(); jObject2["gameid"] = i.ToString(); jObject2["team1"] = i; jObject2["team2"] = i + 1; jObject2["winner"] = i; jArray.Add(jObject2); } jObject["info"] = jArray; result = new JArray() { jObject }; } break; case "getgamestate": //获取比赛状态 { Random rd = new Random(); var i = rd.Next(0, 17); result = getJAbyKV("result", i); } break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
async public Task Demo() { Console.WriteLine("请输入你的wif"); string wif = Console.ReadLine(); if (string.IsNullOrEmpty(wif)) { wif = ""; //这里填你用于支付发布合约消耗的私钥 } byte[] prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif); byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey); Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(api, address); //从文件中读取合约脚本 byte[] script = System.IO.File.ReadAllBytes("Nep5.5gas_Contract.avm"); //这里填你的合约所在地址 Console.WriteLine("合约脚本:" + ThinNeo.Helper.Bytes2HexString(script)); Console.WriteLine("合约脚本hash:" + ThinNeo.Helper.Bytes2HexString(ThinNeo.Helper.GetScriptHashFromScript(script).data.ToArray().Reverse().ToArray())); byte[] parameter__list = ThinNeo.Helper.HexString2Bytes("0710"); //这里填合约入参 例:0610代表(string,[]) byte[] return_type = ThinNeo.Helper.HexString2Bytes("05"); //这里填合约的出参 int need_storage = 1; int need_nep4 = 0; int need_canCharge = 4; string name = "sgas"; string version = "1.0"; string auther = "NEL"; string email = "0"; string description = "0"; using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder()) { var ss = need_storage | need_nep4 | need_canCharge; //倒叙插入数据 sb.EmitPushString(description); sb.EmitPushString(email); sb.EmitPushString(auther); sb.EmitPushString(version); sb.EmitPushString(name); sb.EmitPushNumber(need_storage | need_nep4 | need_canCharge); sb.EmitPushBytes(return_type); sb.EmitPushBytes(parameter__list); sb.EmitPushBytes(script); sb.EmitSysCall("Neo.Contract.Create"); string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray()); //用ivokescript试运行并得到消耗 byte[] postdata; var url = Helper.MakeRpcUrlPost(api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish)); var result = await Helper.HttpPost(url, postdata); //string result = http.Post(api, "invokescript", new MyJson.JsonNode_Array() { new MyJson.JsonNode_ValueString(scriptPublish) },Encoding.UTF8); var consume = (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as MyJson.JsonNode_Object)["gas_consumed"].ToString(); decimal gas_consumed = decimal.Parse(consume); ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData(); extdata.script = sb.ToArray(); //Console.WriteLine(ThinNeo.Helper.Bytes2HexString(extdata.script)); extdata.gas = Math.Ceiling(gas_consumed - 10); //拼装交易体 ThinNeo.Transaction tran = makeTran(dir, null, new ThinNeo.Hash256(id_GAS), extdata.gas); tran.version = 1; tran.extdata = extdata; tran.type = ThinNeo.TransactionType.InvocationTransaction; byte[] msg = tran.GetMessage(); byte[] signdata = ThinNeo.Helper.Sign(msg, prikey); tran.AddWitness(signdata, pubkey, address); string txid = tran.GetHash().ToString(); byte[] data = tran.GetRawData(); string rawdata = ThinNeo.Helper.Bytes2HexString(data); //Console.WriteLine("scripthash:"+scripthash); url = Helper.MakeRpcUrlPost(api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata)); result = await Helper.HttpPost(url, postdata); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result); Console.WriteLine(resJO.ToString()); } }
//獲取下位機的固件和插件的版本信息 private async void GetPackageInfo() { ForbidAllBtnClick(); byte[] postdata; //从服务器获取固件和插件的版本信息 var url = HttpHelper.MakeRpcUrlPost("https://apiaggr.nel.group/api/testnet", "getneodunversion", out postdata); var res = await HttpHelper.HttpPost(url, postdata); var json = MyJson.Parse(res).AsDict()["result"].AsList(); servicePackageInfo = new MyJson.JsonNode_Object(); for (var i = 0; i < json.Count; i++) { servicePackageInfo[json[i].AsDict()["Name"].AsString()] = new MyJson.JsonNode_ValueString(json[i].AsDict()["Version"].AsString()); } //获取固件插件版本号 //MyJson.JsonNode_Object JA_PackageInfo = await driverControl.GetPackageInfo(); Result result = await ManagerControl.Ins.ToDo(EnumControl.GetPackage); MyJson.JsonNode_Object JA_PackageInfo = (MyJson.JsonNode_Object)result.data; if (JA_PackageInfo != null && JA_PackageInfo.Count > 0) { this.label_FrameworkVersion.Content = "Framework " + JA_PackageInfo["Framework"].ToString(); double nowgjversion = double.Parse(JA_PackageInfo["Framework"].ToString()); //如果下位机固件版本低于服务器版本就显示升级按钮 if (nowgjversion < double.Parse(servicePackageInfo["Framework"].ToString())) { this.Btn_Framework_update.Visibility = Visibility.Visible; } else { this.Btn_Framework_update.Visibility = Visibility.Hidden; } this.listbox.Items.Clear(); //现在只有neo 先这么搞 //初始化 neo的boxlist var demoItem = this.listboxDemo.Items[0] as ListBoxItem; string xaml = System.Windows.Markup.XamlWriter.Save(demoItem); ListBoxItem item = System.Windows.Markup.XamlReader.Parse(xaml) as ListBoxItem; var img_icon = item.FindName("img_icon") as Image; var label_version = item.FindName("label_version") as Label; label_version.Content = "Neo 0.00"; var btn_install = item.FindName("btn_install") as Button; btn_install.Click += new RoutedEventHandler(Click_Install); if (this.FindName("Neo_" + btn_install.Name) != null) { this.UnregisterName("Neo_" + btn_install.Name); } this.RegisterName("Neo_" + btn_install.Name, btn_install); btn_install.Visibility = Visibility.Visible; this.list_btns.Add(btn_install); var btn_uninstall = item.FindName("btn_uninstall") as Button; btn_uninstall.Click += new RoutedEventHandler(Click_Uninstall); if (this.FindName("Neo_" + btn_uninstall.Name) != null) { this.UnregisterName("Neo_" + btn_uninstall.Name); } this.RegisterName("Neo_" + btn_uninstall.Name, btn_uninstall); btn_uninstall.Visibility = Visibility.Collapsed; this.list_btns.Add(btn_uninstall); var btn_update = item.FindName("btn_update") as Button; btn_update.Click += new RoutedEventHandler(Click_Install); if (this.FindName("Neo_" + btn_update.Name) != null) { this.UnregisterName("Neo_" + btn_update.Name); } this.RegisterName("Neo_" + btn_update.Name, btn_update); btn_update.Visibility = Visibility.Collapsed; this.list_btns.Add(btn_update); var git_loading = item.FindName("gif_loading") as Image; if (this.FindName("Neo_" + git_loading.Name) != null) { this.UnregisterName("Neo_" + git_loading.Name); } this.RegisterName("Neo_" + git_loading.Name, git_loading); git_loading.Visibility = Visibility.Collapsed; if (JA_PackageInfo.ContainsKey("Neo")) { var verson = float.Parse(JA_PackageInfo["Neo"].ToString()); label_version.Content = "Neo " + verson.ToString("0.00"); if (verson < double.Parse(servicePackageInfo["Neo"].ToString())) { btn_update.Visibility = Visibility.Visible; btn_update.Margin = new Thickness(-160, 10, 0, 0); btn_uninstall.Visibility = Visibility.Visible; } else { btn_uninstall.Visibility = Visibility.Visible; btn_update.Visibility = Visibility.Hidden; } btn_install.Visibility = Visibility.Hidden; } else { label_version.Content = "Neo 未安装"; btn_install.Visibility = Visibility.Visible; } this.listbox.Items.Add(item); } else { this.Btn_Framework_update.Visibility = Visibility.Hidden; } Result addressList = await ManagerControl.Ins.ToDo(EnumControl.GetAddress); AllowAllBtnClick(); }
static public void invokescrept(Action <bool, WWW> func_cmd, MyJson.JsonNode_Object paparms) { sdk_http._instance.invokescrept(func_cmd, paparms); }
public static MyJson.JsonNode_Object ToJson(object ScriptObject) { CLRSharp.CLRSharp_Instance sobj = ScriptObject as CLRSharp.CLRSharp_Instance; if (sobj == null) { return(null); } MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); var stype = sobj.type; // CSLE.SType stype=sobj.type; var ms = stype.GetFieldNames(); foreach (var m in ms) { var field = stype.GetField(m); if (field.isStatic) { continue; } if ((Type)field.FieldType.TypeForSystem == typeof(int)) { obj[m] = new MyJson.JsonNode_ValueNumber((int)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(float)) { obj[m] = new MyJson.JsonNode_ValueNumber((float)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(double)) { obj[m] = new MyJson.JsonNode_ValueNumber((double)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(string)) { obj[m] = new MyJson.JsonNode_ValueString((string)sobj.Fields[m]); } // else if ((Type)m.Value.type.type == typeof(List<object>)) else if ((Type)field.FieldType.TypeForSystem == typeof(List <CLRSharp.CLRSharp_Instance>)) { //处理List List <CLRSharp.CLRSharp_Instance> slist = sobj.Fields[m] as List <CLRSharp.CLRSharp_Instance>; var list = new MyJson.JsonNode_Array(); obj[m] = list; foreach (var item in slist) { list.Add(ToJson(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <string>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List <string> slist = sobj.Fields[m] as List <string>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueString(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <int>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List <int> slist = sobj.Fields[m] as List <int>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <float>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List <float> slist = sobj.Fields[m] as List <float>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <double>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List <double> slist = sobj.Fields[m] as List <double>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if (field.FieldType is CLRSharp.ICLRType_Sharp) // else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型 { obj[m] = ToJson(sobj.Fields[m]); } else { Logger.Log("发现不能处理的类型:" + stype.Name + ":" + m + ":" + field.FieldType.ToString()); } } return(obj); }
private void downloadUserInfo() { try { #if DEBUG String[] qqs = { //"1532931245", //"657565846", "2517172830", //"305723370", //"947087352", }; for (int i = 0; i < qqs.Length; i++) { UserInfoDB info = new UserInfoDB(); info.qq = qqs[i]; dblist.Add(info); } #else PostData nvc = new PostData(); Func.putPassWord(nvc); nvc.Add("order", "time"); nvc.Add("desc", "DESC"); nvc.Add("start", "0"); nvc.Add("count", "0"); if (nvc != null) { string sttuas = Func.HttpPostData(Config.GETLIST_ZONE_URL, 10000, nvc); if (sttuas.Length > 10) { MyJson.JsonNode_Array jsons = MyJson.Parse(sttuas) as MyJson.JsonNode_Array; for (int i = 0; i < jsons.GetListCount(); i++) { MyJson.JsonNode_Object json = jsons.GetArrayItem(i) as MyJson.JsonNode_Object; UserInfoDB info = new UserInfoDB(); info.qq = json["qq"].AsString(); info.pqq = json["pqq"].AsString(); info.nickname = Func.MyUrlDeCode(json["nickname"].AsString()); info.age = json["age"].AsInt(); info.sex = Func.MyUrlDeCode(json["sex"].AsString()); info.birthday = Func.MyUrlDeCode(json["birthday"].AsString()); info.mood = json["mood"].AsInt(); info.photo = json["photo"].AsInt(); info.blog = json["blog"].AsInt(); info.heat = json["heat"].AsInt(); info.zone_authority = json["zone_authority"].AsInt(); info.friend_authority = json["friend_authority"].AsInt(); info.logintime = Func.MyUrlDeCode(json["logintime"].AsString()); info.label = Func.MyUrlDeCode(json["label"].AsString()); info.addfriend = json["addfriend"].AsInt(); info.used = json["used"].AsInt(); dblist.Add(info); } } } #endif } catch (Exception e) { LogFile.add(e.ToString(), "Stopping.cs:updateUserInfo", 1); } }
public MyJson.IJsonNode Parser(Component com, NeedList needlist) { var json = new MyJson.JsonNode_Object(); return(json); }
public async Task publishContract() { string wif = "L1PSC3LRShi51xHAX2KN9oCFqETrZQhnzhKVu5zbrzdDpxF1LQz3"; byte[] prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif); byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey); Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(api, address); byte[] script = System.IO.File.ReadAllBytes("0xccd651a5e7d9f4dc698353970df7b7180139cbbe.avm"); Console.WriteLine("合约脚本:" + ThinNeo.Helper.Bytes2HexString(script)); Console.WriteLine("合约脚本Hash:" + ThinNeo.Helper.Bytes2HexString(ThinNeo.Helper.GetScriptHashFromScript(script).data.ToArray().Reverse().ToArray())); byte[] parameter__list = ThinNeo.Helper.HexString2Bytes("0710"); byte[] return_type = ThinNeo.Helper.HexString2Bytes("05"); int need_storage = 1; int need_nep4 = 0; int need_canCharge = 4; string name = "mygas"; string version = "1.0"; string auther = "LZ"; string email = "0"; string description = "0"; using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder()) { var ss = need_storage | need_nep4 | need_canCharge; sb.EmitPushString(description); sb.EmitPushString(email); sb.EmitPushString(auther); sb.EmitPushString(version); sb.EmitPushString(name); sb.EmitPushNumber(ss); sb.EmitPushBytes(return_type); sb.EmitPushBytes(parameter__list); sb.EmitPushBytes(script); sb.EmitSysCall("Neo.Contract.Create"); string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray()); byte[] postdata; var url = Helper.MakeRpcUrlPost(api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish)); var result = await Helper.HttpPost(url, postdata); //return; var consume = (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as MyJson.JsonNode_Object)["gas_consumed"].ToString(); decimal gas_consumed = decimal.Parse(consume); ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData(); extdata.script = sb.ToArray(); extdata.gas = Math.Ceiling(gas_consumed - 10); ThinNeo.Transaction tran = makeTran(dir, null, new ThinNeo.Hash256(id_GAS), extdata.gas); tran.version = 1; tran.extdata = extdata; tran.type = ThinNeo.TransactionType.InvocationTransaction; byte[] msg = tran.GetMessage(); byte[] signdata = ThinNeo.Helper.Sign(msg, prikey); tran.AddWitness(signdata, pubkey, address); string txid = tran.GetHash().ToString(); byte[] data = tran.GetRawData(); string rawdata = ThinNeo.Helper.Bytes2HexString(data); url = Helper.MakeRpcUrlPost(api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata)); result = await Helper.HttpPost(url, postdata); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result); Console.WriteLine(resJO.ToString()); } }