Example #1
0
        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();
        }
Example #2
0
 public unsafe static void MyRefTest(TStdItem r)
 {
     // r.Name = "草泥马";
 }
Example #3
0
        /// <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);
        }