public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json) { SkinnedMeshRenderer ic = component as SkinnedMeshRenderer; //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行 //放到外面去了 //材质 MyJson.JsonNode_Array mats = new MyJson.JsonNode_Array(); json["mats"] = mats; foreach (var m in ic.sharedMaterials) { string hash = resmgr.SaveMat(m); mats.Add(new MyJson.JsonNode_ValueString(hash)); } //bounds json["center"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.center)); json["size"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.size)); //mesh json["mesh"] = new MyJson.JsonNode_ValueString(resmgr.SaveMesh(ic.sharedMesh)); json["rootboneobj"] = new MyJson.JsonNode_ValueNumber(ic.rootBone.gameObject.GetInstanceID()); MyJson.JsonNode_Array bones = new MyJson.JsonNode_Array(); foreach (var b in ic.bones) { bones.Add(new MyJson.JsonNode_ValueNumber(b.gameObject.GetInstanceID())); } json["boneobjs"] = bones; ic.rootBone.GetInstanceID(); }
public void Fill(Component com, MyJson.IJsonNode json) { MeshRenderer t = com as MeshRenderer; t.castShadows = json.GetDictItem("castShadows").AsBool(); t.receiveShadows = json.GetDictItem("receiveShadows").AsBool(); t.useLightProbes = json.GetDictItem("useLightProbes").AsBool(); List<Material> mats = new List<Material>(); foreach (var item in json.GetDictItem("materials").AsList()) { Material mat = new Material(Shader.Find(item.GetDictItem("shader").AsString())); mat.name = item.GetDictItem("name").AsString(); List<string> keywords = new List<string>(); foreach (var key in item.GetDictItem("shaderkeyword").AsList()) { keywords.Add(key.AsString()); } mat.shaderKeywords = keywords.ToArray(); if (item.HaveDictItem("maintex")) { mat.mainTexture = AssetMgr.Instance.GetTexture(item.GetDictItem("maintex").AsString()); } mats.Add(mat); } t.sharedMaterials = mats.ToArray(); }
public void Fill(Component com, MyJson.IJsonNode json) { Transform t = com as Transform; var jsono = json as MyJson.JsonNode_Object; t.localPosition = ComponentTypeConvert.StringToVector3(jsono["P"] as MyJson.JsonNode_ValueString); t.localEulerAngles = ComponentTypeConvert.StringToVector3(jsono["R"] as MyJson.JsonNode_ValueString); t.localScale = ComponentTypeConvert.StringToVector3(jsono["S"] as MyJson.JsonNode_ValueString); }
public void Fill(Component com, MyJson.IJsonNode json) { LGButton btn = com as LGButton; var jsono = json as MyJson.JsonNode_Object; btn.Tag = jsono["Tag"] as MyJson.JsonNode_ValueString; btn.Team = jsono["Team"] as MyJson.JsonNode_ValueString; }
public static void ParserWidget(MyJson.JsonNode_Object json, UIWidget widget) { json["w_color"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(widget.color)); json["w_pivot"] = new MyJson.JsonNode_ValueString(widget.pivot.ToString()); json["w_depth"] = new MyJson.JsonNode_ValueNumber(widget.depth); json["w_dimensions"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(new Vector2(widget.width, widget.height))); json["w_keepasp"] = new MyJson.JsonNode_ValueString(widget.keepAspectRatio.ToString()); //json["w_asp"] = new MyJson.JsonNode_ValueNumber(widget.aspectRatio); }
public void Fill(Component com, MyJson.IJsonNode json) { BoxCollider2D t = com as BoxCollider2D; var jsono = json as MyJson.JsonNode_Object; t.isTrigger = jsono["isTrigger"] as MyJson.JsonNode_ValueNumber; t.center = ComponentTypeConvert.StringToVector3(jsono["center"] as MyJson.JsonNode_ValueString); t.size = ComponentTypeConvert.StringToVector3(jsono["size"] as MyJson.JsonNode_ValueString); }
public void Fill(Component com, MyJson.IJsonNode json) { MeshCollider t = com as MeshCollider; var jsono = json as MyJson.JsonNode_Object; t.isTrigger = jsono["isTrigger"] as MyJson.JsonNode_ValueNumber; t.sharedMesh = AssetMgr.Instance.GetMesh(jsono["mesh"].ToString()); t.convex = json.GetDictItem("convex").AsBool(); t.smoothSphereCollisions = json.GetDictItem("smoothSphereCollisions").AsBool(); }
/// <summary> /// 从json写入二进制流 /// </summary> /// <param name="stream">二进制流</param> /// <param name="node">json</param> /// <param name="pubdict">一个字符串字典(可选)如果字典里有的字符串,保存只记录一个索引,但是需要字典才能读出来</param> /// <param name="riseDictByKey">是否把key添加到字典中(默认为false)</param> /// <param name="riseDictByString">是否把String值添加到字典中(默认为false)</param> public static void Write(System.IO.Stream stream, MyJson.IJsonNode node, IList<string> pubdict = null, bool riseDictByKey = false, bool riseDictByString = false) { List<string> localdict = new List<string>(); System.IO.MemoryStream ms = new System.IO.MemoryStream(); PackJson(ms, node, pubdict, localdict, riseDictByKey, riseDictByString); byte[] data = ms.ToArray(); ms.Close(); WriteStrDict(stream, localdict); stream.Write(data, 0, data.Length); }
public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp) { MeshFilter c = node.GetComponent(comptype) as MeshFilter; if (c == null)//这就可能了 c = node.AddComponent<MeshFilter>(); var mesh = resmgr.GetMesh(json["mesh"].AsString()); c.mesh = mesh; return c; }
public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json) { BoxCollider ic = component as BoxCollider; //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行 //放到外面去了 json["center"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.center)); json["size"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.size)); }
public static void FillWidget(UIWidget widget, MyJson.JsonNode_Object json) { widget.color = ComponentTypeConvert.StringToColor(json["w_color"] as MyJson.JsonNode_ValueString); widget.pivot = (UIWidget.Pivot)Enum.Parse(typeof(UIWidget.Pivot), json["w_pivot"] as MyJson.JsonNode_ValueString); widget.depth = json["w_depth"] as MyJson.JsonNode_ValueNumber; widget.keepAspectRatio = (UIWidget.AspectRatioSource)Enum.Parse(typeof(UIWidget.AspectRatioSource), json["w_keepasp"] as MyJson.JsonNode_ValueString); Vector2 demensions = ComponentTypeConvert.StringToVector2(json["w_dimensions"] as MyJson.JsonNode_ValueString); widget.SetDimensions((int)demensions.x, (int)demensions.y); }
public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json) { Transform ic = component as Transform; //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行 //放到外面去了 json["transmove"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localPosition)); json["transquat"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localRotation)); json["transscale"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localScale)); }
public void Fill(Component com, MyJson.IJsonNode json) { UIDragScrollView t = com as UIDragScrollView; var jsono = json as MyJson.JsonNode_Object; if (jsono.ContainsKey("scrollView")) { t.scrollView = (GameObjParser.IDToObj(jsono["scrollView"] as MyJson.JsonNode_ValueNumber)).GetComponent<UIScrollView>(); } }
public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json) { MeshFilter ic = component as MeshFilter; //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行 //放到外面去了 #if UNITY_EDITOR json["mesh"] = new MyJson.JsonNode_ValueString(resmgr.SaveMesh(ic.sharedMesh)); #else json["mesh"] = new MyJson.JsonNode_ValueString(resmgr.SaveMesh(ic.mesh)); #endif }
public void Fill(Component com, MyJson.IJsonNode json) { Light t = com as Light; t.type = (LightType)json.GetDictItem("type").AsInt(); if (t.type == LightType.Spot) { t.range = (float)json.GetDictItem("range").AsDouble(); t.spotAngle = (float)json.GetDictItem("spotangle").AsDouble(); } if (t.type == LightType.Point) { t.range = (float)json.GetDictItem("range").AsDouble(); } if (t.type != LightType.Area) { t.color = ComponentTypeConvert.StringToColor(json.GetDictItem("color").AsString()); t.intensity = (float)json.GetDictItem("intensity").AsDouble(); //t.cookie //t.cookiesize t.shadows = (LightShadows)json.GetDictItem("shadowtype").AsInt(); if (t.shadows != LightShadows.None) { t.shadowStrength = (float)json.GetDictItem("shadowStrength").AsDouble(); t.shadowBias = (float)json.GetDictItem("shadowBias").AsDouble(); //shadow质量找不到怎么操作 } if (t.shadows == LightShadows.Soft) { t.shadowSoftness = (float)json.GetDictItem("shadowSoftness").AsDouble(); t.shadowSoftnessFade = (float)json.GetDictItem("shadowSoftnessFade").AsDouble(); } //Drawhalo not found //flare t.renderMode = (LightRenderMode)json.GetDictItem("renderMode").AsInt(); json.SetDictValue("renderMode", (int)t.renderMode); t.cullingMask = json.GetDictItem("cullingMask").AsInt(); //lightmapping not found } }
public void Fill(Component com, MyJson.IJsonNode json) { UIDragDropContainer t = com as UIDragDropContainer; var jsono = json as MyJson.JsonNode_Object; if (jsono.ContainsKey("reparentTarget")) { t.reparentTarget = (GameObjParser.IDToObj(jsono["reparentTarget"] as MyJson.JsonNode_ValueNumber)).transform; } }
public void Fill(Component com, MyJson.IJsonNode json) { UIToggle t = com as UIToggle; var jsono = json as MyJson.JsonNode_Object; //t.group = jsono["group"] as MyJson.JsonNode_ValueNumber; //t.value = jsono["value"] as MyJson.JsonNode_ValueNumber; // t.activeSprite = jsono["sprite"] as MyJson.JsonNode_ValueString; // t.onChange = jsono["onChange"] as MyJson.JsonNode_ValueString; // if (jsono.ContainsKey("activeSprite")) { t.activeSprite = (GameObjParser.IDToObj(jsono["activeSprite"] as MyJson.JsonNode_ValueNumber)).GetComponent<UISprite>(); } }
public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json,DelayProcess dp) { BoxCollider c = node.GetComponent(comptype) as BoxCollider; if (c == null) c = node.AddComponent<BoxCollider>(); Debug.Log(c); Debug.Log("tag=" + json); var center = StringHelper.ToVector3(json["center"].AsString()); var size = StringHelper.ToVector3(json["size"].AsString()); c.center = center; c.size = size; return c; }
public void Fill(Component com, MyJson.IJsonNode json) { UIAnchor t = com as UIAnchor; var jsono = json as MyJson.JsonNode_Object; t.uiCamera = GameObjParser.IDToComponent<Camera>(jsono["uiCamera"] as MyJson.JsonNode_ValueNumber); t.container = GameObjParser.IDToObj(jsono["container"] as MyJson.JsonNode_ValueNumber); t.side = (UIAnchor.Side)Enum.Parse(typeof(UIAnchor.Side), jsono["side"] as MyJson.JsonNode_ValueString); t.runOnlyOnce = jsono["runOnlyOnce"] as MyJson.JsonNode_ValueNumber; t.relativeOffset = ComponentTypeConvert.StringToVector2(jsono["relativeOffset"] as MyJson.JsonNode_ValueString); t.pixelOffset = ComponentTypeConvert.StringToVector2(jsono["pixelOffset"] as MyJson.JsonNode_ValueString); }
public void WriteToJson(IResMgr resmgr, Material mat, MyJson.JsonNode_Object json) { json["shaderName"] = new MyJson.JsonNode_ValueString(this.shaderName); if (jsonConfig.ContainsKey("params")) { foreach (var item in jsonConfig["params"].asDict()) { //Debug.Log(item.Value); string type = item.Value.asDict()["type"].AsString(); string flag = item.Value.asDict()["flags"].AsString(); string name = item.Value.asDict()["name"].AsString(); if (type == "Float" || type == "Range") { json[name] = new MyJson.JsonNode_ValueNumber(mat.GetFloat(name)); } else if (type == "Vector") { json[name] = new MyJson.JsonNode_ValueString(StringHelper.ToString(mat.GetVector(name))); } else if (type == "Color") { json[name] = new MyJson.JsonNode_ValueString(StringHelper.ToString((Color32)mat.GetColor(name))); } else if (type == "Texture") { string texdim = item.Value.asDict()["texdim"].AsString(); var tex = mat.GetTexture(name); if (tex != null) { if (texdim == "Tex2D") { string texname = resmgr.SaveTexture(tex as Texture2D); json[name] = new MyJson.JsonNode_ValueString(texname); } else { throw new Exception("not support texdim:" + texdim); } } } else { throw new Exception("not support type:" + type); } } } }
public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp) { MeshRenderer c = node.GetComponent(comptype) as MeshRenderer; if (c == null)//这就可能了 c = node.AddComponent<MeshRenderer>(); var mats = json["mats"].AsList(); Material[] rmats = new Material[mats.Count]; for (int i = 0; i < mats.Count; i++) { string hashname = mats[i].AsString(); rmats[i] = resmgr.GetMat(hashname); } c.materials = rmats; return c; }
public void Fill(Component com, MyJson.IJsonNode json) { UIScrollView sv = com as UIScrollView; var jsono = json as MyJson.JsonNode_Object; sv.movement = (UIScrollView.Movement)Enum.Parse(typeof(UIScrollView.Movement), jsono["movement"] as MyJson.JsonNode_ValueString); sv.dragEffect = (UIScrollView.DragEffect)Enum.Parse(typeof(UIScrollView.DragEffect), jsono["dragEffect"] as MyJson.JsonNode_ValueString); sv.scrollWheelFactor = jsono["scrollWheelFactor"] as MyJson.JsonNode_ValueNumber; sv.momentumAmount = jsono["momentumAmount"] as MyJson.JsonNode_ValueNumber; sv.restrictWithinPanel = jsono["restrictWithinPanel"] as MyJson.JsonNode_ValueNumber; sv.disableDragIfFits = jsono["disableDragIfFits"] as MyJson.JsonNode_ValueNumber; sv.smoothDragStart = jsono["smoothDragStart"] as MyJson.JsonNode_ValueNumber; sv.iOSDragEmulation = jsono["iOSDragEmulation"] as MyJson.JsonNode_ValueNumber; }
public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json) { FB.PosePlus.AniPlayer ic = component as FB.PosePlus.AniPlayer; MyJson.JsonNode_Array anis = new MyJson.JsonNode_Array(); json["clips"] = anis; foreach (var m in ic.clips) { string hash = resmgr.SaveAniClip(m); anis.Add(new MyJson.JsonNode_ValueString(hash)); } }
public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp) { Transform c = node.GetComponent(comptype) as Transform; if (c == null)//这并不可能,只是例子 c = node.AddComponent<Transform>(); //Debug.Log(c); //Debug.Log("tag=" + json); var move = StringHelper.ToVector3(json["transmove"].AsString()); var euler = StringHelper.ToQuaternion(json["transquat"].AsString()); var scale = StringHelper.ToVector3(json["transscale"].AsString()); c.localPosition = move; c.localScale = scale; c.localRotation = euler; return c; }
public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp) { SkinnedMeshRenderer c = node.GetComponent(comptype) as SkinnedMeshRenderer; if (c == null)//这就可能了 c = node.AddComponent<SkinnedMeshRenderer>(); //mats var mats = json["mats"].AsList(); Material[] rmats = new Material[mats.Count]; for (int i = 0; i < mats.Count; i++) { string hashname = mats[i].AsString(); rmats[i] = resmgr.GetMat(hashname); } c.materials = rmats; //bound var center = StringHelper.ToVector3(json["center"].AsString()); var size = StringHelper.ToVector3(json["size"].AsString()); c.localBounds = new Bounds(center, size); //mesh var mesh = resmgr.GetMesh(json["mesh"].AsString()); c.sharedMesh = mesh; //延迟恢复 if (json.ContainsKey("rootboneobj")) { dp.delayCall += () => { c.rootBone = dp.mapObjs[json["rootboneobj"].AsInt()].transform; }; } if (json.ContainsKey("boneobjs")) { dp.delayCall += () => { var array = json["boneobjs"] as MyJson.JsonNode_Array; List<Transform> bones = new List<Transform>(); foreach (var b in array) { bones.Add(dp.mapObjs[b.AsInt()].transform); } c.bones = bones.ToArray(); }; } return c; }
public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp) { FB.PosePlus.AniPlayer c = node.GetComponent(comptype) as FB.PosePlus.AniPlayer; if (c == null)//这就可能了 c = node.AddComponent<FB.PosePlus.AniPlayer>(); var clips = json["clips"].AsList(); c.clips = new List<FB.PosePlus.AniClip>(); for (int i = 0; i < clips.Count; i++) { string hashname = clips[i].AsString(); c.clips.Add(resmgr.GetAniClip(hashname)); } return c; }
public void Fill(Component com, MyJson.IJsonNode json) { UIGrid t = com as UIGrid; var jsono = json as MyJson.JsonNode_Object; t.arrangement = (UIGrid.Arrangement)Enum.Parse(typeof(UIGrid.Arrangement), jsono["arrangement"] as MyJson.JsonNode_ValueString); t.sorting = (UIGrid.Sorting)Enum.Parse(typeof(UIGrid.Sorting), jsono["sorting"] as MyJson.JsonNode_ValueString); t.pivot = (UIWidget.Pivot)Enum.Parse(typeof(UIWidget.Pivot), jsono["pivot"] as MyJson.JsonNode_ValueString); t.maxPerLine = jsono["maxPerLine"] as MyJson.JsonNode_ValueNumber; t.cellWidth = jsono["cellWidth"] as MyJson.JsonNode_ValueNumber; t.cellHeight = jsono["cellHeight"] as MyJson.JsonNode_ValueNumber; t.animateSmoothly = jsono["animateSmoothly"] as MyJson.JsonNode_ValueNumber; t.hideInactive = jsono["hideInactive"] as MyJson.JsonNode_ValueNumber; t.keepWithinPanel = jsono["keepWithinPanel"] as MyJson.JsonNode_ValueNumber; }
public void Fill(Component com, MyJson.IJsonNode json) { UILabel t = com as UILabel; var jsono = json as MyJson.JsonNode_Object; //font 有特殊的打包逻辑 if(jsono.ContainsKey("bfont")) { string bfontname = jsono["bfont"] as MyJson.JsonNode_ValueString; t.bitmapFont = FontMgr.Instance.GetUIFont(bfontname); } else if(jsono.ContainsKey("tfont")) { string tfontname = jsono["tfont"] as MyJson.JsonNode_ValueString; t.trueTypeFont= FontMgr.Instance.GetUnityFont(tfontname); } else { Debug.LogWarning("UILabel" + com.name + " 未指定Font"); } t.fontSize = (jsono["fontsize"] as MyJson.JsonNode_ValueNumber); //材质有特殊的打包逻辑 //json["mate"] = t.material; t.text = jsono["text"] as MyJson.JsonNode_ValueString; t.overflowMethod = (UILabel.Overflow)Enum.Parse(typeof(UILabel.Overflow), jsono["overflowMethod"] as MyJson.JsonNode_ValueString); t.alignment = (NGUIText.Alignment)Enum.Parse(typeof(NGUIText.Alignment), jsono["alignment"] as MyJson.JsonNode_ValueString); t.keepCrispWhenShrunk = (UILabel.Crispness)Enum.Parse(typeof(UILabel.Crispness), jsono["keepCrispWhenShrunk"] as MyJson.JsonNode_ValueString); t.applyGradient = (jsono["applyGradient"] as MyJson.JsonNode_ValueNumber); t.gradientTop = ComponentTypeConvert.StringToColor(jsono["gradientTop"] as MyJson.JsonNode_ValueString); t.gradientBottom = ComponentTypeConvert.StringToColor(jsono["gradientBottom"] as MyJson.JsonNode_ValueString); t.effectStyle = (UILabel.Effect)Enum.Parse(typeof(UILabel.Effect), jsono["effectStyle"] as MyJson.JsonNode_ValueString); t.effectColor = ComponentTypeConvert.StringToColor(jsono["effectColor"] as MyJson.JsonNode_ValueString); t.effectDistance = ComponentTypeConvert.StringToVector2(jsono["effectDistance"] as MyJson.JsonNode_ValueString); var spacing = ComponentTypeConvert.StringToVector2(jsono["spacing"] as MyJson.JsonNode_ValueString); t.spacingX = (int)spacing.x; t.spacingY = (int)spacing.y; t.maxLineCount = (jsono["maxLineCount"] as MyJson.JsonNode_ValueNumber); ComponentParser.FillWidget(t, jsono); }
public void Fill(Component com, MyJson.IJsonNode json) { UISprite t = com as UISprite; var jsono = json as MyJson.JsonNode_Object; //t.atlas atlas 有特殊的打包逻辑 string atlas = jsono["atlas"] as MyJson.JsonNode_ValueString; t.atlas = AtlasMgr.Instance.GetAtlas(atlas); //Debug.Log("atals:" + atlas + "," + t.atlas); t.spriteName = jsono["spriteName"] as MyJson.JsonNode_ValueString; t.type = (UISprite.Type)Enum.Parse(typeof(UISprite.Type),jsono["spriteType"] as MyJson.JsonNode_ValueString); if (t.type == UISprite.Type.Simple) { t.flip = (UISprite.Flip)Enum.Parse(typeof(UISprite.Flip), jsono["flip"] as MyJson.JsonNode_ValueString); } else if (t.type == UISprite.Type.Sliced) { t.centerType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["centerType"] as MyJson.JsonNode_ValueString); t.flip = (UISprite.Flip)Enum.Parse(typeof(UISprite.Flip), jsono["flip"] as MyJson.JsonNode_ValueString); } else if (t.type == UISprite.Type.Tiled) { } else if (t.type == UISprite.Type.Filled) { t.flip = (UISprite.Flip)Enum.Parse(typeof(UISprite.Flip), jsono["flip"] as MyJson.JsonNode_ValueString); t.fillDirection = (UISprite.FillDirection)Enum.Parse(typeof(UISprite.FillDirection), jsono["fillDirection"] as MyJson.JsonNode_ValueString); t.fillAmount = jsono["fillAmount"] as MyJson.JsonNode_ValueNumber; t.invert = jsono["invert"] as MyJson.JsonNode_ValueNumber; } else if (t.type == UISprite.Type.Advanced) { t.leftType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["leftType"] as MyJson.JsonNode_ValueString); t.rightType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["rightType"] as MyJson.JsonNode_ValueString); t.topType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["topType"] as MyJson.JsonNode_ValueString); t.bottomType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["bottomType"] as MyJson.JsonNode_ValueString); t.centerType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["centerType"] as MyJson.JsonNode_ValueString); t.flip = (UISprite.Flip)Enum.Parse(typeof(UISprite.Flip), jsono["flip"] as MyJson.JsonNode_ValueString); } ComponentParser.FillWidget(t,jsono); }
public void Fill(Component com, MyJson.IJsonNode json) { UIButton t = com as UIButton; var jsono = json as MyJson.JsonNode_Object; t.tweenTarget = GameObjParser.IDToObj(jsono["tweenTarget"] as MyJson.JsonNode_ValueNumber); t.dragHighlight = jsono["dragHighlight"] as MyJson.JsonNode_ValueNumber; t.duration = jsono["duration"] as MyJson.JsonNode_ValueNumber; t.defaultColor = ComponentTypeConvert.StringToColor(jsono["colorN"] as MyJson.JsonNode_ValueString); t.hover = ComponentTypeConvert.StringToColor(jsono["colorH"] as MyJson.JsonNode_ValueString); t.pressed = ComponentTypeConvert.StringToColor(jsono["colorP"] as MyJson.JsonNode_ValueString); t.disabledColor = ComponentTypeConvert.StringToColor(jsono["colorD"] as MyJson.JsonNode_ValueString); t.normalSprite = jsono["spriteN"] as MyJson.JsonNode_ValueString; t.hoverSprite = jsono["springH"] as MyJson.JsonNode_ValueString; t.pressedSprite = jsono["springP"] as MyJson.JsonNode_ValueString; t.disabledSprite = jsono["springD"] as MyJson.JsonNode_ValueString; t.pixelSnap = jsono["pixelSnap"] as MyJson.JsonNode_ValueNumber; }
static public Arg loadJson(string fileName) { return(new Arg(MyJson.deserializeFile(fileName))); }
//退款操作 async Task test_refund() { Console.WriteLine("Input refund tokens:"); string refund = Console.ReadLine(); string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(wneo_common.sc_wneo); Console.WriteLine("nep55_address=" + nep55_address); //获取地址的资产列表 Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Config.api, nep55_address); if (dir.ContainsKey(Config.id_NEO) == false) { Console.WriteLine("no neo"); return; } List <Utxo> newlist = new List <Utxo>(dir[Config.id_NEO]); for (var i = newlist.Count - 1; i >= 0; i--) { var ret = await wneo_common.api_InvokeScript(wneo_common.sc_wneo, "getRefundTarget", "(hex256)" + newlist[i].txid.ToString()); wneo_common.ResultItem item = ret.value; if (newlist[i].n > 0) { continue; } var value = item.subItem[0].AsString(); if (value.Length > 0)//已经标记的UTXO,不能使用 { newlist.RemoveAt(i); } } ThinNeo.Transaction tran = null; { byte[] script = null; using (var sb = new ThinNeo.ScriptBuilder()) { var array = new MyJson.JsonNode_Array(); array.AddArrayValue("(bytes)" + ThinNeo.Helper.Bytes2HexString(scripthash)); sb.EmitParamJson(array); //参数倒序入 sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)refund")); //参数倒序入 sb.EmitAppCall(wneo_common.sc_wneo); //nep5脚本 script = sb.ToArray(); } Console.WriteLine("contract address=" + nep55_address);//往合约地址转账 //生成交易 tran = Helper.makeTran(newlist, nep55_address, new ThinNeo.Hash256(Config.id_NEO), Decimal.Parse(refund)); tran.type = ThinNeo.TransactionType.InvocationTransaction; var idata = new ThinNeo.InvokeTransData(); tran.extdata = idata; idata.script = script; //附加鉴证 tran.attributes = new ThinNeo.Attribute[1]; tran.attributes[0] = new ThinNeo.Attribute(); tran.attributes[0].usage = ThinNeo.TransactionAttributeUsage.Script; tran.attributes[0].data = scripthash; } //sign and broadcast {//做智能合约的签名 byte[] iscript = null; using (var sb = new ThinNeo.ScriptBuilder()) { sb.EmitPushString("whatever"); sb.EmitPushNumber(250); iscript = sb.ToArray(); } tran.AddWitnessScript(n55contract, iscript); } {//做提款人的签名 var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), prikey); tran.AddWitness(signdata, pubkey, address); } var trandata = tran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); ThinNeo.Transaction testde = new ThinNeo.Transaction(); testde.Deserialize(new System.IO.MemoryStream(trandata)); byte[] postdata; var url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata)); string poststr = System.Text.Encoding.UTF8.GetString(postdata); Console.WriteLine("-----post info begin----"); Console.WriteLine(poststr); Console.WriteLine("-----post info end----"); var result = await Helper.HttpPost(url, postdata); Console.WriteLine("得到的结果是:" + result); var json = MyJson.Parse(result).AsDict(); if (json.ContainsKey("result")) { bool bSucc = false; if (json["result"].type == MyJson.jsontype.Value_Number) { bSucc = json["result"].AsBool(); Console.WriteLine("cli=" + json["result"].ToString()); } else { var resultv = json["result"].AsList()[0].AsDict(); var txid = resultv["txid"].AsString(); bSucc = txid.Length > 0; Console.WriteLine("txid=" + txid); } if (bSucc) { lasttxid = tran.GetHash(); Nep55_1.lastNep5Tran = tran.GetHash(); Console.WriteLine("你可以从这个UTXO拿走NEO了 txid=" + lasttxid.ToString() + "[0]"); } else { lasttxid = null; } } }
public void on_getWalletFile(bool timeout, WWW www) { roleInfo.getInstance().wallet_json = MyJson.Parse(www.text).AsDict()["data"].AsString(); check_logined(); }
void InitializeAccount() { try { String URL = Config.ROOT_URL + "account_getlist"; PostData nvc = new PostData(); Func.putPassWord(nvc); nvc.Add("order", "logintime"); nvc.Add("desc", "DESC"); nvc.Add("start", "0"); nvc.Add("count", "100"); nvc.Add("tag", "loginip"); string ip = Tools.GetIP(); nvc.Add("tagval", ip); Debug.LogLine("本机IP:" + ip); if (nvc != null) { string sttuas = Func.HttpPostData(URL, 10000, nvc); Debug.Log(sttuas); 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; int canuse = json["canuse"].AsInt(); if (canuse == 1) { QQInfo info = new QQInfo(); info.qq = json["qq"].AsString(); info.pws = Func.MyUrlDeCode(json["password"].AsString()); info.nickname = Func.MyUrlDeCode(json["nickname"].AsString()); if (!qqInfo.ContainsKey(info.qq)) { qqinfo.Enqueue(info.qq); qqInfo.Add(info.qq, info); } } } } } } catch (Exception e) { Debug.OnException(e); } try { String URL = Config.ROOT_URL + "accountex_getlist"; PostData nvc = new PostData(); Func.putPassWord(nvc); 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; string qq = json["qq"].AsString(); QQInfo info; if (qqInfo.TryGetValue(qq, out info)) { info.state = Func.MyUrlDeCode(json["state"].AsString()); try { info.locktime = DateTime.Now; info.locktime = DateTime.Parse(Func.MyUrlDeCode(json["locktime"].AsString())); } catch (Exception) { } } } } } } catch (Exception) { } }
async Task test_claimStep3() { byte[] postdata; var url = Helper.MakeRpcUrlPost(Config.api, "getclaimgas", out postdata, new MyJson.JsonNode_ValueString(this.address)); var result = await Helper.HttpPost(url, postdata); Console.WriteLine("得到的结果是:" + result); var json = MyJson.Parse(result).AsDict(); if (json.ContainsKey("result")) { //gas总量 var gas = json["result"].AsList()[0].AsDict()["gas"].AsString(); Console.WriteLine("gas:" + gas); var claims = json["result"].AsList()[0].AsDict()["claims"].AsList(); Console.WriteLine("claims:" + claims); //var assetIDStr = "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7"; //选择GAS支付合约调用费用 var assetID = HexString2Bytes(Config.id_GAS.Replace("0x", "")).Reverse().ToArray(); //构建交易体 ThinNeo.Transaction claimTran = new ThinNeo.Transaction { type = ThinNeo.TransactionType.ClaimTransaction,//领取Gas合约 attributes = new ThinNeo.Attribute[0], inputs = new ThinNeo.TransactionInput[0], outputs = new ThinNeo.TransactionOutput[1], extdata = new ThinNeo.ClaimTransData() }; claimTran.outputs[0] = new ThinNeo.TransactionOutput { assetId = assetID, toAddress = ThinNeo.Helper.GetPublicKeyHashFromAddress(this.address), value = Decimal.Parse(gas) }; List <ThinNeo.TransactionInput> claimVins = new List <ThinNeo.TransactionInput>(); foreach (MyJson.IJsonNode j in (MyJson.JsonNode_Array)claims) { claimVins.Add(new ThinNeo.TransactionInput { hash = ThinNeo.Debug.DebugTool.HexString2Bytes((j.AsDict()["txid"].ToString()).Replace("0x", "")).Reverse().ToArray(), index = ushort.Parse(j.AsDict()["n"].ToString()) }); } (claimTran.extdata as ThinNeo.ClaimTransData).claims = claimVins.ToArray(); byte[] msg = claimTran.GetMessage(); byte[] signdata = ThinNeo.Helper.Sign(msg, this.prikey); claimTran.AddWitness(signdata, pubkey, this.address); var trandata = claimTran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); byte[] postdata2; url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata2, new MyJson.JsonNode_ValueString(strtrandata)); var result2 = await Helper.HttpPost(url, postdata2); Console.WriteLine("得到的结果是:" + result2); } }
private void HandleMyJson(MyJson myjson) { MyPlayer.otherPlayerManager.HandleMsg(myjson); }
static void Main(string[] args) { MyJson myJson = new MyJson(); var foo = myJson.ToJson(); }
private void Send(byte[] priKey, string assetid, string sendAssetid, string addr, decimal balance, decimal send, decimal totalSend, decimal sendAssetDecimals, UInt32 height, string snapshotColl) { try { decimal decimals = decimal.Parse(sendAssetDecimals.ToString()); byte[] data = null; byte[] pubKey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(priKey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubKey); if (addr == address) { return; } //MakeTran ThinNeo.Transaction tran = new Transaction(); { var _send = send * decimal.Parse(Math.Pow(10, (double)decimals).ToString()); using (ScriptBuilder sb = new ScriptBuilder()) { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); byte[] randombytes = new byte[32]; using (RandomNumberGenerator rng = RandomNumberGenerator.Create()) { rng.GetBytes(randombytes); } BigInteger randomNum = new BigInteger(randombytes); sb.EmitPushNumber(randomNum); sb.Emit(ThinNeo.VM.OpCode.DROP); array.AddArrayValue("(addr)" + address); array.AddArrayValue("(addr)" + addr); array.AddArrayValue("(int)" + (BigInteger)_send); sb.EmitParamJson(array); sb.EmitPushString("transfer"); sb.EmitAppCall(new Hash160(sendAssetid)); data = sb.ToArray(); } tran.type = ThinNeo.TransactionType.InvocationTransaction; var idata = new ThinNeo.InvokeTransData(); tran.extdata = idata; idata.script = data; idata.gas = 0; tran.inputs = new ThinNeo.TransactionInput[0]; tran.outputs = new ThinNeo.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); //sign and broadcast var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), priKey); tran.AddWitness(signdata, pubKey, address); var trandata = tran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); byte[] postdata; var url = HttpHelper.MakeRpcUrlPost(Config.Ins.url, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata)); var result = HttpHelper.HttpPost(url, postdata); var j_result = MyJson.Parse(result).AsDict()["result"].AsList()[0].AsDict(); if (j_result["sendrawtransactionresult"].AsBool()) { Snapshot snapshot = new Snapshot(); snapshot.addr = addr; snapshot.balance = BsonDecimal128.Create(balance); snapshot.send = BsonDecimal128.Create(send); snapshot.txid = j_result["txid"].AsString(); snapshot.sendAssetid = sendAssetid; snapshot.applied = true; snapshot.assetid = assetid; snapshot.height = height; snapshot.totalSend = BsonDecimal128.Create(totalSend); mongoHelper.ReplaceData(Config.Ins.Snapshot_Conn, Config.Ins.Snapshot_DB, snapshotColl, ToolHelper.RemoveUndefinedParams(JsonConvert.SerializeObject(new Snapshot() { addr = addr, applied = true })), snapshot); mongoHelper.InsetOne(Config.Ins.Snapshot_Conn, Config.Ins.Snapshot_DB, Config.Ins.Snapshot_Current_Coll, snapshot); } else { } } } catch (Exception e) { Console.WriteLine(e); return; } }
//譜面データ書き込み static public void writeScoreData(Arg aData, string aFileName) { MyJson.serializeToFile(aData.dictionary, DataFolder.path + "/score/" + aFileName + ".json", true); }
public void LoadLayout(string respath, string layoutname, Action <IProxy <GameObject> > finish) { Action Finish = () => { ResmgrNative.Instance.LoadStringFromCache(respath + "/layout/" + layoutname + ".layout.txt", "", (code, tag) => { var json = MyJson.Parse(code); var obj = GameObjParser.FromJson(json); finish(new ProxyLayout(obj, layoutname)); } ); }; Action <MyJson.IJsonNode> dependLoaded = (json) => { if (json.HaveDictItem("mesh")) { var list = json.GetDictItem("mesh").AsList(); foreach (var l in list) { ResmgrNative.Instance.LoadBytesFromCache(respath + "/mesh/" + l.AsString() + ".mesh.bytes", l.AsString(), (bytes, tagName) => { Mesh mesh = AssetMgr.ReadMesh(bytes, tagName); assetMgrIO.AddMesh(tagName, mesh); assetMgrIO.MeshAddRef(tagName); }); Debug.Log("dependmesh:" + l.AsString()); } } if (json.HaveDictItem("tex")) { var list = json.GetDictItem("tex").AsList(); foreach (var l in list) { ResmgrNative.Instance.LoadTexture2DFromCache(respath + "/texture/" + l.AsString(), l.AsString(), (tex, tagName) => { assetMgrIO.AddTexture2D(tagName, tex); assetMgrIO.TextureAddRef(tagName); }); } } ResmgrNative.Instance.WaitForTaskFinish(Finish); }; if (layoutDepends.ContainsKey(layoutname)) { dependLoaded(layoutDepends[layoutname]); } else { ResmgrNative.Instance.LoadStringFromCache(respath + "/layout/" + layoutname + ".depend.txt", "", (code, tag) => { layoutDepends[layoutname] = MyJson.Parse(code) as MyJson.JsonNode_Object; dependLoaded(layoutDepends[layoutname]); }); } }
IEnumerator HTTP_nel_post_sgas_gas2(MyJson.IJsonNode json_complete) { string txid = json_complete.AsDict()["txid"].ToString(); var nep55_shash = new ThinNeo.Hash160(global.id_sgas); string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(nep55_shash); WWWForm www_getuxo_form_2 = Helper.GetWWWFormPost("getutxo", new MyJson.JsonNode_ValueString(nep55_address)); WWW www_utxo_2 = new WWW(global.api, www_getuxo_form_2); yield return(www_utxo_2); Dictionary <string, List <Utxo> > _dir_2 = get_utxo(www_utxo_2.text); if (_dir_2.ContainsKey(global.id_GAS) == false) { Debug.Log("no gas"); } List <Utxo> newlist_2 = new List <Utxo>(); foreach (var utxo in _dir_2[global.id_GAS]) { if (utxo.n == 0 && utxo.txid.ToString().Equals(txid)) { newlist_2.Add(utxo); } } if (newlist_2.Count == 0) { Debug.Log("找不到要使用的UTXO"); yield return(null); } {//检查utxo byte[] script = null; using (var sb = new ThinNeo.ScriptBuilder()) { var array = new MyJson.JsonNode_Array(); array.AddArrayValue("(hex256)" + newlist_2[0].txid.ToString()); sb.EmitParamJson(array); //参数倒序入 sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)getRefundTarget")); //参数倒序入 var shash = new ThinNeo.Hash160(global.id_sgas); sb.EmitAppCall(shash); //nep5脚本 script = sb.ToArray(); } WWWForm www_getTarget_form = Helper.GetWWWFormPost("invokescript", new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(script))); WWW www_form = new WWW(global.api, www_getTarget_form); yield return(www_form); var jsonCU = MyJson.Parse(www_form.text); var stack = jsonCU.AsDict()["result"].AsList()[0].AsDict()["stack"].AsList()[0].AsDict(); var value = stack["value"].AsString(); if (value.Length == 0)//未标记的UTXO,不能使用 { Debug.Log("这个utxo没有标记"); yield return(null); } var hash = new ThinNeo.Hash160(ThinNeo.Helper.HexString2Bytes(value)); if (hash.ToString() != ThinNeo.Helper.GetPublicKeyHashFromAddress(roleInfo.getInstance().address).ToString()) { Debug.Log("这个utxo不是标记给你用的"); Debug.Log(hash.ToString()); Debug.Log(ThinNeo.Helper.Bytes2HexString(roleInfo.getInstance().scripthash)); yield return(null); } } ThinNeo.Transaction tran_2 = Helper.makeTran(newlist_2, roleInfo.getInstance().address, new ThinNeo.Hash256(global.id_GAS), newlist_2[0].value); tran_2.type = ThinNeo.TransactionType.ContractTransaction; tran_2.version = 0; //sign and broadcast {//做智能合约的签名 byte[] n55contract = null; { WWWForm www_getState = Helper.GetWWWFormPost("getcontractstate", new MyJson.JsonNode_ValueString(global.id_sgas)); WWW www_state = new WWW(global.api, www_getState); yield return(www_state); var _json = MyJson.Parse(www_state.text).AsDict(); var _resultv = _json["result"].AsList()[0].AsDict(); n55contract = ThinNeo.Helper.HexString2Bytes(_resultv["script"].AsString()); } byte[] iscript = null; using (var sb = new ThinNeo.ScriptBuilder()) { sb.EmitPushNumber(0); sb.EmitPushNumber(0); iscript = sb.ToArray(); } tran_2.AddWitnessScript(n55contract, iscript); } var trandata_2 = tran_2.GetRawData(); var strtrandata_2 = ThinNeo.Helper.Bytes2HexString(trandata_2); ThinNeo.Transaction testde_2 = new ThinNeo.Transaction(); testde_2.Deserialize(new System.IO.MemoryStream(trandata_2)); WWWForm www_transaction_2 = Helper.GetWWWFormPost("sendrawtransaction", new MyJson.JsonNode_ValueString(strtrandata_2)); WWW www_tran_2 = new WWW(global.api, www_transaction_2); yield return(www_tran_2); Debug.Log(www_tran_2.text); var json_2 = MyJson.Parse(www_tran_2.text).AsDict(); if (json_2.ContainsKey("result")) { var resultv = json_2["result"].AsList()[0].AsDict(); var ext = resultv["txid"].AsString(); if (txid.Length > 0) { Debug.Log("txid=" + ext); testtool.panel_main.do_plat_notify(json_complete, ext); api_tool._instance.walletNotifyExt(roleInfo.getInstance().uid, roleInfo.getInstance().token, txid, ext, global.netType, null); } else { Debug.Log("交易失败"); } } else { Debug.Log("交易失败"); } }
IEnumerator HTTP_nel_post_sgas_gas(decimal num) { var nep55_shash = new ThinNeo.Hash160(global.id_sgas); string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(nep55_shash); var scripthash = ThinNeo.Helper.GetPublicKeyHashFromAddress(roleInfo.getInstance().address); WWWForm www_getuxo_form = Helper.GetWWWFormPost("getutxo", new MyJson.JsonNode_ValueString(nep55_address)); WWW www = new WWW(global.api, www_getuxo_form); yield return(www); Dictionary <string, List <Utxo> > _dir = get_utxo(www.text); if (_dir.ContainsKey(global.id_GAS) == false) { Debug.Log("no gas"); } List <Utxo> newlist = new List <Utxo>(_dir[global.id_GAS]); for (var i = newlist.Count - 1; i >= 0; i--) { Debug.Log(newlist[i].txid.ToString()); byte[] script = null; using (var sb = new ThinNeo.ScriptBuilder()) { var array = new MyJson.JsonNode_Array(); array.AddArrayValue("(hex256)" + newlist[i].txid.ToString()); sb.EmitParamJson(array); //参数倒序入 sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)getRefundTarget")); //参数倒序入 var shash = new ThinNeo.Hash160(global.id_sgas); sb.EmitAppCall(shash); //nep5脚本 script = sb.ToArray(); } if (newlist[i].n > 0) { continue; } WWWForm www_getTarget_form = Helper.GetWWWFormPost("invokescript", new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(script))); WWW www_form = new WWW(global.api, www_getTarget_form); yield return(www_form); var jsonCU = MyJson.Parse(www_form.text); var stack = jsonCU.AsDict()["result"].AsList()[0].AsDict()["stack"].AsList()[0].AsDict(); var value = stack["value"].AsString(); if (value.Length > 0)//已经标记的UTXO,不能使用 { newlist.RemoveAt(i); } } string paparms; ThinNeo.Transaction tran = null; { byte[] script = null; using (var sb = new ThinNeo.ScriptBuilder()) { var array = new MyJson.JsonNode_Array(); array.AddArrayValue("(bytes)" + ThinNeo.Helper.Bytes2HexString(scripthash)); sb.EmitParamJson(array); //参数倒序入 sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)refund")); //参数倒序入 var shash = new ThinNeo.Hash160(global.id_sgas); sb.EmitAppCall(shash); //nep5脚本 script = sb.ToArray(); //拼接发给后台做验证的json字符串 MyJson.JsonNode_Object account = new MyJson.JsonNode_Object(); account["sbParamJson"] = array; account["sbPushString"] = new MyJson.JsonNode_ValueString("refund"); account["nnc"] = new MyJson.JsonNode_ValueString(global.id_sgas); account["cnts"] = new MyJson.JsonNode_ValueString(num.ToString()); paparms = account.ToString(); } //生成交易 tran = Helper.makeTran(newlist, nep55_address, new ThinNeo.Hash256(global.id_GAS), num); tran.type = ThinNeo.TransactionType.InvocationTransaction; var idata = new ThinNeo.InvokeTransData(); tran.extdata = idata; idata.script = script; //附加鉴证 tran.attributes = new ThinNeo.Attribute[1]; tran.attributes[0] = new ThinNeo.Attribute(); tran.attributes[0].usage = ThinNeo.TransactionAttributeUsage.Script; tran.attributes[0].data = scripthash; Debug.Log(ThinNeo.Helper.Bytes2HexString(scripthash)); Debug.Log(ThinNeo.Helper.Bytes2HexString(roleInfo.getInstance().prikey)); Debug.Log(ThinNeo.Helper.Bytes2HexString(roleInfo.getInstance().pubkey)); Debug.Log(roleInfo.getInstance().address); } //sign and broadcast {//做智能合约的签名 byte[] n55contract = null; { WWWForm www_getState = Helper.GetWWWFormPost("getcontractstate", new MyJson.JsonNode_ValueString(global.id_sgas)); WWW www_state = new WWW(global.api, www_getState); yield return(www_state); var _json = MyJson.Parse(www_state.text).AsDict(); var _resultv = _json["result"].AsList()[0].AsDict(); n55contract = ThinNeo.Helper.HexString2Bytes(_resultv["script"].AsString()); } byte[] iscript = null; using (var sb = new ThinNeo.ScriptBuilder()) { sb.EmitPushString("whatever"); sb.EmitPushNumber(250); iscript = sb.ToArray(); } tran.AddWitnessScript(n55contract, iscript); } {//做提款人的签名 var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), roleInfo.getInstance().prikey); tran.AddWitness(signdata, roleInfo.getInstance().pubkey, roleInfo.getInstance().address); } var trandata = tran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); ThinNeo.Transaction testde = new ThinNeo.Transaction(); testde.Deserialize(new System.IO.MemoryStream(trandata)); WWWForm www_transaction = Helper.GetWWWFormPost("sendrawtransaction", new MyJson.JsonNode_ValueString(strtrandata)); WWW www_tran = new WWW(global.api, www_transaction); yield return(www_tran); Debug.Log(www_tran.text); var json = MyJson.Parse(www_tran.text).AsDict(); ThinNeo.Hash256 lasttxid = null; if (json.ContainsKey("result")) { bool bSucc = false; if (json["result"].type == MyJson.jsontype.Value_Number) { bSucc = json["result"].AsBool(); Debug.Log("cli=" + json["result"].ToString()); } else { var resultv = json["result"].AsList()[0].AsDict(); var txid = resultv["txid"].AsString(); bSucc = txid.Length > 0; } if (bSucc) { lasttxid = tran.GetHash(); Debug.Log("你可以从这个UTXO拿走GAS了 txid=" + lasttxid.ToString() + "[0]"); api_tool._instance.addUserWalletLogs(roleInfo.getInstance().uid, roleInfo.getInstance().token, lasttxid.ToString(), "0", num.ToString(), "2", paparms, global.netType, "0", (bool timeout1, WWW www1) => { testtool.panel_main.on_refresh_WalletListss(); testtool.panel_main.on_refresh_plat_NotifyList(); }); } else { lasttxid = null; } } }
public string GetTimingList(string strjson) { try { Dictionary <string, string> dic = MyJson.JsonToDictionary(strjson); if (dic.Count == 0) { return(Json.Write(-1, "参数JSON格式错误")); } string equipmentname = string.Empty; string username = string.Empty; string expstartdate = string.Empty; string expenddate = string.Empty; if (dic.TryGetValue("equipmentname", out equipmentname) == false) { return(Json.Write(-1, "设备名称无法识别")); } if (equipmentname.Trim().Length == 0) { return(Json.Write(-1, "设备名称为空")); } //以下参数为可选,先判断是否存在 if (dic.ContainsKey("username") && dic.TryGetValue("username", out username) == false) { return(Json.Write(-1, "用户账号无法识别")); } if (dic.ContainsKey("expstartdate") && dic.TryGetValue("expstartdate", out expstartdate) == false) { return(Json.Write(-1, "有效期开始时间无法识别")); } if (dic.ContainsKey("expenddate") && dic.TryGetValue("expenddate", out expenddate) == false) { return(Json.Write(-1, "有效期结束时间无法识别")); } //获取设备信息 TiminGstartRecordInfo info = new TiminGstartRecordInfo() { EIName = equipmentname }; if (dic.ContainsKey("username")) { info.UserName = username; } if (dic.ContainsKey("expstartdate")) { DateTime starttime = Tools.GetDateTime(expstartdate, DateTime.MinValue); if (starttime == DateTime.MinValue) { return(Json.Write(-1, "有效期开始时间格式输入不正确")); } info.ExpStartDate = starttime; } if (dic.ContainsKey("expenddate")) { DateTime endtime = Tools.GetDateTime(expenddate, DateTime.MaxValue); if (endtime == DateTime.MaxValue) { return(Json.Write(-1, "有效期结束时间格式输入不正确")); } info.ExpEndDate = endtime; } ReturnValue retVal = tsrLogic.GetTimingStartRecord(info); return(Json.Write(retVal.RetCode, retVal.RetMsg, retVal.RetDt)); } catch (Exception ex) { return(Json.Write(-1, Consts.EXP_Info)); } }
//曲リストデータ書き込み static public void writeListData(Arg aData) { MyJson.serializeToFile(aData.dictionary, DataFolder.path + "/list.json", true); }
//譜面データ取得 static public MusicScoreFileData loadScoreData(string aFileName) { return(new MusicScoreFileData(new Arg(MyJson.deserializeFile(DataFolder.path + "/score/" + aFileName + ".json")), aFileName)); }
private void Button_Click_1(object sender, RoutedEventArgs e) { LimpiarData(); if (string.IsNullOrEmpty(txtUrlFile.Text)) { MessageBox.Show("Seleciona un archivo de estaciones, por favor!."); return; } var objMyjSon = new MyJson <LocalizacionEntity>(); //var objMyjSon = new MyJson<RutasEntity>(); var lstRutas = objMyjSon.DeserializarFromFile(txtUrlFile.Text); if (lstRutas.Count > 0) { EF.EFModelContainer context = new EF.EFModelContainer(); foreach (var objRutas in lstRutas) { context.Localizacion.Add(new EF.Localizacion() { Ciudad = objRutas.Ciudad, Estado = objRutas.Estado, Pais = objRutas.Pais, Estacion = objRutas.Estacion }); context.SaveChanges(); /* * var objLocalizacion = context.Localizacion.Add(new EF.Localizacion() * { * Ciudad = objRutas.Estaciones.Ciudad, * Estado = objRutas.Estaciones.Estado, * Pais = objRutas.Estaciones.Pais, * Estacion = objRutas.Estaciones.Estacion * * }); * * context.Entry(objLocalizacion).State = System.Data.Entity.EntityState.Added; * * * * var objContextRuta= context.Rutas.Add(new EF.Rutas() * { * Chofer = objRutas.Chofer, * Compania = objRutas.Compania, * FechaFin = objRutas.FechaFin, * FechaInicio = objRutas.FechaInicio, * IdRuta = Guid.NewGuid() , * Estaciones= objLocalizacion * }); * * * context.Entry(objContextRuta).State = System.Data.Entity.EntityState.Added; * * context.SaveChanges(); */ } FillCbxEstaciones(); this.MainPanel.Visibility = Visibility.Visible; this.LoadFile.Visibility = Visibility.Hidden; } else { MessageBox.Show("El archivo esta vacio, seleciona un archivo de estaciones, por favor!."); } }
//楽曲リスト取得 static public MusicListFileData loadListData() { return(new MusicListFileData(new Arg(MyJson.deserializeFile(DataFolder.path + "/list.json")))); }
private void Send(byte[] priKey, string assetid, string addr, decimal value, NnsAward nnsAward) { try { //获取资产的精度 byte[] postdata; var url = HttpHelper.MakeRpcUrlPost(Config.Ins.url, "getnep5asset", out postdata, new MyJson.JsonNode_ValueString(assetid)); var result = HttpHelper.HttpPost(url, postdata); var Jo_result = MyJson.Parse(result) as MyJson.JsonNode_Object; decimal decimals = 0; if (Jo_result.ContainsKey("result")) { decimals = (decimal)Math.Pow(10, Jo_result["result"].AsList()[0].AsDict()["decimals"].AsInt()); } else { return; } byte[] data = null; byte[] pubKey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(priKey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubKey); if (addr == address) { return; } //MakeTran ThinNeo.Transaction tran = new Transaction(); { BigInteger sendValue = (BigInteger)((decimal)value * decimals); using (ScriptBuilder sb = new ScriptBuilder()) { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); byte[] randombytes = new byte[32]; using (RandomNumberGenerator rng = RandomNumberGenerator.Create()) { rng.GetBytes(randombytes); } BigInteger randomNum = new BigInteger(randombytes); sb.EmitPushNumber(randomNum); sb.Emit(ThinNeo.VM.OpCode.DROP); array.AddArrayValue("(addr)" + address); array.AddArrayValue("(addr)" + addr); array.AddArrayValue("(int)" + sendValue); sb.EmitParamJson(array); sb.EmitPushString("transfer"); sb.EmitAppCall(new Hash160(assetid)); data = sb.ToArray(); } tran.type = ThinNeo.TransactionType.InvocationTransaction; var idata = new ThinNeo.InvokeTransData(); tran.extdata = idata; idata.script = data; idata.gas = 0; tran.inputs = new ThinNeo.TransactionInput[0]; tran.outputs = new ThinNeo.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); //sign and broadcast var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), priKey); tran.AddWitness(signdata, pubKey, address); var trandata = tran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); url = HttpHelper.MakeRpcUrlPost(Config.Ins.url, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata)); result = HttpHelper.HttpPost(url, postdata); Console.WriteLine(result); var j_result = MyJson.Parse(result).AsDict()["result"].AsList()[0].AsDict(); if (j_result["sendrawtransactionresult"].AsBool()) { nnsAward.txid = j_result["txid"].AsString(); nnsAward.maxBuyer = addr; nnsAward.maxBonus = Decimal128.Parse(value.ToString()); mongoHelper.ReplaceData(Config.Ins.Applyfornnc_Conn, Config.Ins.Applyfornnc_DB, Config.Ins.Applyfornnc_Coll, "{maxBuyer:\"" + addr + "\"}", nnsAward); } else { } } } catch (Exception e) { Console.WriteLine(e); return; } }
async Task test_claimSimple() { var addr = ThinNeo.Helper.GetAddressFromScriptHash(Config.sneo); byte[] postdata; var url = Helper.MakeRpcUrlPost(Config.api, "getclaimgas", out postdata, new MyJson.JsonNode_ValueString(addr)); var result = await Helper.HttpPost(url, postdata); //Console.WriteLine("得到的结果是:" + result); var json = MyJson.Parse(result).AsDict(); if (json.ContainsKey("result")) { //gas总量 var gas = json["result"].AsList()[0].AsDict()["gas"] + ""; //var gas = 0.00004; //Console.WriteLine("gas:" + gas); var claims = json["result"].AsList()[0].AsDict()["claims"].AsList(); //Console.WriteLine("claims:" + claims); //var assetIDStr = "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7"; //选择GAS支付合约调用费用 var assetID = HexString2Bytes(Config.id_GAS.Replace("0x", "")).Reverse().ToArray(); //构建交易体 ThinNeo.Transaction claimTran = new ThinNeo.Transaction { type = ThinNeo.TransactionType.ClaimTransaction,//领取Gas合约 attributes = new ThinNeo.Attribute[0], inputs = new ThinNeo.TransactionInput[0], outputs = new ThinNeo.TransactionOutput[1], extdata = new ThinNeo.ClaimTransData() }; claimTran.outputs[0] = new ThinNeo.TransactionOutput { assetId = assetID, toAddress = ThinNeo.Helper.GetPublicKeyHashFromAddress(this.address), value = Decimal.Parse("0.00006552") }; Console.WriteLine("claim addr:" + this.address); List <ThinNeo.TransactionInput> claimVins = new List <ThinNeo.TransactionInput>(); MyJson.JsonNode_Array array = (MyJson.JsonNode_Array)claims; MyJson.IJsonNode node = array[0]; Console.WriteLine("claims:" + node); claimVins.Add(new ThinNeo.TransactionInput { hash = ThinNeo.Debug.DebugTool.HexString2Bytes((node.AsDict()["txid"].ToString()).Replace("0x", "")).Reverse().ToArray(), index = ushort.Parse(node.AsDict()["n"].ToString()) }); (claimTran.extdata as ThinNeo.ClaimTransData).claims = claimVins.ToArray(); //做智能合约的签名 byte[] iscript = null; using (var sb = new ThinNeo.ScriptBuilder()) { sb.EmitPushString("whatever"); sb.EmitPushNumber(250); iscript = sb.ToArray(); } claimTran.AddWitnessScript(n55contract, iscript); var trandata = claimTran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); byte[] postdata2; url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata2, new MyJson.JsonNode_ValueString(strtrandata)); var result2 = await Helper.HttpPost(url, postdata2); Console.WriteLine("得到的结果是:" + result2); } }
//升级合约 async Task test_setUpgrade() { byte[] prikey_admin = ThinNeo.Helper.GetPrivateKeyFromWIF(Config.testwif_admin); byte[] pubkey_admin = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey_admin); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey_admin); Console.WriteLine(address); Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Config.api, address); //从文件中读取合约脚本 byte[] script = System.IO.File.ReadAllBytes("C:\\Neo\\SmartContracts\\0xe7bce3dde514813762b44a11bb5767f343dafb22.avm"); //这里填你的合约所在地址 string str_script = ThinNeo.Helper.Bytes2HexString(script); byte[] aa = ThinNeo.Helper.HexString2Bytes(str_script); var ss = 1 | 0 | 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.oracle; 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 = 510;// 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, prikey_admin); 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 HttpResponseMessage Get() { return(MyJson.ObjectToJson(GetApps())); }
async Task test_getRefund() { //if (lasttxid == null) //{ // Console.WriteLine("你还没有正确执行Refund"); // return; //} Console.WriteLine("refund txid:"); var lastTxid = Console.ReadLine(); string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(wneo_common.sc_wneo); Console.WriteLine("address=" + nep55_address); //获取地址的资产列表 Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Config.api, nep55_address); if (dir.ContainsKey(Config.id_NEO) == false) { Console.WriteLine("no neo"); return; } List <Utxo> newlist = new List <Utxo>(); foreach (var utxo in dir[Config.id_NEO]) { if (utxo.n == 0 && utxo.txid.ToString().Equals(lastTxid)) { newlist.Add(utxo); } } if (newlist.Count == 0) { Console.WriteLine("找不到要使用的UTXO"); return; } else { lastTxid = newlist[0].txid.ToString(); } {//检查是否是前面交易存储的 var ret = await wneo_common.api_InvokeScript(wneo_common.sc_wneo, "getRefundTarget", "(hex256)" + lastTxid); wneo_common.ResultItem item = ret.value; var value = ThinNeo.Helper.GetAddressFromScriptHash(item.subItem[0].AsHash160()); if (value.Length == 0)//未标记的UTXO,不能使用 { Console.WriteLine("这个utxo没有标记"); return; } if (value != this.address) { Console.WriteLine("这个utxo不是标记给你用的"); return; } } ThinNeo.Transaction tran = Helper.makeTran(newlist, address, new ThinNeo.Hash256(Config.id_NEO), newlist[0].value); tran.type = ThinNeo.TransactionType.ContractTransaction; tran.version = 0; //sign and broadcast {//做智能合约的签名 byte[] iscript = null; using (var sb = new ThinNeo.ScriptBuilder()) { sb.EmitPushNumber(0); sb.EmitPushNumber(0); iscript = sb.ToArray(); } tran.AddWitnessScript(n55contract, iscript); } var trandata = tran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); ThinNeo.Transaction testde = new ThinNeo.Transaction(); testde.Deserialize(new System.IO.MemoryStream(trandata)); byte[] postdata; var url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata)); string poststr = System.Text.Encoding.UTF8.GetString(postdata); Console.WriteLine("-----post info begin----"); Console.WriteLine(poststr); Console.WriteLine("-----post info end----"); var result = await Helper.HttpPost(url, postdata); Console.WriteLine("得到的结果是:" + result); var json = MyJson.Parse(result).AsDict(); if (json.ContainsKey("result")) { bool bSucc = false; if (json["result"].type == MyJson.jsontype.Value_Number) { bSucc = json["result"].AsBool(); Console.WriteLine("cli=" + json["result"].ToString()); } else { var resultv = json["result"].AsList()[0].AsDict(); var txid = resultv["txid"].AsString(); bSucc = txid.Length > 0; Console.WriteLine("txid=" + txid); } if (bSucc) { Nep55_1.lastNep5Tran = tran.GetHash(); Console.WriteLine("besucc txid=" + tran.GetHash().ToString()); } } }
public JArray downloadCompileFile(string hash, string type = ".all") { hash = format(hash); type = type.ToLower(); if (type == ".cs" || type == "cs") { return(new JArray { new JObject() { { "cs", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".cs")) } } }); } if (type == ".avm" || type == "avm") { return(new JArray { new JObject() { { "avm", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".avm")) } } }); } if (type == ".abi" || type == "abi") { return(new JArray { new JObject() { { "abi", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".abi.json")) } } }); } if (type == ".map" || type == "map") { return(new JArray { new JObject() { { "map", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".map.json")) } } }); } if (type == ".py" || type == "py") { return(new JArray { new JObject() { { "py", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".py")) } } }); } // 获取合约文件 string pathScript = ""; string str_avm = ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".avm")); string str_cs = ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".cs")); string str_py = ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".py")); var JO_map = (MyJson.IJsonNode)MyJson.Parse(ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".map.json"))); var JO_abi = (MyJson.IJsonNode)MyJson.Parse(ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".abi.json"))); JObject JO_result = new JObject(); JO_result["avm"] = str_avm; JO_result["cs"] = str_cs; JO_result["py"] = str_py; JO_result["map"] = JO_map?.ToString(); JO_result["abi"] = JO_abi?.ToString(); return(new JArray() { JO_result }); }
public MapFileData(string aFilePath) { //ファイルロード load(new Arg(MyJson.deserializeFile("Assets/resources/" + MyMap.mMapResourcesDirectory + "/map/" + aFilePath + ".json"))); }
private static void PubScDemo(string wif) { string assetid = "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7"; string api = "https://api.nel.group/api/testnet"; byte[] prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif); byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey); Dictionary <string, List <Utxo> > dir = GetBalanceByAddress(api, address); //从文件中读取合约脚本 byte[] script = System.IO.File.ReadAllBytes("dapp_nnc4.0.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 = 2; int need_canCharge = 4; string name = "XC"; string version = "1.0"; string auther = "Zhang"; string email = "0"; string description = "0"; using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder()) { var ss = need_storage; //倒叙插入数据 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 = MakeRpcUrlPost(api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish)); var result = 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(assetid), 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 = MakeRpcUrlPost(api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata)); result = HttpPost(url, postdata); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result); Console.WriteLine(resJO.ToString()); } ////byte[] prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif); //byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey); //string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey); //Dictionary<string, List<UTXO>> dic_UTXO = new Dictionary<string, List<UTXO>>(); ////读取合约avm文件 //byte[] script = System.IO.File.ReadAllBytes("NeoContracts.avm"); //Console.WriteLine("合约脚本:" + ThinNeo.Helper.Bytes2HexString(script)); //Console.WriteLine("合约脚本哈希:" + 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 = "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 ; // sb.EmitPushString(description); // sb.EmitPushString(email); // sb.EmitPushString(auther); // sb.EmitPushString(version); // sb.EmitPushString(name); // sb.EmitPushNumber(need_storage ); // 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 method = "invokescript"; // var url = Helper.MakeRpcUrlPost(api, method, out postdata, new MyJson.JsonNode_ValueString(scriptPublish)); // var result = await Helper.HttpPost(url, postdata); // var consume = // (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as // MyJson.JsonNode_Object)["gas_consumed"].ToString(); // decimal gas_consume = decimal.Parse(consume); // ThinNeo.InvokeTransData extdata = new InvokeTransData(); // extdata.script = sb.ToArray(); // extdata.gas = Math.Ceiling(gas_consume - 10); // ThinNeo.Transaction tran = MakeTran(dic_UTXO, null, new ThinNeo.Hash256(assetid), 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()); //} }
public HttpResponseMessage Get(int id) { var app = GetApps().Where(m => m.Id.Equals(id)).FirstOrDefault(); return(MyJson.ObjectToJson(app)); }
IEnumerator HTTP_nel_post_tan_gas(string toaddr, decimal num) { WWWForm www_getuxo_form = Helper.GetWWWFormPost("getutxo", new MyJson.JsonNode_ValueString(roleInfo.getInstance().address)); WWW www = new WWW(global.api, www_getuxo_form); yield return(www); Dictionary <string, List <Utxo> > _dir = get_utxo(www.text); if (_dir.ContainsKey(global.id_GAS) == false) { Debug.Log("no gas"); yield return(null); } string paparms; //拼接发给后台做验证的json字符串 MyJson.JsonNode_Object account = new MyJson.JsonNode_Object(); account["sbPushString"] = new MyJson.JsonNode_ValueString("transfer"); account["cnts"] = new MyJson.JsonNode_ValueString(num.ToString()); paparms = account.ToString(); Debug.Log(paparms); ThinNeo.Transaction tran = null; { tran = Helper.makeTran(_dir[global.id_GAS], toaddr, new ThinNeo.Hash256(global.id_GAS), num); } //sign and broadcast var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), roleInfo.getInstance().prikey); tran.AddWitness(signdata, roleInfo.getInstance().pubkey, roleInfo.getInstance().address); var trandata = tran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); WWWForm www_form_sendraw = Helper.GetWWWFormPost("sendrawtransaction", new MyJson.JsonNode_ValueString(strtrandata)); WWW sendraw = new WWW(global.api, www_form_sendraw); yield return(sendraw); var json = MyJson.Parse(sendraw.text).AsDict(); if (json.ContainsKey("result")) { var resultv = json["result"].AsList()[0].AsDict(); var txid = resultv["txid"].AsString(); if (txid.Length > 0) { //Nep55_1.lastNep5Tran = tran.GetHash(); } Debug.Log("txid=" + txid); api_tool._instance.addUserWalletLogs(roleInfo.getInstance().uid, roleInfo.getInstance().token, txid, "0", num.ToString(), "6", paparms, global.netType, "0", (bool timeout1, WWW www1) => { testtool.panel_main.on_refresh_WalletListss(); }); } else { Debug.Log("交易失败"); //testtool.showNotice("交易失败"); } }
async public Task Demo() { var lasthash = "0x0963614006fda9ebb3ecbc1a7bd604a393cfe66cf9234882abc860cdb4694970"; if (lasthash == null) { Console.WriteLine("你还没有正确执行N5 3"); return; } byte[] prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(Nep55_1.testwif); byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey); var scripthash = ThinNeo.Helper.GetPublicKeyHashFromAddress(address); var nep55_shash = new ThinNeo.Hash160(Nep55_1.nep55); string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(nep55_shash); Console.WriteLine("address=" + address); //获取地址的资产列表 Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Nep55_1.api, nep55_address); if (dir.ContainsKey(Nep55_1.id_GAS) == false) { Console.WriteLine("no gas"); return; } List <Utxo> newlist = new List <Utxo>(); foreach (var utxo in dir[Nep55_1.id_GAS]) { if (utxo.n == 0 && utxo.txid.ToString().Equals(lasthash)) { newlist.Add(utxo); } } if (newlist.Count == 0) { Console.WriteLine("找不到要使用的UTXO"); return; } {//检查utxo byte[] script = null; using (var sb = new ThinNeo.ScriptBuilder()) { var array = new MyJson.JsonNode_Array(); array.AddArrayValue("(hex256)" + newlist[0].txid.ToString()); sb.EmitParamJson(array); //参数倒序入 sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)getRefundTarget")); //参数倒序入 var shash = new ThinNeo.Hash160(Nep55_1.nep55); sb.EmitAppCall(shash); //nep5脚本 script = sb.ToArray(); } var urlCheckUTXO = Helper.MakeRpcUrl(Nep55_1.api, "invokescript", new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(script))); string resultCheckUTXO = await Helper.HttpGet(urlCheckUTXO); var jsonCU = MyJson.Parse(resultCheckUTXO); var stack = jsonCU.AsDict()["result"].AsList()[0].AsDict()["stack"].AsList()[0].AsDict(); var value = stack["value"].AsString(); if (value.Length == 0)//未标记的UTXO,不能使用 { Console.WriteLine("这个utxo没有标记"); return; } var hash = new ThinNeo.Hash160(ThinNeo.Helper.HexString2Bytes(value)); //if (hash.ToString()!= scripthash.ToString()) //{ // Console.WriteLine("这个utxo不是标记给你用的"); // return; //} } ThinNeo.Transaction tran = Helper.makeTran(newlist, address, new ThinNeo.Hash256(Nep55_1.id_GAS), newlist[0].value); tran.type = ThinNeo.TransactionType.ContractTransaction; tran.version = 0; //sign and broadcast {//做智能合约的签名 byte[] n55contract = null; { var urlgetscript = Helper.MakeRpcUrl(Nep55_1.api, "getcontractstate", new MyJson.JsonNode_ValueString(Nep55_1.nep55)); var resultgetscript = await Helper.HttpGet(urlgetscript); var _json = MyJson.Parse(resultgetscript).AsDict(); var _resultv = _json["result"].AsList()[0].AsDict(); n55contract = ThinNeo.Helper.HexString2Bytes(_resultv["script"].AsString()); } byte[] iscript = null; using (var sb = new ThinNeo.ScriptBuilder()) { sb.EmitPushNumber(0); sb.EmitPushNumber(0); iscript = sb.ToArray(); } tran.AddWitnessScript(n55contract, iscript); } var trandata = tran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); ThinNeo.Transaction testde = new ThinNeo.Transaction(); testde.Deserialize(new System.IO.MemoryStream(trandata)); byte[] postdata; var url = Helper.MakeRpcUrlPost(Nep55_1.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata)); //bug //sendraw api 有bug,所以先加这个 //url = "http://localhost:20332"; string poststr = System.Text.Encoding.UTF8.GetString(postdata); Console.WriteLine("-----post info begin----"); Console.WriteLine(poststr); Console.WriteLine("-----post info end----"); var result = await Helper.HttpPost(url, postdata); Console.WriteLine("得到的结果是:" + result); var json = MyJson.Parse(result).AsDict(); if (json.ContainsKey("result")) { bool bSucc = false; if (json["result"].type == MyJson.jsontype.Value_Number) { bSucc = json["result"].AsBool(); Console.WriteLine("cli=" + json["result"].ToString()); } else { var resultv = json["result"].AsList()[0].AsDict(); var txid = resultv["txid"].AsString(); bSucc = txid.Length > 0; Console.WriteLine("txid=" + txid); } if (bSucc) { Nep55_1.lastNep5Tran = tran.GetHash(); Console.WriteLine("besucc txid=" + tran.GetHash().ToString()); } } }
IEnumerator HTTP_nel_post_gas_sgas(decimal num) { WWWForm www_getuxo_form = Helper.GetWWWFormPost("getutxo", new MyJson.JsonNode_ValueString(roleInfo.getInstance().address)); WWW www = new WWW(global.api, www_getuxo_form); yield return(www); Dictionary <string, List <Utxo> > _dir = get_utxo(www.text); if (_dir.ContainsKey(global.id_GAS) == false) { Debug.Log("no gas"); } string paparms; ThinNeo.Transaction tran = null; { byte[] script = null; using (var sb = new ThinNeo.ScriptBuilder()) { var array = new MyJson.JsonNode_Array(); sb.EmitParamJson(array); //参数倒序入 sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)mintTokens")); //参数倒序入 ThinNeo.Hash160 shash = new ThinNeo.Hash160(global.id_sgas); sb.EmitAppCall(shash); //nep5脚本 script = sb.ToArray(); //拼接发给后台做验证的json字符串 MyJson.JsonNode_Object account = new MyJson.JsonNode_Object(); account["sbParamJson"] = array; account["sbPushString"] = new MyJson.JsonNode_ValueString("mintTokens"); account["nnc"] = new MyJson.JsonNode_ValueString(global.id_sgas); account["cnts"] = new MyJson.JsonNode_ValueString(num.ToString()); paparms = account.ToString(); Debug.Log(paparms); } var nep5scripthash = new ThinNeo.Hash160(global.id_sgas); var targetaddr = ThinNeo.Helper.GetAddressFromScriptHash(nep5scripthash); Debug.Log("contract address=" + targetaddr);//往合约地址转账 //生成交易 tran = Helper.makeTran(_dir[global.id_GAS], targetaddr, new ThinNeo.Hash256(global.id_GAS), num); tran.type = ThinNeo.TransactionType.InvocationTransaction; var idata = new ThinNeo.InvokeTransData(); tran.extdata = idata; idata.script = script; } //sign and broadcast var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), roleInfo.getInstance().prikey); tran.AddWitness(signdata, roleInfo.getInstance().pubkey, roleInfo.getInstance().address); var trandata = tran.GetRawData(); var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata); WWWForm www_form_sendraw = Helper.GetWWWFormPost("sendrawtransaction", new MyJson.JsonNode_ValueString(strtrandata)); WWW sendraw = new WWW(global.api, www_form_sendraw); yield return(sendraw); var json = MyJson.Parse(sendraw.text).AsDict(); if (json.ContainsKey("result")) { var resultv = json["result"].AsList()[0].AsDict(); var txid = resultv["txid"].AsString(); if (txid.Length > 0) { Debug.Log("txid=" + txid); api_tool._instance.addUserWalletLogs(roleInfo.getInstance().uid, roleInfo.getInstance().token, txid, "0", num.ToString(), "1", paparms, global.netType, "0", (bool timeout1, WWW www1) => { testtool.panel_main.on_refresh_WalletListss(); }); } else { Debug.Log("交易失败"); } } else { Debug.Log("交易失败"); } }
private void dapp_invokeScript(DApp_Func func) { try { var hash = dapp_getCallParam(func.call.scriptcall); var scrb = new ThinNeo.ScriptBuilder(); var jsonps = func.call.scriptparam; for (var i = jsonps.Length - 1; i >= 0; i--) { dapp_EmitParam(scrb, jsonps[i]); } scrb.EmitAppCall(hash); var callstr = ThinNeo.Helper.Bytes2HexString(scrb.ToArray()); var str = WWW.MakeRpcUrl(labelRPC.Text, "invokescript", new MyJson.JsonNode_ValueString(callstr)); var result = WWW.GetWithDialog(this, str); this.dapp_result.Text = ""; if (result == null) { this.dapp_result_raw.Text = "(null)"; } else { var json = MyJson.Parse(result).AsDict(); if (json.ContainsKey("error")) { this.dapp_result_raw.Text = json["error"].ToString(); } else { StringBuilder sb = new StringBuilder(); json["result"].AsDict().ConvertToStringWithFormat(sb, 4); this.dapp_result_raw.Text = sb.ToString(); //var gas = json["result"].AsDict()["gas_consumed"].ToString(); //this.dapp_result.Items.Add("Fee:" + gas); //var state = json["result"].AsDict()["state"].ToString(); //this.dapp_result.Items.Add("State:" + state); var stack = json["result"].AsDict()["stack"].AsList(); this.dapp_result.Text += ("StackCount=" + stack.Count) + "\r\n"; for (var i = 0; i < func.results.Length; i++) { var jsonresult = getJsonResult(stack, func.results[i].pos); if (jsonresult == null) { this.dapp_result.Text += (func.results[i].desc + "=" + "<miss>") + "\r\n"; } else { try { var outvalue = dapp_getResultValue(func.results[i].type, jsonresult); this.dapp_result.Text += (func.results[i].desc + "=" + outvalue) + "\r\n"; } catch { this.dapp_result.Text += (func.results[i].desc + "=" + "<error>") + "\r\n"; } } } } } } catch (Exception err) { this.dapp_result_raw.Text = "error=" + err.Message + "\r\n" + err.StackTrace; } }