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

📄 objbase.pas

📁 原版翎风(LF)引擎(M2)源码(Delphi)
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  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_MagicRedBanwolSkill := nil;
  m_MagicFireSwordSkill := nil;
  m_MagicCrsSkill := nil;
  m_Magic41Skill := nil;
  m_MagicTwnHitSkill := 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_boNastyMode := False;
end;

destructor TBaseObject.Destroy; //004B80C0
var
  i: Integer;
  SendMessage: pTSendMessage;
  nCheckCode: Integer;
resourcestring
  sExceptionMsg = '[Exception] TBaseObject::Destroy Code: %d';
begin
  nCheckCode := 0;
  try
    nCheckCode := 1;
    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; //004B81EE
    nCheckCode := 9;
    m_MsgList.Free;
    nCheckCode := 10;
    m_VisibleHumanList.Free;
    nCheckCode := 11;
    for i := 0 to LIst_3EC.Count - 1 do
    begin

    end; //004B8249
    LIst_3EC.Free;
    nCheckCode := 12;
    for i := 0 to m_VisibleActors.Count - 1 do
    begin
      Dispose(pTVisibleBaseObject(m_VisibleActors.Items[i]));
    end; //004B8296
    nCheckCode := 13;
    m_VisibleActors.Free;
    nCheckCode := 14;
    for i := 0 to m_VisibleItems.Count - 1 do
    begin
      Dispose(pTVisibleMapItem(m_VisibleItems.Items[i]));
    end; //004B82E3
    nCheckCode := 15;
    m_VisibleItems.Free;
    nCheckCode := 16;
    m_VisibleEvents.Free;
    nCheckCode := 17;
    for i := 0 to m_ItemList.Count - 1 do
    begin
      Dispose(pTUserItem(m_ItemList.Items[i]));
    end; //004B833E
    nCheckCode := 18;
    m_ItemList.Free;
    nCheckCode := 19;
    for i := 0 to m_DealItemList.Count - 1 do
    begin
      Dispose(pTUserItem(m_DealItemList.Items[i]));
    end; //004B838B
    m_DealItemList.Free;
    nCheckCode := 20;
    for i := 0 to m_MagicList.Count - 1 do
    begin
      Dispose(pTUserMagic(m_MagicList.Items[i]));
    end; //004B83D8
    m_MagicList.Free;
    nCheckCode := 21;
    for i := 0 to m_StorageItemList.Count - 1 do
    begin
      Dispose(pTUserItem(m_StorageItemList.Items[i]));
    end; //004B8425
    m_StorageItemList.Free;
    nCheckCode := 22;
    m_GroupMembers.Free;
    nCheckCode := 23;
    m_BlockWhisperList.Free;
    nCheckCode := 24;
    m_SlaveList.Free;
    nCheckCode := 25;
  except
    on E: Exception do
    begin
      MainOutMessage(Format(sExceptionMsg, [nCheckCode]));
      MainOutMessage(E.Message);
    end;
  end;
  {
  for I := 0 to CertCheck.Count - 1 do begin
    if CertCheck.Items[I] = Self then begin
      CertCheck.Delete(I);
      break;
    end;
  end;
  }
  inherited;
end;

procedure TBaseObject.ChangePKStatus(boWarFlag: Boolean); //004B84C8
begin
  if m_boInFreePKArea <> boWarFlag then
  begin
    m_boInFreePKArea := boWarFlag;
    m_boNameColorChanged := True;
  end;
end;

function TBaseObject.GetDropPosition(nOrgX, nOrgY, nRange: Integer; var nDX: Integer; var nDY: Integer): Boolean; //004C5238
var
  i, ii, III: Integer;
  nItemCount, n24, n28, n2C: Integer;
begin
  n24 := 999;
  Result := False;
  n28 := 0; //09/10
  n2C := 0; //09/10
  for i := 1 to nRange do
  begin
    for ii := -i to i do
    begin
      for III := -i to i do
      begin
        nDX := nOrgX + III;
        nDY := nOrgY + ii;
        if m_PEnvir.GetItemEx(nDX, nDY, nItemCount) = nil then
        begin
          if m_PEnvir.bo2C then
          begin
            Result := True;
            Break;
          end;
        end else
        begin
          if m_PEnvir.bo2C and (n24 > nItemCount) then
          begin
            n24 := nItemCount;
            n28 := nDX;
            n2C := nDY;
          end;
        end;
      end;
      if Result then Break;
    end;
    if Result then Break;
  end;
  if not Result then
  begin
    if n24 < 8 then
    begin
      nDX := n28;
      nDY := n2C;
    end else
    begin
      nDX := nOrgX;
      nDY := nOrgY;
    end;
  end;
end;
//004C5478
function TBaseObject.DropItemDown(UserItem: pTUserItem; nScatterRange: Integer; boDieDrop: Boolean; ItemOfCreat, DropCreat: TBaseObject): Boolean;
var
  dx, dy, idura: Integer;
  MapItem, pr: pTMapItem;
  StdItem: TItem;
  logcap: string;
begin
  Result := False;
  StdItem := UserEngine.GetStdItem(UserItem.wIndex);
  if StdItem <> nil then
  begin
    if StdItem.StdMode = 40 then
    begin
      idura := UserItem.Dura;
      idura := idura - 2000;
      if idura < 0 then idura := 0;
      UserItem.Dura := idura;
    end;

    New(MapItem);
    MapItem.UserItem := UserItem^;
    MapItem.Name := GetItemName(UserItem); //取自定义物品

⌨️ 快捷键说明

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