⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objbase.pas

📁 传奇2...飘飘M2的源码.曾经是传奇"龙"版用得最好的M2程序.完整M2源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  m_wGroupRcallTime := 0;
  m_dwGroupRcallTick := GetTickCount();
  m_boRecallSuite := False;
  bo245 := False;
  m_boTestGa := False;
  m_boGsa := False;
  bo2BA := False;
  m_boAbilSeeHealGauge := False;
  m_boPowerHit := False;
  m_boUseThrusting := False;
  m_boUseHalfMoon := False;
  m_boFireHitSkill := False;
  m_btHitPoint := 5;
  m_btSpeedPoint := 15;
  m_nHitSpeed := 0;
  m_btLifeAttrib := 0;
  m_btAntiPoison := 0;
  m_nPoisonRecover := 0;
  m_nHealthRecover := 0;
  m_nSpellRecover := 0;
  m_nAntiMagic := 0;
  m_nLuck := 0;
  m_nIncSpell := 0;
  m_nIncHealth := 0;
  m_nIncHealing := 0;
  m_nPerHealth := 5;
  m_nPerHealing := 5;
  m_nPerSpell := 5;
  m_dwIncHealthSpellTick := GetTickCount();
  m_btGreenPoisoningPoint := 0;
  m_nFightZoneDieCount := 0;
  //  m_nGoldMax       := 5000000;
  m_nGoldMax := g_Config.nHumanMaxGold;
  m_nCharStatus := 0;
  m_nCharStatusEx := 0;
  FillChar(m_wStatusTimeArr, SizeOf(TStatusTime), #0); //004B7A83
  FillChar(m_BonusAbil, SizeOf(TNakedAbility), #0);
  FillChar(m_CurBonusAbil, SizeOf(TNakedAbility), #0);

  FillChar(m_wStatusArrValue, SizeOf(m_wStatusArrValue), 0);
  FillChar(m_dwStatusArrTimeOutTick, SizeOf(m_dwStatusArrTimeOutTick), #0);
  m_boAllowGroup := False;
  m_boAllowGuild := False;
  btB2 := 0;
  m_btAttatckMode := 0;
  m_boInFreePKArea := False;
  m_boGuildWarArea := False;
  bo2B0 := False;
  m_boSuperMan := False;
  m_boSkeleton := False;
  bo2BF := False;
  m_boHolySeize := False;
  m_boCrazyMode := False;
  m_boShowHP := False;
  bo2F0 := False;
  m_boAnimal := False;
  m_boNoItem := False;
  m_nBodyLeathery := 50;
  m_boFixedHideMode := False;
  m_boStickMode := False;
  m_boNoAttackMode := False;
  bo2C1 := False;
  m_boPKFlag := False;
  m_nMoXieSuite := 0;
  m_nHongMoSuite := 0;
  m_db3B0 := 0;
  FillChar(m_AddAbil, SizeOf(TAddAbility), #0);
  m_MsgList := TList.Create;
  m_VisibleHumanList := TList.Create;
  LIst_3EC := TList.Create;
  m_VisibleActors := TList.Create;
  m_VisibleItems := TList.Create;
  m_VisibleEvents := TList.Create;
  m_ItemList := TList.Create;
  m_DealItemList := TList.Create;
  m_boIsVisibleActive := False;
  m_nProcessRunCount := 0;
  m_nDealGolds := 0;
  m_MagicList := TList.Create;
  m_StorageItemList := TList.Create;
  FillChar(m_UseItems, SizeOf(THumanUseItems), 0);
  m_MagicOneSwordSkill := nil;
  m_MagicPowerHitSkill := nil;
  m_MagicErgumSkill := nil;
  m_MagicBanwolSkill := nil;
  m_MagicFireSwordSkill := nil;
  m_MagicCrsSkill := nil;
  m_Magic41Skill := nil;
  m_Magic42Skill := nil;
  m_Magic43Skill := nil;
  m_GroupOwner := nil;
  m_Castle := nil;
  m_Master := nil;
  n294 := 0;
  m_btSlaveExpLevel := 0;
  bt2A0 := 0;
  m_GroupMembers := TStringList.Create;
  m_boHearWhisper := True;
  m_boBanShout := True;
  m_boBanGuildChat := True;
  m_boAllowDeal := True;
  m_boAllowGroupReCall := False;
  m_BlockWhisperList := TStringList.Create;
  m_SlaveList := TList.Create;
  FillChar(m_WAbil, SizeOf(TAbility), #0);
  FillChar(m_QuestUnitOpen, SizeOf(TQuestUnit), #0);
  FillChar(m_QuestUnit, SizeOf(TQuestUnit), #0);
  m_Abil.Level := 1;
  m_Abil.AC := 0;
  m_Abil.MAC := 0;
  m_Abil.DC := MakeLong(1, 4);
  m_Abil.MC := MakeLong(1, 2);
  m_Abil.SC := MakeLong(1, 2);
  m_Abil.HP := 15;
  m_Abil.MP := 15;
  m_Abil.MaxHP := 15;
  m_Abil.MaxMP := 15;
  m_Abil.Exp := 0;
  m_Abil.MaxExp := 50;
  m_Abil.Weight := 0;
  m_Abil.MaxWeight := 100;
  m_boWantRefMsg := False;
  m_boDealing := False;
  m_DealCreat := nil;
  m_MyGuild := nil;
  m_nGuildRankNo := 0;
  m_sGuildRankName := '';
  m_sScriptLable := '';
  m_boMission := False;
  m_boHideMode := False;
  m_boStoneMode := False;
  m_boCoolEye := False;
  m_boUserUnLockDurg := False;
  m_boTransparent := False;
  m_boAdminMode := False;
  m_boObMode := False;
  m_dwRunTick := GetTickCount + LongWord(Random(1500));
  m_nRunTime := 250;
  m_dwSearchTime := Random(2000) + 2000;
  m_dwSearchTick := GetTickCount;
  m_dwDecPkPointTick := GetTickCount;
  m_DecLightItemDrugTick := GetTickCount();
  m_dwPoisoningTick := GetTickCount;
  m_dwVerifyTick := GetTickCount();
  m_dwCheckRoyaltyTick := GetTickCount();
  m_dwDecHungerPointTick := GetTickCount();
  m_dwHPMPTick := GetTickCount();
  m_dwShoutMsgTick := 0;
  m_dwTeleportTick := 0;
  m_dwProbeTick := 0;
  m_dwMapMoveTick := GetTickCount();
  m_dwMasterTick := 0;
  m_nWalkSpeed := 1400;
  m_nNextHitTime := 2000;
  m_nWalkCount := 0;
  m_dwWalkWaitTick := GetTickCount();
  m_boWalkWaitLocked := False;
  m_nHealthTick := 0;
  m_nSpellTick := 0;
  m_TargetCret := nil;
  m_LastHiter := nil;
  m_ExpHitter := nil;
  m_SayMsgList := nil;
  m_boDenyRefStatus := False;
  m_btHorseType := 0;
  m_btDressEffType := 0;
  m_dwPKDieLostExp := 0;
  m_nPKDieLostLevel := 0;
  m_boAddToMaped := True;
  m_boAutoChangeColor := False;
  m_dwAutoChangeColorTick := GetTickCount();
  m_nAutoChangeIdx := 0;

  m_boFixColor := False;
  m_nFixColorIdx := 0;
  m_nFixStatus := -1;
  m_boFastParalysis := False;

  m_boAC := True;
  m_boMAC := True;
  m_boDC := True;
  m_boMC := True;
  m_boSC := True;
  m_boHitSpeed := True;
  m_boMaxHP := True;
  m_boMaxMP := True;
  m_nCopyHumanLevel := 0; //复制人状态
  m_boRobotObject := False;
  m_dwSayMyInfoTick := GetTickCount;
  m_dwStationTick := GetTickCount; //站的时间
end;


destructor TBaseObject.Destroy;
var
  i: Integer;
  SendMessage: pTSendMessage;
  nCheckCode: Integer;
resourcestring
  sExceptionMsg = '[Exception] TBaseObject::Destroy Code: %d';
begin
  nCheckCode := 0;
  try
    nCheckCode := 1;
    if m_MsgList <> nil then begin
      if m_MsgList.Count > 0 then begin
        for i := 0 to m_MsgList.Count - 1 do begin
          nCheckCode := 2;
          SendMessage := m_MsgList.Items[i];
          if (SendMessage.wIdent = RM_SENDDELITEMLIST) and (SendMessage.nParam1 <> 0) then begin
            nCheckCode := 3;
            if TStringList(SendMessage.nParam1) <> nil then begin
              TStringList(SendMessage.nParam1).Free;
              nCheckCode := 4;
            end;
          end;
          if (SendMessage.wIdent = RM_10401) and (SendMessage.nParam1 <> 0) then begin
            nCheckCode := 5;
            DisPose(pTSlaveInfo(SendMessage.nParam1));
          end;
          nCheckCode := 6;
          if (SendMessage.Buff <> nil) then begin
            nCheckCode := 7;
            FreeMem(SendMessage.Buff);
          end;
          DisPose(SendMessage);
          nCheckCode := 8;
        end;
      end;
      nCheckCode := 9;
      FreeAndNil(m_MsgList);
    end;

    nCheckCode := 10;
    if m_VisibleHumanList <> nil then
      FreeAndNil(m_VisibleHumanList);
    nCheckCode := 11;
    for i := 0 to LIst_3EC.Count - 1 do begin

    end;
    FreeAndNil(LIst_3EC);
    nCheckCode := 12;
    if m_VisibleActors <> nil then begin
      if m_VisibleActors.Count > 0 then begin
        for i := 0 to m_VisibleActors.Count - 1 do begin
          if pTVisibleBaseObject(m_VisibleActors.Items[i]) <> nil then
            DisPose(pTVisibleBaseObject(m_VisibleActors.Items[i]));
        end;
      end;
      nCheckCode := 13;
      FreeAndNil(m_VisibleActors);
    end;
    nCheckCode := 14;
    if m_VisibleItems <> nil then begin
      if m_VisibleItems.Count > 0 then begin
        for i := 0 to m_VisibleItems.Count - 1 do begin
          if pTVisibleMapItem(m_VisibleItems.Items[i]) <> nil then
            DisPose(pTVisibleMapItem(m_VisibleItems.Items[i]));
        end;
      end;
      nCheckCode := 15;
      FreeAndNil(m_VisibleItems);
    end;
    nCheckCode := 16;
    if m_VisibleEvents <> nil then
      FreeAndNil(m_VisibleEvents);
    nCheckCode := 17;
    if m_ItemList <> nil then begin
      if m_ItemList.Count > 0 then begin
        for i := 0 to m_ItemList.Count - 1 do begin
          if pTUserItem(m_ItemList.Items[i]) <> nil then
            DisPose(pTUserItem(m_ItemList.Items[i]));
        end;
      end;
      nCheckCode := 18;
      FreeAndNil(m_ItemList);
    end;
    nCheckCode := 19;
    if m_DealItemList <> nil then begin
      if m_DealItemList.Count > 0 then begin
        for i := 0 to m_DealItemList.Count - 1 do begin
          if pTUserItem(m_DealItemList.Items[i]) <> nil then
            DisPose(pTUserItem(m_DealItemList.Items[i]));
        end;
      end;
      FreeAndNil(m_DealItemList);
      nCheckCode := 20;
    end;
    if m_MagicList <> nil then begin
      if m_MagicList.Count > 0 then begin
        for i := 0 to m_MagicList.Count - 1 do begin
          if pTUserMagic(m_MagicList.Items[i]) <> nil then
            DisPose(pTUserMagic(m_MagicList.Items[i]));
        end;
      end;
      FreeAndNil(m_MagicList);
     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -