/// <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)); }
/// <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); }
/// <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); }
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); }
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; } } } }
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); } }
/// <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; }
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); }
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); }
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; } } } }
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; }
/// <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; } } } }
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); //} }
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); } }
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); } }
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"); } }
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); } }
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); } }
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()); } }
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); } } }
/// <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"); } }
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(); } }
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); } }
// 是否已执行操作; 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); } }
/// <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); }
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; //} } }
/// <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); }
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); }