亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? frnengn.pas

?? FIR引擎最新源碼+注冊
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
      nCode := 16;
    end;
  except
    MainOutMessage(Format(sExceptionMsg, [nCode]));
  end;
end;

function TFrontEngine.IsFull: Boolean;
begin
  Result := False;
  EnterCriticalSection(m_UserCriticalSection);
  try
    if m_SaveRcdList.Count >= 2000 then begin
      Result := True;
    end;
  finally
    LeaveCriticalSection(m_UserCriticalSection);
  end;
end;

procedure TFrontEngine.AddToLoadHeroRcdList(sCharName, sMsg: string; PlayObject: TObject; btLoadType: Byte);
var
  LoadRcdInfo: pTLoadDBInfo;
begin
  New(LoadRcdInfo);
  TPlayObject(PlayObject).m_boWaitHeroDate := True;
  LoadRcdInfo.sAccount := TPlayObject(PlayObject).m_sUserID;
  LoadRcdInfo.sCharName := sCharName;
  LoadRcdInfo.sIPaddr := TPlayObject(PlayObject).m_sIPaddr;
  LoadRcdInfo.boClinetFlag := TPlayObject(PlayObject).m_boClientFlag;
  LoadRcdInfo.nSessionID := TPlayObject(PlayObject).m_nSessionID;
  LoadRcdInfo.nSoftVersionDate := TPlayObject(PlayObject).m_nSoftVersionDate;
  LoadRcdInfo.nPayMent := TPlayObject(PlayObject).m_nPayMent;
  LoadRcdInfo.nPayMode := TPlayObject(PlayObject).m_nPayMode;
  LoadRcdInfo.nSocket := TPlayObject(PlayObject).m_nSocket;
  LoadRcdInfo.nGSocketIdx := TPlayObject(PlayObject).m_nGSocketIdx;
  LoadRcdInfo.nGateIdx := TPlayObject(PlayObject).m_nGateIdx;
  LoadRcdInfo.dwNewUserTick := GetTickCount();
  LoadRcdInfo.PlayObject := PlayObject;
  LoadRcdInfo.nReLoadCount := 0;
  LoadRcdInfo.boIsHero := True;
  LoadRcdInfo.btLoadDBType := btLoadType;
  LoadRcdInfo.sMsg := sMsg;
  EnterCriticalSection(m_UserCriticalSection);
  try
    m_LoadRcdList.Add(LoadRcdInfo);
  finally
    LeaveCriticalSection(m_UserCriticalSection);
  end;
end;

procedure TFrontEngine.AddToLoadRcdList(sAccount, sChrName, sIPaddr: string;
  boFlag: Boolean; nSessionID, nPayMent, nPayMode, nSoftVersionDate, nSocket, nGSocketIdx, nGateIdx: Integer);
var
  LoadRcdInfo: pTLoadDBInfo;
begin
  New(LoadRcdInfo);
  LoadRcdInfo.sAccount := sAccount;
  LoadRcdInfo.sCharName := sChrName;
  LoadRcdInfo.sIPaddr := sIPaddr;
  LoadRcdInfo.boClinetFlag := boFlag;
  LoadRcdInfo.nSessionID := nSessionID;
  LoadRcdInfo.nSoftVersionDate := nSoftVersionDate;
  LoadRcdInfo.nPayMent := nPayMent;
  LoadRcdInfo.nPayMode := nPayMode;
  LoadRcdInfo.nSocket := nSocket;
  LoadRcdInfo.nGSocketIdx := nGSocketIdx;
  LoadRcdInfo.nGateIdx := nGateIdx;
  LoadRcdInfo.dwNewUserTick := GetTickCount();
  LoadRcdInfo.PlayObject := nil;
  LoadRcdInfo.nReLoadCount := 0;
  LoadRcdInfo.boIsHero := False;

  EnterCriticalSection(m_UserCriticalSection);
  try
    m_LoadRcdList.Add(LoadRcdInfo);
  finally
    LeaveCriticalSection(m_UserCriticalSection);
  end;
end;

function TFrontEngine.LoadHumFromDB(LoadUser: pTLoadDBInfo; var boReTry: Boolean): Boolean; //004B4B10
var
  HumanRcd: THumDataInfo;
  UserOpenInfo: pTUserOpenInfo;
  PlayObject: TPlayObject;
  nOpenStatus: Integer;
resourcestring
  sReLoginFailMsg = '[非法登錄] 全局會話驗(yàn)證失敗(%s/%s/%s/%d)';
begin
  Result := False;
  boReTry := False;
  if (not LoadUser.boIsHero) or ((LoadUser.boIsHero) and (LoadUser.btLoadDBType = 0)) then begin
    if InSaveRcdList(LoadUser.sAccount, LoadUser.sCharName) then begin
      boReTry := True; //反回TRUE,則重新加入隊(duì)列
      Exit;
    end;
  end;
  if not LoadUser.boIsHero then begin
    if (UserEngine.GetPlayObjectEx(LoadUser.sAccount, LoadUser.sCharName) <> nil) then begin
      UserEngine.KickPlayObjectEx(LoadUser.sAccount, LoadUser.sCharName);
      boReTry := True; //反回TRUE,則重新加入隊(duì)列
      Exit;
    end;
  end;
  if not LoadUser.boIsHero then begin
    if not LoadHumRcdFromDB(LoadUser.sAccount, LoadUser.sCharName, LoadUser.sIPaddr, HumanRcd, LoadUser.nSessionID) then begin
      RunSocket.SendOutConnectMsg(LoadUser.nGateIdx, LoadUser.nSocket, LoadUser.nGSocketIdx);
    end else begin
      New(UserOpenInfo);
      UserOpenInfo.sAccount := LoadUser.sAccount;
      UserOpenInfo.sChrName := LoadUser.sCharName;
      UserOpenInfo.LoadUser := LoadUser^;
      UserOpenInfo.HumanRcd := HumanRcd;
      UserEngine.AddUserOpenInfo(UserOpenInfo);
      Result := True;
    end;
  end else begin
    nOpenStatus := -1;
    case LoadUser.btLoadDBType of
      0: if LoadHeroRcdFromDB(LoadUser.sAccount, LoadUser.sCharName, LoadUser.sIPaddr, HumanRcd, LoadUser.nSessionID) then nOpenStatus := 1;
      1: nOpenStatus := NewHeroRcd(LoadUser.sCharName, LoadUser.sMsg);
      2: if DelHeroRcd(LoadUser.sAccount, LoadUser.sCharName, LoadUser.sIPaddr, LoadUser.nSessionID) then nOpenStatus := 1 else nOpenStatus := 0;
    end;
    New(UserOpenInfo);
    UserOpenInfo.sAccount := LoadUser.sAccount;
    UserOpenInfo.sChrName := LoadUser.sCharName;
    UserOpenInfo.LoadUser := LoadUser^;
    UserOpenInfo.HumanRcd := HumanRcd;
    UserOpenInfo.nOpenStatus := nOpenStatus;
    UserEngine.AddUserOpenInfo(UserOpenInfo);
    Result := True;
  end;
end;

function TFrontEngine.InSaveRcdList(sAccount, sChrName: string): Boolean;
var
  I: Integer;
begin
  Result := False;
  EnterCriticalSection(m_UserCriticalSection);
  try
    for I := 0 to m_SaveRcdList.Count - 1 do begin
      if (pTSaveRcd(m_SaveRcdList.Items[I]).sAccount = sAccount) and
        (pTSaveRcd(m_SaveRcdList.Items[I]).sChrName = sChrName) then begin
        Result := True;
        Break;
      end;
    end;
  finally
    LeaveCriticalSection(m_UserCriticalSection);
  end;
end;

procedure TFrontEngine.AddChangeGoldList(sGameMasterName, sGetGoldUserName: string;
  nGold: Integer);
var
  GoldInfo: pTGoldChangeInfo;
begin
  New(GoldInfo);
  GoldInfo.sGameMasterName := sGameMasterName;
  GoldInfo.sGetGoldUser := sGetGoldUserName;
  GoldInfo.nGold := nGold;
  m_ChangeGoldList.Add(GoldInfo);
end;

procedure TFrontEngine.AddToSaveRcdList(SaveRcd: pTSaveRcd);
begin
  EnterCriticalSection(m_UserCriticalSection);
  try
    m_SaveRcdList.Add(SaveRcd);
  finally
    LeaveCriticalSection(m_UserCriticalSection);
  end;
end;

function TFrontEngine.GetSaveRcd(sAccount, sCharName: string): pTSaveRcd;
var
  I: Integer;
  SaveRcd: pTSaveRcd;
begin
  Result := nil;
  EnterCriticalSection(m_UserCriticalSection);
  try
    for I := 0 to m_SaveRcdList.Count - 1 do begin
      SaveRcd := pTSaveRcd(m_SaveRcdList.Items[I]);
      if (SaveRcd.sAccount = sAccount) and
        (SaveRcd.sChrName = sCharName) then begin
        Result := SaveRcd;
        Break;
      end;
    end;
  finally
    LeaveCriticalSection(m_UserCriticalSection);
  end;
end;

function TFrontEngine.UpDataSaveRcdList(SaveRcd: pTSaveRcd): Boolean; //2005-11-12 增加
var
  I: Integer;
  HumanRcd: pTSaveRcd;
begin
  Result := False;
  EnterCriticalSection(m_UserCriticalSection);
  try
    for I := m_SaveRcdList.Count - 1 downto 0 do begin
      HumanRcd := pTSaveRcd(m_SaveRcdList.Items[I]);
      if (HumanRcd.sAccount = SaveRcd.sAccount) and
        (HumanRcd.sChrName = SaveRcd.sChrName) then begin
        HumanRcd.HumanRcd := SaveRcd.HumanRcd;
        Result := True;
        //m_SaveRcdList.Delete(I);
        //DisPoseAndNil(SaveRcd);
        Exit;
      end;
    end;
    m_SaveRcdList.Add(SaveRcd);
  finally
    LeaveCriticalSection(m_UserCriticalSection);
  end;
end;

procedure TFrontEngine.DeleteHuman(nGateIndex, nSocket: Integer);
var
  I: Integer;
  LoadRcdInfo: pTLoadDBInfo;
begin
  EnterCriticalSection(m_UserCriticalSection);
  try
    for I := m_LoadRcdList.Count - 1 downto 0 do begin
      if m_LoadRcdList.Count <= 0 then Break;
      LoadRcdInfo := m_LoadRcdList.Items[I];
      if (LoadRcdInfo.nGateIdx = nGateIndex) and (LoadRcdInfo.nSocket = nSocket) then begin
        m_LoadRcdList.Delete(I);
        Dispose(LoadRcdInfo);
        Break;
      end;
    end;
  finally
    LeaveCriticalSection(m_UserCriticalSection);
  end;
end;

function TFrontEngine.ChangeUserGoldInDB(GoldChangeInfo: pTGoldChangeInfo): Boolean;
var
  HumanRcd: THumDataInfo;
begin
  Result := False;
  if LoadHumRcdFromDB('1', GoldChangeInfo.sGetGoldUser, '1', HumanRcd, 1) then begin
    if ((HumanRcd.Data.nGold + GoldChangeInfo.nGold) > 0) and ((HumanRcd.Data.nGold + GoldChangeInfo.nGold) < 2000000000) then begin
      Inc(HumanRcd.Data.nGold, GoldChangeInfo.nGold);
      if SaveHumRcdToDB('1', GoldChangeInfo.sGetGoldUser, 1, False, HumanRcd) then begin
        UserEngine.sub_4AE514(GoldChangeInfo);
        Result := True;
      end;
    end;
  end;
end;

procedure TFrontEngine.Run;
begin
  ProcessGameDate();
  GetGameTime();
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久亚洲一区二区三区青草| 亚洲在线视频一区| 9色porny自拍视频一区二区| 国产人久久人人人人爽| 韩国三级电影一区二区| 久久亚洲免费视频| 欧美日韩黄色一区二区| 国产+成+人+亚洲欧洲自线| 精品sm捆绑视频| 在线观看亚洲精品| 国产成人在线观看免费网站| 亚洲成人一区二区| 欧美电视剧在线观看完整版| 99久久精品情趣| 国产激情偷乱视频一区二区三区| 日本一区二区三区久久久久久久久不 | 国产午夜精品久久久久久免费视| 欧美午夜精品一区二区三区| 国产超碰在线一区| 亚洲色图色小说| 欧美日韩专区在线| eeuss鲁片一区二区三区在线看| 另类小说视频一区二区| 亚洲第一激情av| 欧美va亚洲va| 欧美精品在线一区二区| 精品一区二区三区不卡| 国产婷婷精品av在线| 欧美一区二区三区四区久久 | 色琪琪一区二区三区亚洲区| 一区二区三区成人在线视频| 国产精品美女一区二区在线观看| 精品国产区一区| jlzzjlzz欧美大全| 高清成人免费视频| 国产一区二区免费视频| 精品写真视频在线观看| 美脚の诱脚舐め脚责91| 亚洲一区二区欧美日韩| 亚洲在线观看免费| 欧美精品一区二区三区蜜桃视频| aaa亚洲精品一二三区| 全国精品久久少妇| 青青草原综合久久大伊人精品优势| www久久久久| 色婷婷av久久久久久久| 欧洲精品中文字幕| 欧美日韩精品一区二区三区| 国产精品亚洲成人| 丰满亚洲少妇av| 日韩av网站在线观看| 免费在线一区观看| 国产乱码字幕精品高清av| 极品少妇xxxx偷拍精品少妇| 国内精品国产成人| 午夜在线成人av| 中文字幕一区在线观看| 欧美电视剧免费观看| 欧美不卡一二三| 久久久久国产成人精品亚洲午夜| 色94色欧美sute亚洲线路一ni| 久久99日本精品| 国产剧情一区二区| 99精品欧美一区二区三区小说| 99精品久久99久久久久| 欧美性色黄大片| 日韩精品一区二区三区视频| 色综合色狠狠天天综合色| 欧美三区免费完整视频在线观看| 欧美日韩大陆在线| 欧美成人精品福利| 国产欧美一区二区三区沐欲| 91精品国产综合久久久久久久| 91首页免费视频| 欧美日韩午夜影院| 久久亚洲综合色一区二区三区| 欧美高清hd18日本| 欧美日韩精品一区二区三区蜜桃| 日韩欧美一二三| 成人欧美一区二区三区| 亚洲国产日韩在线一区模特 | 亚洲成人av电影| 韩国一区二区视频| 色成年激情久久综合| 欧美刺激午夜性久久久久久久| 国产精品人成在线观看免费| 久久久综合精品| 日韩欧美在线123| 中文字幕日韩一区二区| 日韩精品成人一区二区三区| 亚洲精品国产精品乱码不99| 亚洲日本va在线观看| 美美哒免费高清在线观看视频一区二区 | 欧美韩日一区二区三区| 亚洲综合丁香婷婷六月香| 国产一区二区视频在线| 色婷婷综合视频在线观看| 91丨porny丨中文| 精品国内片67194| 精品国产精品一区二区夜夜嗨 | 美女一区二区在线观看| 日本欧美加勒比视频| av午夜精品一区二区三区| caoporen国产精品视频| 欧美tk丨vk视频| 久久久www成人免费毛片麻豆| 亚洲成年人网站在线观看| 99riav一区二区三区| 91精品福利在线| 欧美激情一区不卡| 久久精品99久久久| 欧美三电影在线| 日韩三级中文字幕| 亚洲高清免费在线| 91在线看国产| 8x8x8国产精品| 久久综合精品国产一区二区三区 | www.色精品| 久久蜜臀中文字幕| 欧美大尺度电影在线| 欧美mv日韩mv国产网站app| 精品奇米国产一区二区三区| 亚洲福利电影网| 奇米777欧美一区二区| 性欧美大战久久久久久久久| 色伊人久久综合中文字幕| 国产精品毛片a∨一区二区三区 | 欧美三级资源在线| 一区二区三区美女| 日韩avvvv在线播放| 欧美色综合网站| www久久精品| 精品一区二区在线看| 91精品福利在线一区二区三区| 亚洲福利电影网| 久99久精品视频免费观看| 欧美一区二区三区小说| 日韩成人精品在线观看| 国产一区二区三区不卡在线观看 | 7777精品伊人久久久大香线蕉超级流畅| 欧美高清激情brazzers| 天天影视涩香欲综合网| 欧美高清你懂得| 国产精品婷婷午夜在线观看| 国产精品一区二区无线| 国产日韩欧美在线一区| 国产a区久久久| 一区免费观看视频| 91年精品国产| 91精品国产欧美一区二区| 日本特黄久久久高潮| 成人丝袜高跟foot| 成人欧美一区二区三区白人| 日本系列欧美系列| www.在线成人| 日韩欧美高清在线| 一区二区三区视频在线观看| 韩国av一区二区| 国产精品―色哟哟| 91黄色小视频| 久久精品噜噜噜成人av农村| 国产婷婷色一区二区三区| 91免费观看视频在线| 丝袜美腿亚洲综合| 久久久不卡网国产精品二区| 91香蕉视频在线| 久久日韩粉嫩一区二区三区| 成人av电影免费观看| 欧美精品一区二区三区蜜臀| 偷拍日韩校园综合在线| 精品欧美久久久| 91小视频免费观看| 日本午夜一本久久久综合| 国产人成一区二区三区影院| 欧美在线短视频| 亚洲激情校园春色| 97se亚洲国产综合自在线| 日日嗨av一区二区三区四区| 国产婷婷精品av在线| 欧美三级电影网站| 大白屁股一区二区视频| 亚洲尤物视频在线| 国产剧情一区二区三区| 一区二区三区高清| 精品国产91久久久久久久妲己| 亚洲精品国产成人久久av盗摄| 日韩一本二本av| 99精品视频免费在线观看| 久久久久久久一区| 国产精品一区二区不卡| 亚洲一区二区三区四区五区中文| 亚洲精品在线一区二区| 91成人免费网站| 一区二区免费在线播放| 久久精品水蜜桃av综合天堂| 欧美三级韩国三级日本一级| a美女胸又www黄视频久久| 综合自拍亚洲综合图不卡区| 欧美tk—视频vk| 欧美理论片在线|