Пример #1
0
        /// <summary>
        /// 删除英雄数据
        /// </summary>
        /// <param name="sMsg"></param>
        private void DeleteHeroRcd(string sMsg)
        {
            string       sData;
            string       sAccount = string.Empty;
            string       sChrName = string.Empty;
            bool         boCheck;
            int          n10;
            int          n12;
            HumInfo      HumRecord;
            THumDataInfo HumanRCD;

            n12     = 0;
            sData   = EncryptUnit.DeCodeString(sMsg);
            sData   = HUtil32.GetValidStr3(sData, ref sAccount, new string[] { "/" });
            sData   = HUtil32.GetValidStr3(sData, ref sChrName, new string[] { "/" });
            boCheck = false;
            try
            {
                HumRecord = DBShare.g_HumCharDB.FindObjectByChrName(sChrName);
                if (HumRecord != null)
                {
                    //HumRecord = DBShare.g_HumCharDB.FindObjectByChrName(sChrName);
                    if (HumRecord != null && HumRecord.boIsHero.Value)
                    {
                        if (DBShare.g_HumCharDB.Delete(sChrName))
                        {
                            n12 = 1;
                        }
                        DBShare.g_nDeleteHeroCount++;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            if (n12 == 1)
            {
                try
                {
                    HumanRCD = DBShare.g_HumDataDB.Get(sChrName);
                    if (HumanRCD.Header.NameLen > 0)
                    {
                        if (HumanRCD.Header.NameLen > 0 && HumanRCD.Header.boIsHero)
                        {
                            if (DBShare.g_HumDataDB.Delete(sChrName))
                            {
                                n12 = 1;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            m_DefMsg = EncryptUnit.MakeDefaultMsg(Common.DBR_DELHERORCD, n12, 0, 0, 0);
            SendSocket(EncryptUnit.EncodeMessage(m_DefMsg));
        }
Пример #2
0
        /// <summary>
        /// 添加会话
        /// </summary>
        /// <param name="sData"></param>
        private void ProcessAddSession(string sData)
        {
            string            sAccount = string.Empty;
            string            s10      = string.Empty;
            string            s14      = string.Empty;
            string            s18      = string.Empty;
            string            sIPaddr  = string.Empty;
            TGlobaSessionInfo GlobaSessionInfo;

            sData                        = HUtil32.GetValidStr3(sData, ref sAccount, new string[] { "/" });
            sData                        = HUtil32.GetValidStr3(sData, ref s10, new string[] { "/" });
            sData                        = HUtil32.GetValidStr3(sData, ref s14, new string[] { "/" });
            sData                        = HUtil32.GetValidStr3(sData, ref s18, new string[] { "/" });
            sData                        = HUtil32.GetValidStr3(sData, ref sIPaddr, new string[] { "/" });
            GlobaSessionInfo             = new TGlobaSessionInfo();
            GlobaSessionInfo.sAccount    = sAccount;
            GlobaSessionInfo.sIPaddr     = sIPaddr;
            GlobaSessionInfo.nSessionID  = HUtil32.Str_ToInt(s10, 0);
            GlobaSessionInfo.n24         = HUtil32.Str_ToInt(s14, 0);
            GlobaSessionInfo.boStartPlay = false;
            GlobaSessionInfo.boLoadRcd   = false;
            //GlobaSessionInfo.boHeroLoadRcd = false;
            GlobaSessionInfo.dwAddTick = HUtil32.GetTickCount();
            GlobaSessionInfo.dAddDate  = DateTime.Now;
            //GlobaSessionInfo.boRandomCode = false;
            GlobaSessionList.Add(GlobaSessionInfo);
        }
Пример #3
0
        /// <summary>
        /// 加载英雄数据
        /// </summary>
        /// <param name="sAccount"></param>
        /// <param name="sCharName"></param>
        /// <param name="sStr"></param>
        /// <param name="nCertCode"></param>
        /// <param name="HumanRcd"></param>
        /// <returns></returns>
        public unsafe static bool LoadHeroRcd(string sAccount, string sCharName, string sStr, int nCertCode, THumDataInfo *HumanRcd)
        {
            bool            result;
            TDefaultMessage DefMsg;
            int             nQueryID     = 0;
            int             nIdent       = 0;
            int             nRecog       = 0;
            string          sHumanRcdStr = string.Empty;
            string          sDBMsg       = string.Empty;
            string          sDBCharName;

            nQueryID = GetQueryID(M2Share.g_Config);
            DefMsg   = EncryptUnit.MakeDefaultMsg(Common.DB_LOADHERORCD, 0, 0, 0, 0, 0);
            TLoadHuman LoadHuman = new TLoadHuman();

            LoadHuman.sAccount   = sAccount;
            LoadHuman.sChrName   = sCharName;
            LoadHuman.sUserAddr  = sStr;
            LoadHuman.nSessionID = nCertCode;
            byte[] data = HUtil32.StructToBytes(LoadHuman);
            sDBMsg = EncryptUnit.EncodeMessage(DefMsg) + EncryptUnit.EncodeBuffer(data, Marshal.SizeOf(LoadHuman));
            SendDBSockMsg(nQueryID, sDBMsg);
            if (GetDBSockMsg(nQueryID, ref nIdent, ref nRecog, ref sHumanRcdStr, M2Share.g_Config.dwGetDBSockMsgTime, true, "LoadHeroRcd(" + sAccount + "/" + sCharName + ")"))
            {
                result = false;
                if (nIdent == Common.DB_LOADHERORCD)
                {
                    if (nRecog == 1)
                    {
                        sHumanRcdStr = HUtil32.GetValidStr3(sHumanRcdStr, ref sDBMsg, new string[] { "/" });
                        sDBCharName  = EncryptUnit.DeCodeString(sDBMsg);
                        if (sDBCharName == sCharName)
                        {
                            if (HUtil32.GetCodeMsgSize(sizeof(THumDataInfo) * 4 / 3) == sHumanRcdStr.Length)
                            {
                                EncryptUnit.DecodeBuffer(sHumanRcdStr, HumanRcd, sizeof(THumDataInfo));
                                result = true;
                            }
                        }
                        else
                        {
                            result = false;
                        }
                    }
                    else
                    {
                        result = false;
                    }
                }
                else
                {
                    result = false;
                }
            }
            else
            {
                result = false;
            }
            return(result);
        }
Пример #4
0
        public bool LoadCustomItemName()
        {
            bool        result;
            TStringList LoadList;
            string      sFileName;
            string      sLineText;
            string      sMakeIndex = string.Empty;
            string      sItemIndex = string.Empty;
            int         nMakeIndex = 0;
            int         nItemIndex = 0;
            string      sItemName  = string.Empty;
            TItemName   ItemName;

            result    = false;
            sFileName = M2Share.g_Config.sEnvirDir + "ItemNameList.txt";
            LoadList  = new TStringList();
            if (File.Exists(sFileName))
            {
                lock (m_ItemNameList)
                    try {
                        if (m_ItemNameList.Count > 0)
                        {
                            m_ItemNameList.Clear();
                        }
                        LoadList.LoadFromFile(sFileName);
                        for (int I = 0; I < LoadList.Count; I++)
                        {
                            sLineText  = LoadList[I].Trim();
                            sLineText  = HUtil32.GetValidStr3(sLineText, ref sMakeIndex, new string[] { " ", "\09" });
                            sLineText  = HUtil32.GetValidStr3(sLineText, ref sItemIndex, new string[] { " ", "\09" });
                            sLineText  = HUtil32.GetValidStr3(sLineText, ref sItemName, new string[] { " ", "\09" });
                            nMakeIndex = HUtil32.Str_ToInt(sMakeIndex, -1);
                            nItemIndex = HUtil32.Str_ToInt(sItemIndex, -1);
                            if ((nMakeIndex >= 0) && (nItemIndex >= 0))
                            {
                                ItemName            = new TItemName();
                                ItemName.nMakeIndex = nMakeIndex;
                                ItemName.nItemIndex = nItemIndex;
                                ItemName.sItemName  = sItemName;
                                m_ItemNameList.Add(ItemName);
                            }
                        }
                        result = true;
                    } finally {
                    }
            }
            else
            {
                LoadList.SaveToFile(sFileName);
            }
            Dispose(LoadList);
            return(result);
        }
Пример #5
0
        private void AutoRunOfOnWeek(TAutoRunInfo AutoRunInfo, Object PlayObject)
        {
            int       nMIN;
            int       nHOUR;
            int       nWeek;
            DayOfWeek wWeek;
            int       wHour;
            int       wMin;
            int       wSec;
            int       wMSec;
            string    sMIN      = string.Empty;
            string    sHOUR     = string.Empty;
            string    sWeek     = string.Empty;
            string    sLineText = string.Empty;
            string    sLabel    = string.Empty;

            sLineText = AutoRunInfo.sParam1;
            sLineText = HUtil32.GetValidStr3(sLineText, ref sWeek, new string[] { ":" });
            sLineText = HUtil32.GetValidStr3(sLineText, ref sHOUR, new string[] { ":" });
            sLineText = HUtil32.GetValidStr3(sLineText, ref sMIN, new string[] { ":" });
            nWeek     = HUtil32.Str_ToInt(sWeek, -1);
            nHOUR     = HUtil32.Str_ToInt(sHOUR, -1);
            nMIN      = HUtil32.Str_ToInt(sMIN, -1);
            sLabel    = AutoRunInfo.sParam2;
            wHour     = DateTime.Now.Hour;
            wMin      = DateTime.Now.Minute;
            wSec      = DateTime.Now.Second;
            wMSec     = DateTime.Now.Millisecond;
            wWeek     = DateTime.Now.DayOfWeek;
            if ((nWeek >= 1 && nWeek <= 7) && (nHOUR >= 0 && nHOUR <= 24) && (nMIN >= 0 && nMIN <= 60))
            {
                if ((wWeek.Equals(nWeek)) && (wHour == nHOUR))
                {
                    if ((wMin == nMIN))
                    {
                        if (!AutoRunInfo.boStatus)
                        {
                            M2Share.g_RobotNPC.GotoLable(((TPlayObject)(PlayObject)), AutoRunInfo.sParam2, false);
                            AutoRunInfo.boStatus = true;
                        }
                    }
                    else
                    {
                        AutoRunInfo.boStatus = false;
                    }
                }
            }
        }
Пример #6
0
        private void GetCancelAdmission(string sData)
        {
            string       SC = string.Empty;
            string       sSessionID;
            const string sExceptionMsg = "{异常} TFrmIdSoc::GetCancelAdmission";

            try
            {
                sSessionID = HUtil32.GetValidStr3(sData, ref SC, new string[] { "/" });
                DelSession(HUtil32.Str_ToInt(sSessionID, 0));
            }
            catch
            {
                M2Share.MainOutMessage(sExceptionMsg);
            }
        }
Пример #7
0
        /// <summary>
        /// 处理消息
        /// </summary>
        private void ProcessSocketMsg()
        {
            string sScoketText;
            string sData = string.Empty;
            string sCode = string.Empty;
            string sBody;
            int    nIdent;
            int    nC;

            nC          = 0;
            sScoketText = m_sSockMsg;
            while ((sScoketText.IndexOf(')') > 0))
            {
                sScoketText = HUtil32.ArrestStringEx(sScoketText, "(", ")", ref sData);
                if (sData == string.Empty)
                {
                    break;
                }
                sBody  = HUtil32.GetValidStr3(sData, ref sCode, new string[] { "/" });
                nIdent = HUtil32.Str_ToInt(sCode, 0);
                switch (nIdent)
                {
                case Common.SS_OPENSESSION:    // 100
                    ProcessAddSession(sBody);
                    break;

                case Common.SS_CLOSESESSION:    // 101
                    ProcessDelSession(sBody);
                    break;

                case Common.SS_KEEPALIVE:    // 104
                    ProcessGetOnlineCount(sBody);
                    break;

                default:
                    if (nC > 0)
                    {
                        sScoketText = "";
                        break;
                    }
                    nC++;
                    break;
                }
            }
            m_sSockMsg = sScoketText;
        }
Пример #8
0
        public bool AttackTarget()
        {
            bool     result = false;
            int      nX;
            int      nY;
            int      nPower;
            string   str;
            string   Str1 = "";
            string   s30  = "";
            string   s2C  = "";
            TAbility WAbil;

            try
            {
                if ((HUtil32.GetTickCount() - this.m_dwHitTick) > this.m_nNextHitTime)
                {
                    this.m_dwHitTick = HUtil32.GetTickCount();
                    if (s_AttickXY.IndexOf("|") > 0) // 根据配置文件的攻击坐标,发消息显示场景
                    {
                        WAbil  = this.m_WAbil;
                        nPower = (HUtil32.Random(((short)HUtil32.HiWord(WAbil.DC) - HUtil32.LoWord(WAbil.DC)) + 1) + HUtil32.LoWord(WAbil.DC));
                        str    = s_AttickXY;
                        for (int I = 0; I <= AttackTarget_IsChar(s_AttickXY); I++)
                        {
                            str = HUtil32.GetValidStr3(str, ref Str1, new string[] { "|" });
                            if (Str1 != "")
                            {
                                s30 = HUtil32.GetValidStr3(Str1, ref s2C, new string[] { ",", "\09" });// X,Y
                                nX  = HUtil32.Str_ToInt(s2C, 0);
                                nY  = HUtil32.Str_ToInt(s30, 0);
                                MagBigExplosion(nPower, nX, nY, 1);
                            }
                        }
                    }
                    result = true;
                }
            }
            catch
            {
                M2Share.MainOutMessage("{异常} TFireDragonGuard.AttackTarget");
            }
            return(result);
        }
Пример #9
0
        private void GetServerLoad(string sData)
        {
            string SC  = string.Empty;
            string s10 = string.Empty;
            string s14 = string.Empty;
            string s18 = string.Empty;
            string s1C = string.Empty;

            sData = HUtil32.GetValidStr3(sData, ref SC, new string[] { "/" });
            sData = HUtil32.GetValidStr3(sData, ref s10, new string[] { "/" });
            sData = HUtil32.GetValidStr3(sData, ref s14, new string[] { "/" });
            sData = HUtil32.GetValidStr3(sData, ref s18, new string[] { "/" });
            sData = HUtil32.GetValidStr3(sData, ref s1C, new string[] { "/" });
            M2Share.nCurrentMonthly        = HUtil32.Str_ToInt(SC, 0);
            M2Share.nLastMonthlyTotalUsage = HUtil32.Str_ToInt(s10, 0);
            M2Share.nTotalTimeUsage        = HUtil32.Str_ToInt(s14, 0);
            M2Share.nGrossTotalCnt         = HUtil32.Str_ToInt(s18, 0);
            M2Share.nGrossResetCnt         = HUtil32.Str_ToInt(s1C, 0);
        }
Пример #10
0
        private void AutoRunOfOnDay(TAutoRunInfo AutoRunInfo)
        {
            int    nMIN;
            int    nHOUR;
            int    wHour;
            int    wMin;
            int    wSec;
            int    wMSec;
            string sMIN      = string.Empty;
            string sHOUR     = string.Empty;
            string sLineText = string.Empty;
            string sLabel    = string.Empty;

            sLineText = AutoRunInfo.sParam1;
            sLineText = HUtil32.GetValidStr3(sLineText, ref sHOUR, new string[] { ":" });
            sLineText = HUtil32.GetValidStr3(sLineText, ref sMIN, new string[] { ":" });
            nHOUR     = HUtil32.Str_ToInt(sHOUR, -1);
            nMIN      = HUtil32.Str_ToInt(sMIN, -1);
            sLabel    = AutoRunInfo.sParam2;
            wHour     = DateTime.Now.Hour;
            wMin      = DateTime.Now.Minute;
            wSec      = DateTime.Now.Second;
            wMSec     = DateTime.Now.Millisecond;
            if ((nHOUR >= 0 && nHOUR <= 24) && (nMIN >= 0 && nMIN <= 60))
            {
                if ((wHour == nHOUR))
                {
                    if ((wMin == nMIN))
                    {
                        if (!AutoRunInfo.boStatus)
                        {
                            M2Share.g_RobotNPC.GotoLable(this, AutoRunInfo.sParam2, false);
                            AutoRunInfo.boStatus = true;
                        }
                    }
                    else
                    {
                        AutoRunInfo.boStatus = false;
                    }
                }
            }
        }
Пример #11
0
        static unsafe void socket_ReceivedDatagram(object sender, NetFramework.DSCClientDataInEventArgs e)
        {
            var    HumanRcd = new THumDataInfo();
            int    a = 0, b = 0;
            string c = string.Empty;

            GetDBSockMsg(e.Data, 0, ref a, ref b, ref c, 0, true, "");
            string sDBMsg = string.Empty;

            c = HUtil32.GetValidStr3(c, ref sDBMsg, new string[] { "/" });

            int DataSize = Marshal.SizeOf(HumanRcd);


            MyTestInfo testinfo = new MyTestInfo();

            EncryptUnit.DecodeBuffer(c, ref HumanRcd);

            //TUserItem* bbbbbbbb= (TUserItem*)testinfo.UserItem;
        }
Пример #12
0
        /// <summary>
        /// 删除会话
        /// </summary>
        /// <param name="sData"></param>
        private void ProcessDelSession(string sData)
        {
            string            sAccount = string.Empty;
            int               I;
            int               nSessionID;
            TGlobaSessionInfo GlobaSessionInfo;

            sData      = HUtil32.GetValidStr3(sData, ref sAccount, new string[] { "/" });
            nSessionID = HUtil32.Str_ToInt(sData, 0);
            for (I = 0; I < GlobaSessionList.Count; I++)
            {
                GlobaSessionInfo = GlobaSessionList[I];
                if (GlobaSessionInfo != null)
                {
                    if ((GlobaSessionInfo.nSessionID == nSessionID) && (GlobaSessionInfo.sAccount == sAccount))
                    {
                        GlobaSessionList.RemoveAt(I);
                        break;
                    }
                }
            }
        }
Пример #13
0
        static unsafe void socket_ReceivedDatagram(object sender, NetFramework.DSCClientDataInEventArgs e)
        {
            var    HumanRcd = new THumDataInfo();
            int    a = 0, b = 0;
            string c = string.Empty;

            GetDBSockMsg(e.Data, 0, ref a, ref b, ref c, 0, true, "");
            string sDBMsg = string.Empty;

            c = HUtil32.GetValidStr3(c, ref sDBMsg, new string[] { "/" });
            int DataSize = Marshal.SizeOf(HumanRcd);

            if (HUtil32.GetCodeMsgSize(DataSize * 4 / 3) == c.Length)
            {
                EncryptUnit.DecodeBuffer <THumDataInfo>(c, ref HumanRcd);
            }
            //if (HumanRcd.Data.BagItems[0] != null)
            //{
            //    TUserItem hun = new TUserItem();
            //    int HumSize = Marshal.SizeOf(hun);
            //}
        }
Пример #14
0
        private void LoadRobot()
        {
            TStringList      LoadList;
            string           sFileName       = string.Empty;
            string           sLineText       = string.Empty;
            string           sRobotName      = string.Empty;
            string           sScriptFileName = string.Empty;
            string           sRobotType      = string.Empty;
            TPlayRobotObject RobotHuman;

            sFileName = M2Share.g_Config.sEnvirDir + "Robot.txt";
            if (File.Exists(sFileName))
            {
                LoadList = new TStringList();
                LoadList.LoadFromFile(sFileName);
                if (LoadList.Count > 0)
                {
                    for (int I = 0; I < LoadList.Count; I++)
                    {
                        sLineText = LoadList[I];
                        if ((sLineText != "") && (sLineText[0] != ';'))
                        {
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sRobotName, new string[] { " ", "/", "\09" });
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sScriptFileName, new string[] { " ", "/", "\09" });
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sRobotType, new string[] { " ", "/", "\09" });
                            if ((sRobotName != "") && (sScriptFileName != "") && (sRobotType == "1"))
                            {
                                RobotHuman                   = new TPlayRobotObject();
                                RobotHuman.m_sCharName       = sRobotName;
                                RobotHuman.m_sScriptFileName = sScriptFileName;
                                RobotHuman.LoadScript();
                                RobotHumanList.Add(RobotHuman);
                            }
                        }
                    }
                }
                Dispose(LoadList);
            }
        }
Пример #15
0
        private void GetCancelAdmissionA(string sData)
        {
            int          nSessionID;
            string       sSessionID;
            string       sAccount      = string.Empty;
            const string sExceptionMsg = "{异常} FrmIdSoc::GetCancelAdmissionA";

            try
            {
                sSessionID = HUtil32.GetValidStr3(sData, ref sAccount, new string[] { "/" });
                nSessionID = HUtil32.Str_ToInt(sSessionID, 0);
                if (!M2Share.g_Config.boTestServer)
                {
                    M2Share.UserEngine.HumanExpire(sAccount);
                    DelSession(nSessionID);
                }
            }
            catch
            {
                M2Share.MainOutMessage(sExceptionMsg);
            }
        }
Пример #16
0
 public void LoadUserLimit()
 {
     TStringList LoadList;
     string sFileName = string.Empty;
     int I;
     int nC;
     string sLineText = string.Empty;
     string sServerName = string.Empty;
     string s10 = string.Empty;
     string s14 = string.Empty;
     nC = 0;
     sFileName = ".\\!UserLimit.txt";
     if (File.Exists(sFileName))
     {
         LoadList = new TStringList();
         LoadList.LoadFromFile(sFileName);
         for (I = 0; I < LoadList.Count; I++)
         {
             sLineText = LoadList[I];
             sLineText = HUtil32.GetValidStr3(sLineText, ref sServerName, new string[] { " ", "\t" });
             sLineText = HUtil32.GetValidStr3(sLineText, ref s10, new string[] { " ", "\t" });
             sLineText = HUtil32.GetValidStr3(sLineText, ref s14, new string[] { " ", "\t" });
             if (sServerName != "")
             {
                 UserLimit[nC].sServerName = sServerName;
                 UserLimit[nC].sName = s10;
                 UserLimit[nC].nLimitCountMax = HUtil32.Str_ToInt(s14, 3000);
                 UserLimit[nC].nLimitCountMin = 0;
                 nC++;
             }
         }
         nUserLimit = nC;
     }
     else
     {
         MessageBox.Show("[Critical Failure] file not found. .\\!UserLimit.txt");
     }
 }
Пример #17
0
        private void GetPasswdSuccess(string sData)
        {
            string       sAccount      = string.Empty;
            string       sSessionID    = string.Empty;
            string       sPayCost      = string.Empty;
            string       sIPaddr       = string.Empty;
            string       sPayMode      = string.Empty;
            const string sExceptionMsg = "{异常} TFrmIdSoc::GetPasswdSuccess";

            try
            {
                sData = HUtil32.GetValidStr3(sData, ref sAccount, new string[] { "/" });
                sData = HUtil32.GetValidStr3(sData, ref sSessionID, new string[] { "/" });
                sData = HUtil32.GetValidStr3(sData, ref sPayCost, new string[] { "/" }); // boPayCost
                sData = HUtil32.GetValidStr3(sData, ref sPayMode, new string[] { "/" }); // nPayMode
                sData = HUtil32.GetValidStr3(sData, ref sIPaddr, new string[] { "/" });  // sIPaddr
                NewSession(sAccount, sIPaddr, HUtil32.Str_ToInt(sSessionID, 0), HUtil32.Str_ToInt(sPayCost, 0), HUtil32.Str_ToInt(sPayMode, 0));
            }
            catch
            {
                M2Share.MainOutMessage(sExceptionMsg);
            }
        }
Пример #18
0
        public override void UserSelect(TPlayObject PlayObject, string sData)
        {
            string       s18;
            string       s20;
            string       sMsg   = string.Empty;
            string       sLabel = string.Empty;
            bool         boCanJmp;
            const string sExceptionMsg = "{异常} TCastleManager::UserSelect... ";

            base.UserSelect(PlayObject, sData);
            try
            {
                if (this.m_Castle == null)
                {
                    PlayObject.SysMsg("NPC不属于城堡!!!", TMsgColor.c_Red, TMsgType.t_Hint);
                    return;
                }
                if ((sData != "") && (sData[0] == '@'))
                {
                    sMsg = HUtil32.GetValidStr3(sData, ref sLabel, new string[] { "\r" });
                    s18  = "";
                    PlayObject.m_sScriptLable = sData;
                    if (this.m_Castle.IsMasterGuild(PlayObject.m_MyGuild))
                    {
                        boCanJmp = PlayObject.LableIsCanJmp(sLabel);
                        if ((sLabel).ToLower().CompareTo((M2Share.sSL_SENDMSG).ToLower()) == 0)
                        {
                            if (sMsg == "")
                            {
                                return;
                            }
                        }
                        this.GotoLable(PlayObject, sLabel, !boCanJmp);
                        // GotoLable(PlayObject,sLabel,not PlayObject.LableIsCanJmp(sLabel));
                        if (!boCanJmp)
                        {
                            return;
                        }
                        if ((sLabel).ToLower().CompareTo((M2Share.sSL_SENDMSG).ToLower()) == 0)
                        {
                            SendCustemMsg(PlayObject, sMsg);
                            PlayObject.SendMsg(this, Grobal2.RM_MENU_OK, 0, this.ToInt(), 0, 0, s18);
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sCASTLENAME).ToLower()) == 0)
                        {
                            if (PlayObject.IsGuildMaster())
                            {
                                sMsg = sMsg.Trim();
                                if (sMsg != "")
                                {
                                    this.m_Castle.m_sName = sMsg;
                                    this.m_Castle.Save();
                                    this.m_Castle.m_MasterGuild.RefMemberName();
                                    s18 = "城堡名称更改成功...";
                                }
                                else
                                {
                                    s18 = "城堡名称更改失败!!!";
                                }
                                PlayObject.SendMsg(this, Grobal2.RM_MENU_OK, 0, this.ToInt(), 0, 0, s18);
                            }
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sWITHDRAWAL).ToLower()) == 0)
                        {
                            switch (this.m_Castle.WithDrawalGolds(PlayObject, HUtil32.Str_ToInt(sMsg, 0)))
                            {
                            case -4:    // 取回金币
                                s18 = "输入的金币数不正确!!!";
                                break;

                            case -3:
                                s18 = "您无法携带更多的东西了。";
                                break;

                            case -2:
                                s18 = "该城内没有这么多金币.";
                                break;

                            case -1:
                                s18 = "只有行会 " + this.m_Castle.m_sOwnGuild + " 的掌门人才能使用!!!";
                                break;

                            case 1:
                                this.GotoLable(PlayObject, M2Share.sMAIN, false);
                                break;
                            }
                            PlayObject.SendMsg(this, Grobal2.RM_MENU_OK, 0, this.ToInt(), 0, 0, s18);
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sRECEIPTS).ToLower()) == 0)
                        {
                            switch (this.m_Castle.ReceiptGolds(PlayObject, HUtil32.Str_ToInt(sMsg, 0)))
                            {
                            case -4:
                                // 沙巴克存资金
                                s18 = "输入的金币数不正确!!!";
                                break;

                            case -3:
                                s18 = "您已经达到在城内存放货物的限制了。";
                                break;

                            case -2:
                                s18 = "您没有那么多金币.";
                                break;

                            case -1:
                                s18 = "只有行会 " + this.m_Castle.m_sOwnGuild + " 的掌门人才能使用!!!";
                                break;

                            case 1:
                                this.GotoLable(PlayObject, M2Share.sMAIN, false);
                                break;
                            }
                            PlayObject.SendMsg(this, Grobal2.RM_MENU_OK, 0, this.ToInt(), 0, 0, s18);
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sOPENMAINDOOR).ToLower()) == 0)
                        {
                            // 打开城门
                            if (PlayObject.IsGuildMaster())
                            {
                                this.m_Castle.MainDoorControl(false);
                            }
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sCLOSEMAINDOOR).ToLower()) == 0)
                        {
                            // 关闭城门
                            if (PlayObject.IsGuildMaster())
                            {
                                this.m_Castle.MainDoorControl(true);
                            }
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sREPAIRDOORNOW).ToLower()) == 0)
                        {
                            // 马上修复城门
                            if (PlayObject.IsGuildMaster())
                            {
                                RepairDoor(PlayObject);
                                this.GotoLable(PlayObject, M2Share.sMAIN, false);
                            }
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sREPAIRWALLNOW1).ToLower()) == 0)
                        {
                            // 修城墙一
                            if (PlayObject.IsGuildMaster())
                            {
                                RepairWallNow(1, PlayObject);
                                this.GotoLable(PlayObject, M2Share.sMAIN, false);
                            }
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sREPAIRWALLNOW2).ToLower()) == 0)
                        {
                            // 修城墙二
                            if (PlayObject.IsGuildMaster())
                            {
                                RepairWallNow(2, PlayObject);
                                this.GotoLable(PlayObject, M2Share.sMAIN, false);
                            }
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sREPAIRWALLNOW3).ToLower()) == 0)
                        {
                            // 修城墙三
                            if (PlayObject.IsGuildMaster())
                            {
                                RepairWallNow(3, PlayObject);
                                this.GotoLable(PlayObject, M2Share.sMAIN, false);
                            }
                        }
                        else if (HUtil32.CompareLStr(sLabel, M2Share.sHIREGUARDNOW, 13))
                        {
                            if (PlayObject.IsGuildMaster())
                            {
                                s20 = sLabel.Substring(M2Share.sHIREGUARDNOW.Length + 1 - 1, sLabel.Length);
                                HireGuard(s20, PlayObject);
                                PlayObject.SendMsg(this, Grobal2.RM_MENU_OK, 0, this.ToInt(), 0, 0, "");
                                // GotoLable(PlayObject,sHIREGUARDOK,False);
                            }
                        }
                        else if (HUtil32.CompareLStr(sLabel, M2Share.sHIREARCHERNOW, 14))
                        {
                            if (PlayObject.IsGuildMaster())
                            {
                                s20 = sLabel.Substring(M2Share.sHIREARCHERNOW.Length + 1 - 1, sLabel.Length);
                                HireArcher(s20, PlayObject);
                                PlayObject.SendMsg(this, Grobal2.RM_MENU_OK, 0, this.ToInt(), 0, 0, "");
                            }
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sEXIT).ToLower()) == 0)
                        {
                            PlayObject.SendMsg(this, Grobal2.RM_MERCHANTDLGCLOSE, 0, this.ToInt(), 0, 0, "");
                        }
                        else if ((sLabel).ToLower().CompareTo((M2Share.sBACK).ToLower()) == 0)
                        {
                            if (PlayObject.m_sScriptGoBackLable == "")
                            {
                                PlayObject.m_sScriptGoBackLable = M2Share.sMAIN;
                            }
                            this.GotoLable(PlayObject, PlayObject.m_sScriptGoBackLable, false);
                        }
                    }
                }
                else
                {
                    s18 = "您没有权利使用";
                    PlayObject.SendMsg(this, Grobal2.RM_MENU_OK, 0, this.ToInt(), 0, 0, s18);
                }
            }
            catch
            {
                M2Share.MainOutMessage(sExceptionMsg);
            }
        }
Пример #19
0
        public override void UserSelect(TPlayObject PlayObject, string sData)
        {
            string       sMsg   = string.Empty;
            string       sLabel = string.Empty;
            bool         boCanJmp;
            byte         nCode;
            const string sExceptionMsg = "{异常} TGuildOfficial:UserSelect Code:";

            base.UserSelect(PlayObject, sData);
            nCode = 0;
            try
            {
                if ((sData != "") && (sData[0] == '@'))
                {
                    nCode    = 1;
                    sMsg     = HUtil32.GetValidStr3(sData, ref sLabel, new string[] { "\r" });
                    nCode    = 2;
                    boCanJmp = PlayObject.LableIsCanJmp(sLabel);
                    nCode    = 3;
                    this.GotoLable(PlayObject, sLabel, !boCanJmp);
                    // GotoLable(PlayObject,sLabel,not PlayObject.LableIsCanJmp(sLabel));
                    if (!boCanJmp)
                    {
                        return;
                    }
                    if ((sLabel).ToLower().CompareTo((FunctionDef.sBUILDGUILDNOW).ToLower()) == 0)
                    {
                        nCode = 4;
                        ReQuestBuildGuild(PlayObject, sMsg);
                    }
                    else if ((sLabel).ToLower().CompareTo((FunctionDef.sSCL_GUILDWAR).ToLower()) == 0)
                    {
                        nCode = 5;
                        ReQuestGuildWar(PlayObject, sMsg);
                    }
                    else if ((sLabel).ToLower().CompareTo((FunctionDef.sDONATE).ToLower()) == 0)
                    {
                        nCode = 6;
                        DoNate(PlayObject);
                    }
                    else if (HUtil32.CompareLStr(sLabel, FunctionDef.sREQUESTCASTLEWAR, 20))
                    {
                        nCode = 7;
                        ReQuestCastleWar(PlayObject, sLabel.Substring(21 - 1, sLabel.Length - 20));
                    }
                    else if ((sLabel).ToLower().CompareTo((FunctionDef.sEXIT).ToLower()) == 0)
                    {
                        nCode = 8;
                        PlayObject.SendMsg(this, Grobal2.RM_MERCHANTDLGCLOSE, 0, Parse(this), 0, 0, "");
                    }
                    else if ((sLabel).ToLower().CompareTo((FunctionDef.sBACK).ToLower()) == 0)
                    {
                        nCode = 9;
                        if (PlayObject.m_sScriptGoBackLable == "")
                        {
                            PlayObject.m_sScriptGoBackLable = FunctionDef.sMAIN;
                        }
                        this.GotoLable(PlayObject, PlayObject.m_sScriptGoBackLable, false);
                    }
                }
            }
            catch
            {
                M2Share.MainOutMessage(sExceptionMsg + sLabel + (nCode).ToString());
            }
        }
Пример #20
0
        public void AddItemsFromConfig()
        {
            TStringList  LoadList;
            TMonItemInfo MonItem;
            string       s28;
            string       s2C;
            string       s30 = string.Empty;
            int          n18;
            int          n1C;
            int          n20;
            IniFile      ItemIni;
            // ---------------------------读取怪物配置----------------------------------
            string sFileName = M2Share.g_Config.sEnvirDir + "MonUseItems\\" + m_sCharName + ".txt";

            if (File.Exists(sFileName))
            {
                ItemIni = new IniFile(sFileName);
                if (ItemIni != null)
                {
                    m_nButchChargeClass = ItemIni.ReadInteger("Info", "ButchChargeClass", (byte)3); // 收费模式(0金币,1元宝,2金刚石,3灵符)
                    m_nButchChargeCount = ItemIni.ReadInteger("Info", "ButchChargeCount", 1);       // 挖每次收费点数
                    boIntoTrigger       = ItemIni.ReadBool("Info", "ButchCloneItem", false);        // 怪挖是否进入触发
                    // ---------------------------读取探索物品----------------------------------
                    sFileName = M2Share.g_Config.sEnvirDir + "MonUseItems\\" + m_sCharName + "-Item.txt";
                    if (File.Exists(sFileName))
                    {
                        if (m_ButchItemList != null)
                        {
                            if (m_ButchItemList.Count > 0)
                            {
                                for (int I = 0; I < m_ButchItemList.Count; I++)
                                {
                                    if (m_ButchItemList[I] != null)
                                    {
                                        Dispose(m_ButchItemList[I]);
                                    }
                                }
                            }
                            m_ButchItemList.Clear();
                        }
                        LoadList = new TStringList();
                        LoadList.LoadFromFile(sFileName);
                        if (LoadList.Count > 0)
                        {
                            for (int I = 0; I < LoadList.Count; I++)
                            {
                                s28 = LoadList[I];
                                if ((s28 != "") && (s28[0] != ';'))
                                {
                                    s28 = HUtil32.GetValidStr3(s28, ref s30, new string[] { " ", "/", "\09" });
                                    n18 = HUtil32.Str_ToInt(s30, -1);
                                    s28 = HUtil32.GetValidStr3(s28, ref s30, new string[] { " ", "/", "\09" });
                                    n1C = HUtil32.Str_ToInt(s30, -1);
                                    s28 = HUtil32.GetValidStr3(s28, ref s30, new string[] { " ", "\09" });
                                    if (s30 != "")
                                    {
                                        if (s30[0] == '\"')
                                        {
                                            HUtil32.ArrestStringEx(s30, "\"", "\"", ref s30);
                                        }
                                    }
                                    s2C = s30;
                                    s28 = HUtil32.GetValidStr3(s28, ref s30, new string[] { " ", "\09" });
                                    n20 = HUtil32.Str_ToInt(s30, 1);
                                    if ((n18 > 0) && (n1C > 0) && (s2C != ""))
                                    {
                                        MonItem          = new TMonItemInfo();
                                        MonItem.SelPoint = n18 - 1;
                                        MonItem.MaxPoint = n1C;
                                        MonItem.ItemName = s2C;
                                        MonItem.Count    = n20;
                                        if (HUtil32.Random(MonItem.MaxPoint) <= MonItem.SelPoint) // 计算机率 1/10 随机10<=1 即为所得的物品
                                        {
                                            m_ButchItemList.Add(MonItem);
                                        }
                                    }
                                }
                            }
                        }
                        if (m_ButchItemList.Count > 0)
                        {
                            m_boExploration = true; // 是否可探索
                        }
                        Dispose(LoadList);
                    }
                    Dispose(ItemIni);
                }
            }
        }
Пример #21
0
        /// <summary>
        /// 保存角色数据
        /// </summary>
        /// <param name="nRecog"></param>
        /// <param name="sMsg"></param>
        private unsafe void SaveHumanRcd(int nRecog, string sMsg)
        {
            string          sChrName  = string.Empty;
            string          sUserID   = string.Empty;
            string          sHumanRCD = string.Empty;
            int             I;
            int             nIndex;
            bool            bo21;
            TDefaultMessage DefMsg;
            THumDataInfo *  HumanRCD;
            THumDataInfo    HumDataInfo;

            sHumanRCD = HUtil32.GetValidStr3(sMsg, ref sUserID, new string[] { "/" });
            sHumanRCD = HUtil32.GetValidStr3(sHumanRCD, ref sChrName, new string[] { "/" });
            sUserID   = EncryptUnit.DeCodeString(sUserID);
            sChrName  = EncryptUnit.DeCodeString(sChrName);
            bo21      = false;
            HumanRCD  = (THumDataInfo *)Marshal.AllocHGlobal(sizeof(THumDataInfo));
            HUtil32.ZeroMemory((IntPtr)(&HumanRCD->Data), (IntPtr)sizeof(THumData));
            int THumDataInfoLength = DBShare.GetCodeMsgSize(sizeof(THumDataInfo) * 4 / 3) + 1;

            if (sHumanRCD.Length == THumDataInfoLength)
            {
                EncryptUnit.DecodeBuffer(sHumanRCD, HumanRCD, sizeof(THumDataInfo));
            }
            else
            {
                bo21 = true;
            }
            if (!bo21)
            {
                bo21 = true;
                try
                {
                    HumDataInfo = DBShare.g_HumDataDB.Get(sChrName);
                    //nIndex = DBShare.g_HumDataDB.Index(sChrName);
                    if (HumDataInfo.Header.NameLen <= 0)
                    {
                        HumanRCD->Header.boDeleted   = false;
                        HumanRCD->Header.dCreateDate = DateTime.Now.ToOADate();
                        //sChrName.StrToSbyte(HumanRCD->Header.sName, 15,ref HumanRCD->Header.NameLen);
                        HumanRCD->Header.sName    = sChrName;
                        HumanRCD->Header.boIsHero = false;
                        DBShare.g_HumDataDB.Add(ref *HumanRCD);
                        //nIndex = DBShare.g_HumDataDB.Index(sChrName);
                    }
                    HumDataInfo = DBShare.g_HumDataDB.Get(sChrName);
                    if (HumDataInfo.Header.NameLen > 0)
                    {
                        HumanRCD->Header = HumDataInfo.Header;
                        DBShare.g_HumDataDB.Update(sChrName, ref *HumanRCD);
                        bo21 = false;
                        DBShare.g_nSaveHumCount++;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                FrmIDSoc.SetSessionSaveRcd(sUserID);
            }
            if (!bo21)
            {
                m_DefMsg = EncryptUnit.MakeDefaultMsg(Common.DBR_SAVEHUMANRCD, 1, 0, 0, 0);
                SendSocket(EncryptUnit.EncodeMessage(m_DefMsg));
            }
            else
            {
                m_DefMsg = EncryptUnit.MakeDefaultMsg(Common.DBR_LOADHUMANRCD, 0, 0, 0, 0);
                SendSocket(EncryptUnit.EncodeMessage(m_DefMsg));
                DBShare.MainOutMessage("SaveHumanRcd Fail,UserID:sUserID,ChrName:sChrName");
            }
        }
Пример #22
0
        public void Run()
        {
            string       sSocketText   = string.Empty;
            string       sData         = string.Empty;
            string       sBody         = string.Empty;
            string       sCode         = string.Empty;
            const string sExceptionMsg = "{异常} TFrmIdSoc::DecodeSocStr";

            HUtil32.EnterCriticalSection(M2Share.g_Config.UserIDSection);
            if (M2Share.g_Config.sIDSocketRecvText != "" && M2Share.g_Config.sIDSocketRecvText != null)
            {
                try
                {
                    if (M2Share.g_Config.sIDSocketRecvText.IndexOf(")") <= 0)
                    {
                        return;
                    }
                    sSocketText = M2Share.g_Config.sIDSocketRecvText;
                    M2Share.g_Config.sIDSocketRecvText = "";
                }
                finally
                {
                    HUtil32.LeaveCriticalSection(M2Share.g_Config.UserIDSection);
                }
            }
            else
            {
                HUtil32.LeaveCriticalSection(M2Share.g_Config.UserIDSection);
            }
            try
            {
                while (true)
                {
                    sSocketText = HUtil32.ArrestStringEx(sSocketText, "(", ")", ref sData);
                    if (sData == "")
                    {
                        break;
                    }
                    sBody = HUtil32.GetValidStr3(sData, ref sCode, new string[] { "/" });
                    switch (HUtil32.Str_ToInt(sCode, 0))
                    {
                    case Common.SS_OPENSESSION:    // 100
                        GetPasswdSuccess(sBody);
                        break;

                    case Common.SS_CLOSESESSION:    // 101
                        GetCancelAdmission(sBody);
                        break;

                    case Common.SS_KEEPALIVE:    // 104
                        SetTotalHumanCount(sBody);
                        break;

                    case Common.UNKNOWMSG:
                        break;

                    case Common.SS_KICKUSER:    // 111
                        GetCancelAdmissionA(sBody);
                        break;

                    case Common.SS_SERVERLOAD:    // 113
                        GetServerLoad(sBody);
                        break;
                    }
                    if (sSocketText.IndexOf(")") <= 0)
                    {
                        break;
                    }
                }
                HUtil32.EnterCriticalSection(M2Share.g_Config.UserIDSection);
                try
                {
                    M2Share.g_Config.sIDSocketRecvText = sSocketText + M2Share.g_Config.sIDSocketRecvText;
                }
                finally
                {
                    HUtil32.LeaveCriticalSection(M2Share.g_Config.UserIDSection);
                }
            }
            catch
            {
                M2Share.MainOutMessage(sExceptionMsg);
            }
            if (HUtil32.GetTickCount() - dwClearEmptySessionTick > 10000)
            {
                dwClearEmptySessionTick = HUtil32.GetTickCount();
            }
        }
Пример #23
0
        private void MSocket_OnClientRead(object sender, AsyncSockets.AsyncUserToken e)
        {
            int I;
            TMsgServerInfo MsgServer;
            string sReviceMsg = string.Empty;
            string sMsg = string.Empty;
            string sCode = string.Empty;
            string sAccount = string.Empty;
            string sServerName = string.Empty;
            string sIndex = string.Empty;
            string sOnlineCount = string.Empty;
            int nCode;
            TConfig Config;
            Config = LSShare.g_Config;
            if (TFrmMain.Colsed) return;
            HUtil32.EnterCriticalSection(objRead);
            try
            {
                for (I = 0; I < m_ServerList.Count; I++)
                {
                    MsgServer = m_ServerList[I];
                    if (MsgServer.Socket == e)
                    {
                        //string ReceiveText = Encoding.Default.GetString(e.ReceiveBuffer, 0, e.BytesReceived);
                        //if (ReceiveText[0] == '\0') ReceiveText = "";
                        byte[] data = new byte[e.BytesReceived];
                        Array.Copy(e.ReceiveBuffer, e.Offset, data, 0, e.BytesReceived);
                        string ReceiveText = Encoding.Default.GetString(data);

                        sReviceMsg = MsgServer.sReceiveMsg + ReceiveText;
                        while ((sReviceMsg.IndexOf(')') > 0))
                        {
                            sReviceMsg = HUtil32.ArrestStringEx(sReviceMsg, "(", ")", ref sMsg);
                            if (sMsg == "")
                            {
                                break;
                            }
                            sMsg = HUtil32.GetValidStr3(sMsg, ref sCode, new string[] { "/" });
                            nCode = HUtil32.Str_ToInt(sCode, -1);
                            switch (nCode)
                            {
                                case Common.SS_SOFTOUTSESSION:
                                    sMsg = HUtil32.GetValidStr3(sMsg, ref sAccount, new string[] { "/" });
                                    FrmMain.CloseUser(Config, sAccount, HUtil32.Str_ToInt(sMsg, 0));
                                    break;

                                case Common.SS_SERVERINFO:
                                    sMsg = HUtil32.GetValidStr3(sMsg, ref sServerName, new string[] { "/" });
                                    sMsg = HUtil32.GetValidStr3(sMsg, ref sIndex, new string[] { "/" });
                                    sMsg = HUtil32.GetValidStr3(sMsg, ref sOnlineCount, new string[] { "/" });
                                    MsgServer.sServerName = sServerName;
                                    MsgServer.nServerIndex = HUtil32.Str_ToInt(sIndex, 0);
                                    MsgServer.nOnlineCount = HUtil32.Str_ToInt(sOnlineCount, 0);
                                    MsgServer.dwKeepAliveTick = HUtil32.GetTickCount();
                                    MsgServer.sIPaddr = e.EndPoint.Address.ToString() + ":" + e.EndPoint.Port.ToString();
                                    SortServerList(I);
                                    LSShare.nOnlineCountMin = GetOnlineHumCount();
                                    if (LSShare.nOnlineCountMin > LSShare.nOnlineCountMax)
                                    {
                                        LSShare.nOnlineCountMax = LSShare.nOnlineCountMin;
                                    }
                                    SendServerMsgA(Common.SS_KEEPALIVE, (LSShare.nOnlineCountMin).ToString());
                                    RefServerLimit(sServerName);
                                    break;

                                case Common.UNKNOWMSG:
                                    SendServerMsgA(Common.UNKNOWMSG, sMsg);
                                    break;

                                case Common.SS_ADDIPTOGATE:
                                    FrmMain.SendIPToGate(sMsg);
                                    break;
                            }
                        }
                    }

                    MsgServer.sReceiveMsg = sReviceMsg;

                    //MessageBox.Show(m_ServerList[I].sReceiveMsg);
                    //m_ServerList[I] = MsgServer;
                }
            }
            finally
            {
                HUtil32.LeaveCriticalSection(objRead);
            }
        }
Пример #24
0
        // 是否已执行操作;
        public void LoadScript()
        {
            TStringList  LoadList;
            string       sFileName   = string.Empty;
            string       sLineText   = string.Empty;
            string       sActionType = string.Empty;
            string       sRunCmd     = string.Empty;
            string       sMoethod    = string.Empty;
            string       sParam1     = string.Empty;
            string       sParam2     = string.Empty;
            string       sParam3     = string.Empty;
            string       sParam4     = string.Empty;
            TAutoRunInfo AutoRunInfo;

            sFileName = M2Share.g_Config.sEnvirDir + "Robot_def\\" + m_sScriptFileName + ".txt";
            if (File.Exists(sFileName))
            {
                LoadList = new TStringList();
                LoadList.LoadFromFile(sFileName);
                if (LoadList.Count > 0)
                {
                    for (int I = 0; I < LoadList.Count; I++)
                    {
                        sLineText = LoadList[I];
                        if ((sLineText != "") && (sLineText[0] != ';'))
                        {
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sActionType, new string[] { " ", "/", "\09" });
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sRunCmd, new string[] { " ", "/", "\09" });
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sMoethod, new string[] { " ", "/", "\09" });
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sParam1, new string[] { " ", "/", "\09" });
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sParam2, new string[] { " ", "/", "\09" });
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sParam3, new string[] { " ", "/", "\09" });
                            sLineText = HUtil32.GetValidStr3(sLineText, ref sParam4, new string[] { " ", "/", "\09" });
                            if (string.Compare(sActionType, SDK.sROAUTORUN, true) == 0)
                            {
                                if (string.Compare(sRunCmd, SDK.sRONPCLABLEJMP, true) == 0)
                                {
                                    AutoRunInfo              = new TAutoRunInfo();
                                    AutoRunInfo.dwRunTick    = HUtil32.GetTickCount();
                                    AutoRunInfo.dwRunTimeLen = 0;
                                    AutoRunInfo.boStatus     = false;
                                    AutoRunInfo.nRunCmd      = SDK.nRONPCLABLEJMP;
                                    if (string.Compare(sMoethod, SDK.sRODAY, true) == 0)
                                    {
                                        AutoRunInfo.nMoethod = SDK.nRODAY;
                                    }
                                    if (string.Compare(sMoethod, SDK.sROHOUR, true) == 0)
                                    {
                                        AutoRunInfo.nMoethod = SDK.nROHOUR;
                                    }
                                    if (string.Compare(sMoethod, SDK.sROMIN, true) == 0)
                                    {
                                        AutoRunInfo.nMoethod = SDK.nROMIN;
                                    }
                                    if (string.Compare(sMoethod, SDK.sROSEC, true) == 0)
                                    {
                                        AutoRunInfo.nMoethod = SDK.nROSEC;
                                    }
                                    if (string.Compare(sMoethod, SDK.sRUNONWEEK, true) == 0)
                                    {
                                        AutoRunInfo.nMoethod = SDK.nRUNONWEEK;
                                    }
                                    if (string.Compare(sMoethod, SDK.sRUNONDAY, true) == 0)
                                    {
                                        AutoRunInfo.nMoethod = SDK.nRUNONDAY;
                                    }
                                    AutoRunInfo.sParam1 = sParam1;
                                    AutoRunInfo.sParam2 = sParam2;
                                    AutoRunInfo.sParam3 = sParam3;
                                    AutoRunInfo.sParam4 = sParam4;
                                    AutoRunInfo.nParam1 = HUtil32.Str_ToInt(sParam1, 1);
                                    m_AutoRunList.Add(AutoRunInfo);
                                }
                            }
                        }
                    }
                }
                // Dispose(LoadList);
            }
        }
Пример #25
0
        /// <summary>
        /// 读取怪物爆率文件
        /// </summary>
        /// <param name="MonName">怪物名称</param>
        /// <param name="ItemList">物品列表</param>
        /// <returns></returns>
        internal int LoadMonitems(string MonName, ref IList <TMonItem> ItemList)
        {
            int         result = 0;
            TStringList LoadList;
            TMonItem    MonItem;
            string      s28 = string.Empty;
            string      s2C = string.Empty;
            string      s30 = string.Empty;
            int         n18;
            int         n1C;
            int         n20;
            string      sFileName = M2Share.g_Config.sEnvirDir + "MonItems\\" + MonName + ".txt";

            if (File.Exists(sFileName))
            {
                if (ItemList != null)
                {
                    if (ItemList.Count > 0)
                    {
                        for (int I = 0; I < ItemList.Count; I++)
                        {
                            if (ItemList[I] != null)
                            {
                                Dispose(ItemList[I]);
                            }
                        }
                    }
                    ItemList.Clear();
                }
                LoadList = new TStringList();
                LoadList.LoadFromFile(sFileName);
                for (int I = 0; I < LoadList.Count; I++)
                {
                    s28 = LoadList[I];
                    if ((s28 != "") && (s28[0] != ';'))
                    {
                        s28 = HUtil32.GetValidStr3(s28, ref s30, new string[] { " ", "/", "\t" });
                        n18 = HUtil32.Str_ToInt(s30, -1);
                        s28 = HUtil32.GetValidStr3(s28, ref s30, new string[] { " ", "/", "\t" });
                        n1C = HUtil32.Str_ToInt(s30, -1);
                        s28 = HUtil32.GetValidStr3(s28, ref s30, new string[] { " ", "\t" });
                        if (s30 != "")
                        {
                            if (s30[0] == '\'')
                            {
                                HUtil32.ArrestStringEx(s30, "\"", "\"", ref s30);
                            }
                        }
                        s2C = s30;
                        s28 = HUtil32.GetValidStr3(s28, ref s30, new string[] { " ", "\t" });
                        n20 = HUtil32.Str_ToInt(s30, 1);
                        if ((n18 > 0) && (n1C > 0) && (s2C != ""))
                        {
                            if (ItemList == null)
                            {
                                ItemList = new List <TMonItem>();
                            }
                            MonItem          = new TMonItem();
                            MonItem.n00      = n18 - 1;
                            MonItem.n04      = n1C;
                            MonItem.sMonName = s2C;
                            MonItem.n18      = n20;
                            ItemList.Add(MonItem);
                            result++;
                        }
                    }
                }
            }
            return(result);
        }
Пример #26
0
        public void Execute()
        {
            int     I;
            uint    dwTick2C;
            string  s18 = string.Empty;
            string  s1C = string.Empty;
            string  s24 = string.Empty;
            string  s28 = string.Empty;
            int     nC;
            int     n10;
            int     n14;
            TConfig Config;

            Config   = LSShare.g_Config;
            dwTick2C = 0;
            while (true)
            {
                if ((HUtil32.GetTickCount() - dwTick2C) > 5 * 60 * 1000)
                {
                    dwTick2C = HUtil32.GetTickCount();
                    try
                    {
                        if (File.Exists(Config.sFeedIDList))
                        {
                            AccountLoadList.Clear();
                            AccountLoadList.LoadFromFile(Config.sFeedIDList);
                            if (AccountLoadList.Count > 0)
                            {
                                AccountCostList.Clear();
                                for (I = 0; I < AccountLoadList.Count; I++)
                                {
                                    s18 = AccountLoadList[I].Trim();
                                    s18 = HUtil32.GetValidStr3(s18, ref s1C, new string[] { " ", "\t" });
                                    s18 = HUtil32.GetValidStr3(s18, ref s24, new string[] { " ", "\t" });
                                    s18 = HUtil32.GetValidStr3(s18, ref s28, new string[] { " ", "\t" });
                                    n10 = HUtil32.Str_ToInt(s24, 0);
                                    n14 = HUtil32.Str_ToInt(s28, 0);
                                    nC  = HUtil32.MakeLong(HUtil32._MAX(n14, 0), HUtil32._MAX(n10, 0));
                                    AccountCostList.Add(s1C, nC);
                                    if (!bo40)
                                    {
                                        if ((I % 100) == 0)
                                        {
                                            Thread.Sleep(1);
                                        }
                                    }
                                }
                            }

                            //LoadAccountCostList(Config, AccountCostList);
                        }
                    }
                    catch
                    {
                        LSShare.MainOutMessage("Exception] loading on IDStrList.");
                    }
                    try
                    {
                        if (File.Exists(Config.sFeedIPList))
                        {
                            IPaddrLoadList.Clear();
                            IPaddrLoadList.LoadFromFile(Config.sFeedIPList);
                            if (IPaddrLoadList.Count > 0)
                            {
                                IPaddrCostList.Clear();
                                for (I = 0; I < IPaddrLoadList.Count; I++)
                                {
                                    s18 = IPaddrLoadList[I].Trim();
                                    s18 = HUtil32.GetValidStr3(s18, ref s1C, new string[] { " ", "\t" });
                                    s18 = HUtil32.GetValidStr3(s18, ref s24, new string[] { " ", "\t" });
                                    s18 = HUtil32.GetValidStr3(s18, ref s28, new string[] { " ", "\t" });
                                    n10 = HUtil32.Str_ToInt(s24, 0);
                                    n14 = HUtil32.Str_ToInt(s28, 0);

                                    //@ Unsupported function or procedure: 'MakeLong'
                                    nC = HUtil32.MakeLong(HUtil32._MAX(n14, 0), HUtil32._MAX(n10, 0));
                                    IPaddrCostList.Add(s1C, nC);
                                    if (!bo40)
                                    {
                                        if ((I % 100) == 0)
                                        {
                                            Thread.Sleep(1);
                                        }
                                    }
                                }
                            }

                            //LoadIPaddrCostList(Config, IPaddrCostList);
                        }
                    }
                    catch
                    {
                        LSShare.MainOutMessage("Exception] loading on IPStrList.");
                    }
                }
                Thread.Sleep(10);

                //@ Unsupported property or method(C): 'Terminated'
                //if (this.Terminated)
                //{
                //    break;
                //}
            }
        }
Пример #27
0
        /// <summary>
        /// 获取DBSERBER发送过来的消息
        /// </summary>
        /// <param name="nQueryID"></param>
        /// <param name="nIdent"></param>
        /// <param name="nRecog"></param>
        /// <param name="sStr"></param>
        /// <param name="dwTimeOut"></param>
        /// <param name="boLoadRcd"></param>
        /// <param name="sName"></param>
        /// <returns></returns>
        public unsafe static bool GetDBSockMsg(int nQueryID, ref int nIdent, ref int nRecog, ref string sStr, uint dwTimeOut, bool boLoadRcd, string sName)
        {
            bool            result;
            bool            boLoadDBOK;
            uint            dwTimeOutTick;
            string          s24        = string.Empty;
            string          s28        = string.Empty;
            string          s2C        = string.Empty;
            string          sCheckFlag = string.Empty;
            string          sDefMsg;
            string          s38;
            int             nLen;
            int             nCheckCode;
            TDefaultMessage DefMsg;
            byte            nCode;
            const string    sLoadDBTimeOut = "[RunDB] 读取人物数据超时...";
            const string    sSaveDBTimeOut = "[RunDB] 保存人物数据超时...";

            boLoadDBOK    = false;
            result        = false;
            dwTimeOutTick = HUtil32.GetTickCount();
            nCode         = 0;
            while (true)
            {
                if ((HUtil32.GetTickCount() - dwTimeOutTick) > dwTimeOut)//dwTimeOut--等待消息的时间
                {
                    nCode = 1;
                    break;
                }
                s24 = "";
                HUtil32.EnterCriticalSection(M2Share.UserDBSection);
                try
                {
                    if (M2Share.g_Config.sDBSocketRecvText.IndexOf("!") > 0)
                    {
                        s24 = M2Share.g_Config.sDBSocketRecvText;
                        M2Share.g_Config.sDBSocketRecvText = "";
                    }
                }
                finally
                {
                    HUtil32.LeaveCriticalSection(M2Share.UserDBSection);
                }
                if (s24 != "")
                {
                    s28 = "";
                    s24 = HUtil32.ArrestStringEx(s24, "#", "!", ref s28);
                    if (s28 != "")
                    {
                        s28  = HUtil32.GetValidStr3(s28, ref s2C, new string[] { "/" });
                        nLen = s28.Length;
                        if ((nLen >= sizeof(TDefaultMessage)) && (HUtil32.Str_ToInt(s2C, 0) == nQueryID))
                        {
                            nCheckCode = HUtil32.MakeLong(HUtil32.Str_ToInt(s2C, 0) ^ 170, nLen);
                            byte[] data = new byte[sizeof(int)];
                            fixed(byte *by = data)
                            {
                                *(int *)by = nCheckCode;
                            }

                            sCheckFlag = EncryptUnit.EncodeBuffer(data, data.Length);
                            if (HUtil32.CompareBackLStr(s28, sCheckFlag, sCheckFlag.Length))
                            {
                                if (nLen == Grobal2.DEFBLOCKSIZE)
                                {
                                    sDefMsg = s28;
                                    s38     = "";
                                }
                                else
                                {
                                    sDefMsg = s28.Substring(0, Grobal2.DEFBLOCKSIZE);
                                    s38     = s28.Substring(Grobal2.DEFBLOCKSIZE + 1 - 1, s28.Length - Grobal2.DEFBLOCKSIZE - 6);
                                }
                                DefMsg     = EncryptUnit.DecodeMessage(sDefMsg);
                                nIdent     = DefMsg.Ident;
                                nRecog     = DefMsg.Recog;
                                sStr       = s38;
                                boLoadDBOK = true;
                                result     = true;
                                break;
                            }
                        }
                        else
                        {
                            if ((nLen < Marshal.SizeOf(typeof(TDefaultMessage))))
                            {
                                nCode = 2;
                            }
                            if ((HUtil32.Str_ToInt(s2C, 0) != nQueryID))
                            {
                                nCode = 4;
                            }
                            M2Share.g_Config.nLoadDBErrorCount++;
                            break;
                        }
                    }
                    else
                    {
                        nCode = 3;
                        M2Share.g_Config.nLoadDBErrorCount++;
                        break;
                    }
                }
                else
                {
                    System.Threading.Thread.Sleep(1);
                }
            }
            if (!boLoadDBOK)
            {
                M2Share.g_nSaveRcdErrorCount++;
                if (boLoadRcd)
                {
                    M2Share.MainOutMessage(sLoadDBTimeOut + sName + " Code:" + nCode);
                }
                else
                {
                    M2Share.MainOutMessage(sSaveDBTimeOut + sName + " Code:" + nCode);
                }
            }
            else
            {
                M2Share.g_nSaveRcdErrorCount = 0;
            }
            M2Share.g_Config.boDBSocketWorking = false;
            return(result);
        }
Пример #28
0
        public unsafe static bool GetDBSockMsg(byte[] da, int nQueryID, ref int nIdent, ref int nRecog, ref string sStr, uint dwTimeOut, bool boLoadRcd, string sName)
        {
            bool            result;
            bool            boLoadDBOK;
            string          s24        = string.Empty;
            string          s28        = string.Empty;
            string          s2C        = string.Empty;
            string          sCheckFlag = string.Empty;
            string          sDefMsg;
            string          s38;
            int             nLen;
            int             nCheckCode;
            TDefaultMessage DefMsg;

            boLoadDBOK = false;
            result     = false;
            byte      nCode        = 0;
            const int DEFBLOCKSIZE = 32;

            while (true)
            {
                s24 = "";

                try
                {
                    fixed(byte *pb = da)
                    {
                        s24 = HUtil32.SBytePtrToString((sbyte *)pb, 0, da.Length);
                    }

                    s24 = System.Text.Encoding.Default.GetString(da);
                }
                finally
                {
                }
                if (s24 != "")
                {
                    s28 = "";
                    s24 = HUtil32.ArrestStringEx(s24, "#", "!", ref s28);
                    if (s28 != "")
                    {
                        s28  = HUtil32.GetValidStr3(s28, ref s2C, new string[] { "/" });
                        nLen = s28.Length;
                        if ((nLen >= sizeof(TDefaultMessage)) && (HUtil32.Str_ToInt(s2C, 0) == nQueryID))
                        {
                            nCheckCode = HUtil32.MakeLong(HUtil32.Str_ToInt(s2C, 0) ^ 170, nLen);
                            byte[] data = new byte[sizeof(int)];
                            fixed(byte *by = data)
                            {
                                *(int *)by = nCheckCode;
                            }

                            sCheckFlag = EncryptUnit.EncodeBuffer(data, data.Length);
                            if (HUtil32.CompareBackLStr(s28, sCheckFlag, sCheckFlag.Length))
                            {
                                if (nLen == DEFBLOCKSIZE)
                                {
                                    sDefMsg = s28;
                                    s38     = "";
                                }
                                else
                                {
                                    sDefMsg = s28.Substring(0, DEFBLOCKSIZE);
                                    s38     = s28.Substring(DEFBLOCKSIZE + 1 - 1, s28.Length - DEFBLOCKSIZE - 6);
                                }
                                DefMsg     = EncryptUnit.DecodeMessage(sDefMsg);
                                nIdent     = DefMsg.Ident;
                                nRecog     = DefMsg.Recog;
                                sStr       = s38;
                                boLoadDBOK = true;
                                result     = true;
                                break;
                            }
                        }
                        else
                        {
                            if ((nLen < Marshal.SizeOf(typeof(TDefaultMessage))))
                            {
                                nCode = 2;
                            }
                            if ((HUtil32.Str_ToInt(s2C, 0) != nQueryID))
                            {
                                nCode = 4;
                            }
                            break;
                        }
                    }
                    else
                    {
                        nCode = 3;
                        break;
                    }
                }
                else
                {
                    System.Threading.Thread.Sleep(1);
                }
            }
            if (!boLoadDBOK)
            {
                if (boLoadRcd)
                {
                    //M2Share.MainOutMessage(sLoadDBTimeOut + sName + " Code:" + (nCode).ToString());
                }
                else
                {
                    //M2Share.MainOutMessage(sSaveDBTimeOut + sName + " Code:" + (nCode).ToString());
                }
            }
            else
            {
            }
            return(result);
        }