unsafe static void Main(string[] args) { GameBaseTest g1 = new GameBaseTest(); int n1 = g1.Parse(g1.GameConfig); Console.WriteLine(n1); Console.ReadKey(); return; GameBaseTest g = new GameBaseTest(); g.test(); Thread.Sleep(1000); g = new GameBaseTest(); g.test(); Console.ReadKey(); return; Console.Write(int.MaxValue); Console.ReadKey(); return; int sasdasdasdasd = sizeof(TUnbindInfo);//4491 int asdasd = Marshal.SizeOf(typeof(THumDataInfo)); Console.ReadLine(); DbSession dbsession = new DbSession("MyTest"); TDefaultMessage hun = new TDefaultMessage(); int HumSize = Marshal.SizeOf(hun); TStdItem a = new TStdItem(); MyRefTest(a); // Console.WriteLine(a.Name); IClientScoket socket = new IClientScoket(); socket.OnConnected += socket_OnConnected; socket.ReceivedDatagram += socket_ReceivedDatagram; socket.Connect("127.0.0.1", 6000); TDefaultMessage DefMsg = EncryptUnit.MakeDefaultMsg(1000, 0, 0, 0, 0, 0); TLoadHuman sLoadHuman = new TLoadHuman(); int aaaaaaaaaaaa = Marshal.SizeOf(sLoadHuman); sLoadHuman.sAccount = "123123"; sLoadHuman.sChrName = "啊啊啊啊"; sLoadHuman.sUserAddr = "127.0.0.1"; sLoadHuman.nSessionID = 15; byte[] sdata = StructToBytes(sLoadHuman); // string sDBMsg = EncryptUnit.EncodeMessage(DefMsg) + EncryptUnit.EncodeBuffer<TLoadHuman>(sLoadHuman); // socket.Send(SendDBSockMsg(0, sDBMsg)); Console.WriteLine("ok"); Console.ReadKey(); //TStdItem a = new TStdItem(); // MyRefTest(a); // Console.WriteLine(a.Name); TUnbindInfo abc = new TUnbindInfo(); int MySize = Marshal.SizeOf(abc); HUtil32._MIN(Int32.MaxValue, 14 + (int)Math.Floor(1 / (double)6 + 2.5 * 1)); Math.Round(Math.Round((double)50 / 100, 1), 1); decimal aaaaaaaaa = Round((decimal)Round((decimal)50.0 / 100, 1) * 368, 2); //string strss= EncryptUnit.EncodeBuffer(StructToBytes(a, Marshal.SizeOf(typeof(Struct1))), Marshal.SizeOf(typeof(Struct1))); Class1 b = new Class1(); b.Id = 1; b.Name = "张三"; string strbb = EncryptUnit.EncodeBuffer(ObjectToBytes(b), 8); b.Name = "张三"; //string a = "你好吗"; //sbyte[] by = new sbyte[StringToSBytePtr(a, null, 1) + 1]; //fixed (sbyte* pb = by) //{ // StringToSBytePtr(a, pb, 1); // string b = SBytePtrToString(pb, 1, by.Length - 1); // Console.WriteLine(b); //} //int nLen = StringToIntPtrPlusLen(a, (IntPtr)0, 0); //byte[] byy = new byte[nLen + 1]; //fixed (byte* pb = byy) //{ // StringToIntPtrPlusLen(a, (IntPtr)pb, 1); // string b = IntPtrPlusLenToString((IntPtr)pb, 1); // Console.WriteLine(b); //} Test t = new Test(); t.Main(); // THumDataInfo* HumanRcd = (THumDataInfo*)Marshal.AllocHGlobal(Marshal.SizeOf(typeof(THumDataInfo))); //byte[] data=new byte[sizeof(THumDataInfo)]; //fixed (byte* pb = data) //{ // *(THumDataInfo*)pb = *HumanRcd; //} TProcessMessage msg = new TProcessMessage(); int aaaaaaaaaaa = Marshal.SizeOf(typeof(TProcessMessage)); var arrayDouble = Enumerable.Range(1, 1024) .Select(i => (int)i) .ToArray(); fixed(int *p = arrayDouble) { var array2 = ToByte <int>(p, 1); //Assert.AreEqual(arrayDouble, array2); } int[,] arr4 = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } }; //byte[, ,] arr = new byte[8,4,4] //{ // { // {1,2},{1,2} // }, // { // {1,2},{1,2} // } //}; byte[, ,] arr = new byte[, , ] { { { 1, 2 }, { 1, 2 } }, { { 21, 22 }, { 21, 22 } }, { { 31, 32 }, { 31, 32 } } }; string sText = "G73"; int nValNo = 0; nValNo = HUtil32.Str_ToInt(sText.Substring(1, 2), -1); byte[] buff = System.Text.Encoding.GetEncoding("gb2312").GetBytes("我是测试字符串");; string str2 = string.Empty; for (int i = 0; i < 14; i++) { str2 += String.Format("{0:X2}", buff[i]) + ","; } string aa = System.Text.Encoding.GetEncoding("gb2312").GetString(buff); Console.WriteLine(str2); Console.WriteLine(aa); //Console.WriteLine(sizeof(TStdItem)); //Console.WriteLine(Marshal, sizeof(PTDealOffInfo)); string str = string.Empty; string FColor = string.Empty; string BColor = string.Empty; string nTime = string.Empty; string sMsg = "{180,251} 3 战斗区域"; sMsg = HUtil32.ArrestStringEx(sMsg, "{", "}", ref str); str = HUtil32.GetValidStrCap(str, ref FColor, new string[] { "," }); str = HUtil32.GetValidStrCap(str, ref BColor, new string[] { "," }); str = HUtil32.GetValidStrCap(str, ref nTime, new string[] { "," }); Console.WriteLine(MakeWord((byte)255, (byte)56)); //m_CanJmpScriptLableList = new List<string>(); //string msg = @"欢迎,我能为你做点什么?\ \<买/@buy> 物品\<卖/@sell> 物品\<特修毒符/@s_repair>\<询问/@questionprize> 物品详细情况 \<离 开/@exit>\"; //GetScriptLabel(msg); //Console.WriteLine(sizeof(TClientMagic)); //Console.WriteLine(Marshal.SizeOf(typeof(TClientMagic))); //int ccc = sizeof(TClientMagic); //@@rmst //strLen = sLabel.Substring(0, sLabel.Length - 1); //s18 = sLabel.Substring(strLen.Length + 1, sLabel.Length - strLen.Length); //Console.WriteLine(m_CanJmpScriptLableList.Count); //string aaaa= sub_49ADB8("<$USERNAME>加入游戏,<$SERVERNAME>又多了一份力量!", "<$USERNAME>", "1234"); //aaaa = sub_49ADB8(aaaa, "<$SERVERNAME>", "12345"); Console.ReadKey(); }
public unsafe static void MyRefTest(TStdItem r) { // r.Name = "草泥马"; }
/// <summary> /// 加载物品数据 /// </summary> /// <returns></returns> internal unsafe int LoadItemsDB() { int result = -1; int Idx; TStdItem * StdItem; IDataReader dr = null; const string sSQLString = "SELECT IDX,NAME,STDMODE,SHAPE,WEIGHT,ANICOUNT,SOURCE,RESERVED,LOOKS,DURAMAX,AC,AC2,MAC,MAC2,DC,DC2,MC,MC2,SC,SC2,NEED,NEEDLEVEL,PRICE,STOCK FROM TBL_STDITEMS"; HUtil32.EnterCriticalSection(M2Share.ProcessHumanCriticalSection); try { try { foreach (var item in UserEngine.StdItemList) { if (item != null) { Dispose(item); } } UserEngine.StdItemList.Clear(); try { dr = DBsession.ExecuteReader(sSQLString); } catch { MainOutMessage("链接数据库发生异常..."); } finally { result = -2; } if (dr == null) //2013.04.16 Fixed dr为空时Read报错 { return(result); } while (dr.Read()) { Idx = dr.GetInt32("Idx");// 序号 StdItem = (TStdItem *)Marshal.AllocHGlobal(sizeof(TStdItem)); HUtil32.ZeroMemory(StdItem, sizeof(TStdItem)); HUtil32.StrToSByteArry(dr.GetString("Name"), StdItem->Name, 14, ref StdItem->NameLen); StdItem->StdMode = dr.GetByte("StdMode"); // 分类号 StdItem->Shape = dr.GetByte("Shape"); // 装备外观 StdItem->Weight = dr.GetByte("Weight"); // 重量 StdItem->AniCount = HUtil32.IntToByte(dr.GetInt32("AniCount")); // 保留 StdItem->Source = dr.GetSByte("Source"); StdItem->Reserved = HUtil32.IntToByte(dr.GetInt32("Reserved")); // 保留 StdItem->Looks = dr.GetUInt16("Looks"); // 物品外观 StdItem->DuraMax = dr.GetUInt16("DuraMax"); // 持久力 StdItem->Reserved1 = 0; StdItem->AC = TStdItem.MakeAC(dr.GetInt32("Ac"), dr.GetInt32("Ac2"), GameConfig.nItemsACPowerRate); //物理防御 StdItem->MAC = TStdItem.MakeMAC(dr.GetInt32("Mac"), dr.GetInt32("Mac2"), GameConfig.nItemsACPowerRate); //魔法防御 StdItem->DC = TStdItem.MakeDC(dr.GetInt32("Dc"), dr.GetInt32("Dc2"), GameConfig.nItemsPowerRate); //物理攻击 StdItem->MC = TStdItem.MakeMC(dr.GetInt32("Mc"), dr.GetInt32("Mc2"), GameConfig.nItemsPowerRate); //魔法攻击 StdItem->SC = TStdItem.MakeSC(dr.GetInt32("Sc"), dr.GetInt32("Sc2"), GameConfig.nItemsPowerRate); //道术 StdItem->Need = dr.GetInt32("Need"); // 附加条件 StdItem->NeedLevel = dr.GetInt32("NeedLevel"); // 需要等级 StdItem->Price = dr.GetInt32("Price"); // 价格 StdItem->Stock = dr.GetInt32("Stock"); // 库存 StdItem->NeedIdentify = M2Share.GetGameLogItemNameList(dr.GetString("Name")); if (UserEngine.StdItemList.Count == Idx) { UserEngine.StdItemList.Add((IntPtr)StdItem); result = 1; } else { MainOutMessage(string.Format("加载物品[Idx:{0} Name:{1}]数据失败!!!", Idx, dr.GetString("Name"))); result = -100; return(result); } } M2Share.g_boGameLogGold = M2Share.GetGameLogItemNameList(M2Share.sSTRING_GOLDNAME) == 1; M2Share.g_boGameLogHumanDie = M2Share.GetGameLogItemNameList(GameMsgDef.g_sHumanDieEvent) == 1; M2Share.g_boGameLogGameGold = M2Share.GetGameLogItemNameList(M2Share.g_Config.sGameGoldName) == 1; M2Share.g_boGameLogGameDiaMond = M2Share.GetGameLogItemNameList(M2Share.g_Config.sGameDiaMond) == 1; // 是否写入日志(调整金刚石) M2Share.g_boGameLogGameGird = M2Share.GetGameLogItemNameList(M2Share.g_Config.sGameGird) == 1; // 是否写入日志(调整灵符) M2Share.g_boGameLogGameGlory = M2Share.GetGameLogItemNameList(M2Share.g_Config.sGameGlory) == 1; // 是否写入日志(调整荣誉值) M2Share.g_boGameLogGamePoint = M2Share.GetGameLogItemNameList(M2Share.g_Config.sGamePointName) == 1; } finally { if (dr != null) { dr.Close(); dr.Dispose(); } } } finally { HUtil32.LeaveCriticalSection(M2Share.ProcessHumanCriticalSection); } return(result); }