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

📄 castlemanage.pas

📁 继续更新AFT源代码 现在解决了无法登陆游戏的问题 用0504的dbserver就可以登陆了 去掉了绿字广告 降低内存占用HOO 去掉了大量的验证问题
💻 PAS
字号:
unit CastleManage;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Spin;

type
  TfrmCastleManage = class(TForm)
    GroupBox1: TGroupBox;
    ListViewCastle: TListView;
    GroupBox2: TGroupBox;
    PageControlCastle: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    GroupBox3: TGroupBox;
    Label2: TLabel;
    EditOwenGuildName: TEdit;
    Label1: TLabel;
    Label3: TLabel;
    EditTotalGold: TSpinEdit;
    EditTodayIncome: TSpinEdit;
    Label7: TLabel;
    EditTechLevel: TSpinEdit;
    Label8: TLabel;
    EditPower: TSpinEdit;
    TabSheet3: TTabSheet;
    GroupBox5: TGroupBox;
    ListViewGuard: TListView;
    ButtonRefresh: TButton;
    TabSheet4: TTabSheet;
    Button3: TButton;
    Button1: TButton;
    Button2: TButton;
    ListViewWar: TListView;
    ButtonCastleSave: TButton;
    GroupBox4: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    EditCastleName: TEdit;
    EditCastleGuild: TEdit;
    EditCastleHome: TEdit;
    EditCastleHomex: TEdit;
    EditCastleHuang: TEdit;
    EditCastleMiDao: TEdit;
    UpDown1: TUpDown;
    UpDown2: TUpDown;
    EditCastleHomey: TEdit;
    procedure ListViewCastleClick(Sender: TObject);
    procedure ButtonRefreshClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ButtonCastleSaveClick(Sender: TObject);
  private
    procedure RefCastleList;
    procedure RefCastleInfo;
    { Private declarations }
  public
    procedure Open();
    { Public declarations }
  end;

var
  frmCastleManage: TfrmCastleManage;

implementation

uses Castle, M2Share,CastleAttackEdit;

{$R *.dfm}
var
  CurCastle:TUserCastle;
  boRefing:Boolean;
{ TfrmCastleManage }

procedure TfrmCastleManage.Open;
begin
  RefCastleList();
  ShowModal;
end;

procedure TfrmCastleManage.RefCastleInfo;
var
  i, ii             : Integer;
  ListItem          : TListItem;
  ObjUnit           : pTObjUnit;
begin
  if CurCastle = nil then
    exit;
  boRefing := True;
  if CurCastle.m_MasterGuild = nil then
    EditOwenGuildName.Text := ''
  else
    EditOwenGuildName.Text := CurCastle.m_MasterGuild.sGuildName;
  EditTotalGold.Value := CurCastle.m_nTotalGold;
  EditTodayIncome.Value := CurCastle.m_nTodayIncome;
  EditTechLevel.Value := CurCastle.m_nTechLevel;
  EditPower.Value := CurCastle.m_nPower;

  EditCastleName.Text:=CurCastle.m_sName;
  EditCastleHome.Text:=CurCastle.m_sHomeMap;
  EditCastleGuild.Text:=CurCastle.m_sOwnGuild;
  EditCastleHuang.Text:=CurCastle.m_sPalaceMap;
  EditCastleMiDao.Text:=CurCAstle.m_sSecretMap;
  UpDown1.Position:=CurCastle.m_nPalaceDoorX;
  UpDown2.Position:=CurCAstle.m_nPalaceDoorY;


  ListViewWar.Clear;
  if CurCastle.m_AttackWarList.Count>0 then
  Begin
     for i:=0 to  CurCastle.m_AttackWarList.Count-1 do
     Begin
        ListItem := ListVIewWar.Items.Add;
        ListItem.Caption:=Inttostr(i);
        ListItem.SubItems.Add(pTAttackerInfo(CurCastle.m_AttackWarList.Items[i]).sGuildName);
        ListItem.SubItems.Add(Datetostr(pTAttackerInfo(CurCastle.m_AttackWarList.Items[i]).AttackDate));
     End;
  End;


  ListViewGuard.Clear;
  ListItem := ListViewGuard.Items.Add;
  ListItem.Caption := '0';
  if CurCastle.m_MainDoor.BaseObject <> nil then
  begin
    ListItem.SubItems.Add(CurCastle.m_MainDoor.BaseObject.m_sCharName);
    ListItem.SubItems.Add(format('%d:%d',
      [CurCastle.m_MainDoor.BaseObject.m_nCurrX,
      CurCastle.m_MainDoor.BaseObject.m_nCurrY]));
    ListItem.SubItems.Add(format('%d/%d',
      [CurCastle.m_MainDoor.BaseObject.m_WAbil.HP,
      CurCastle.m_MainDoor.BaseObject.m_WAbil.MaxHP]));
    if CurCastle.m_MainDoor.BaseObject.m_boDeath then
    begin
      ListItem.SubItems.Add('损坏');
    end
    else if (CurCastle.m_DoorStatus <> nil) and CurCastle.m_DoorStatus.boOpened
      then
    begin
      ListItem.SubItems.Add('开启');
    end
    else
    begin
      ListItem.SubItems.Add('关闭');
    end;
  end
  else
  begin
    ListItem.SubItems.Add(CurCastle.m_MainDoor.sName);
    ListItem.SubItems.Add(format('%d:%d', [CurCastle.m_MainDoor.nX,
      CurCastle.m_MainDoor.nY]));
    ListItem.SubItems.Add(format('%d/%d', [0, 0]));
  end;

  ListItem := ListViewGuard.Items.Add;
  ListItem.Caption := '1';
  if CurCastle.m_LeftWall.BaseObject <> nil then
  begin
    ListItem.SubItems.Add(CurCastle.m_LeftWall.BaseObject.m_sCharName);
    ListItem.SubItems.Add(format('%d:%d',
      [CurCastle.m_LeftWall.BaseObject.m_nCurrX,
      CurCastle.m_LeftWall.BaseObject.m_nCurrY]));
    ListItem.SubItems.Add(format('%d/%d',
      [CurCastle.m_LeftWall.BaseObject.m_WAbil.HP,
      CurCastle.m_LeftWall.BaseObject.m_WAbil.MaxHP]));
  end
  else
  begin
    ListItem.SubItems.Add(CurCastle.m_LeftWall.sName);
    ListItem.SubItems.Add(format('%d:%d', [CurCastle.m_LeftWall.nX,
      CurCastle.m_LeftWall.nY]));
    ListItem.SubItems.Add(format('%d/%d', [0, 0]));
  end;

  ListItem := ListViewGuard.Items.Add;
  ListItem.Caption := '2';
  if CurCastle.m_CenterWall.BaseObject <> nil then
  begin
    ListItem.SubItems.Add(CurCastle.m_CenterWall.BaseObject.m_sCharName);
    ListItem.SubItems.Add(format('%d:%d',
      [CurCastle.m_CenterWall.BaseObject.m_nCurrX,
      CurCastle.m_CenterWall.BaseObject.m_nCurrY]));
    ListItem.SubItems.Add(format('%d/%d',
      [CurCastle.m_CenterWall.BaseObject.m_WAbil.HP,
      CurCastle.m_CenterWall.BaseObject.m_WAbil.MaxHP]));
  end
  else
  begin
    ListItem.SubItems.Add(CurCastle.m_CenterWall.sName);
    ListItem.SubItems.Add(format('%d:%d', [CurCastle.m_CenterWall.nX,
      CurCastle.m_CenterWall.nY]));
    ListItem.SubItems.Add(format('%d/%d', [0, 0]));
  end;

  ListItem := ListViewGuard.Items.Add;
  ListItem.Caption := '3';
  if CurCastle.m_RightWall.BaseObject <> nil then
  begin
    ListItem.SubItems.Add(CurCastle.m_RightWall.BaseObject.m_sCharName);
    ListItem.SubItems.Add(format('%d:%d',
      [CurCastle.m_RightWall.BaseObject.m_nCurrX,
      CurCastle.m_RightWall.BaseObject.m_nCurrY]));
    ListItem.SubItems.Add(format('%d/%d',
      [CurCastle.m_RightWall.BaseObject.m_WAbil.HP,
      CurCastle.m_RightWall.BaseObject.m_WAbil.MaxHP]));
  end
  else
  begin
    ListItem.SubItems.Add(CurCastle.m_RightWall.sName);
    ListItem.SubItems.Add(format('%d:%d', [CurCastle.m_RightWall.nX,
      CurCastle.m_RightWall.nY]));
    ListItem.SubItems.Add(format('%d/%d', [0, 0]));
  end;
  for i := Low(CurCastle.m_Archer) to High(CurCastle.m_Archer) do
  begin
    ObjUnit := @CurCastle.m_Archer[i];
    ListItem := ListViewGuard.Items.Add;
    ListItem.Caption := IntToStr(i + 4);
    if ObjUnit.BaseObject <> nil then
    begin
      ListItem.SubItems.Add(ObjUnit.BaseObject.m_sCharName);
      ListItem.SubItems.Add(format('%d:%d', [ObjUnit.BaseObject.m_nCurrX,
        ObjUnit.BaseObject.m_nCurrY]));
      ListItem.SubItems.Add(format('%d/%d', [ObjUnit.BaseObject.m_WAbil.HP,
        ObjUnit.BaseObject.m_WAbil.MaxHP]));
    end
    else
    begin
      ListItem.SubItems.Add(ObjUnit.sName);
      ListItem.SubItems.Add(format('%d:%d', [ObjUnit.nX, ObjUnit.nY]));
      ListItem.SubItems.Add(format('%d/%d', [0, 0]));
    end;
  end;
  for ii := Low(CurCastle.m_Guard) to High(CurCastle.m_Guard) do
  begin
    ObjUnit := @CurCastle.m_Guard[ii];
    ListItem := ListViewGuard.Items.Add;
    ListItem.Caption := IntToStr(i + 4);
    if ObjUnit.BaseObject <> nil then
    begin
      ListItem.SubItems.Add(ObjUnit.BaseObject.m_sCharName);
      ListItem.SubItems.Add(format('%d:%d', [ObjUnit.BaseObject.m_nCurrX,
        ObjUnit.BaseObject.m_nCurrY]));
      ListItem.SubItems.Add(format('%d/%d', [ObjUnit.BaseObject.m_WAbil.HP,
        ObjUnit.BaseObject.m_WAbil.MaxHP]));
    end
    else
    begin
      ListItem.SubItems.Add(ObjUnit.sName);
      ListItem.SubItems.Add(format('%d:%d', [ObjUnit.nX, ObjUnit.nY]));
      ListItem.SubItems.Add(format('%d/%d', [0, 0]));
    end;
  end;
  boRefing := False;
end;

procedure TfrmCastleManage.RefCastleList;
var
  I: Integer;
  UserCastle:TUserCastle;
  ListItem:TListItem;
begin
  g_CastleManager.Lock;
  try
    for I := 0 to g_CastleManager.m_CastleList.Count - 1 do begin
      UserCastle:=TUserCastle(g_CastleManager.m_CastleList.Items[I]);
      ListItem:=ListViewCastle.Items.Add;
      ListItem.Caption:=IntToStr(I);
      ListItem.SubItems.AddObject(UserCastle.m_sConfigDir,UserCastle);
      ListItem.SubItems.Add(UserCastle.m_sName)
    end;
  finally
    g_CastleManager.UnLock;
  end;
end;

procedure TfrmCastleManage.ListViewCastleClick(Sender: TObject);
var
  ListItem:TListItem;
begin
  ListItem:=ListViewCastle.Selected;
  if ListItem = nil then exit;
  CurCastle:=TUserCastle(ListItem.SubItems.Objects[0]);
  RefCastleInfo();
end;

procedure TfrmCastleManage.ButtonRefreshClick(Sender: TObject);
begin
  RefCastleInfo();
end;

procedure TfrmCastleManage.Button1Click(Sender: TObject);
var
   info:pTAttackerInfo;
    i:integer;
begin

    if ListViewCastle.Selected=nil then exit;

    New(Info);
    formcastleAttackedit.CheckBox1.Checked:=False;//还原申请所有行会
    FormCastleAttackEdit.Open(info,False);


    if formcastleAttackedit.CheckBox1.Checked then
   Begin
   CurCastle.m_AttackWarList.Clear;//如果是申请所有行会先删除所有申请的列表
     for i:=0 to formcastleAttackedit.ListBox1.Items.Count-1 do //循环加入所有行会
       begin
      Info^.sGuildName:= formcastleAttackedit.ListBox1.Items.Strings[i];
      Info^.AttackDate:=formcastleAttackedit.DateTimePicker1.Date;
      CurCastle.m_AttackWarList.Add(Info); //加入到攻城列表
      RefCastleInfo;
      New(Info);
      end
   End
   else
    if info.sGuildName<>'' then
     begin
        CurCastle.m_AttackWarList.Add(Info); //加入到攻城列表
    RefCastleInfo;
    end;
end;

procedure TfrmCastleManage.Button2Click(Sender: TObject);
begin
 if ListViewWar.ItemIndex>=0 then
 Begin
    FormCastleAttackEdit.Open(pTAttackerInfo(CurCastle.m_AttackWarList.Items[ListViewWar.ItemIndex]),True);
    RefCastleInfo;
 End;
end;

procedure TfrmCastleManage.Button3Click(Sender: TObject);
var
   info:pTAttackerInfo;
begin
    if ListViewWar.ItemIndex>=0 then
    Begin
      Info:=pTAttackerInfo(CurCastle.m_AttackWarList.Items[ListViewWar.ItemIndex]);
      DisPose(Info);
      CurCastle.m_AttackWarList.Delete(ListViewWar.ItemIndex);
      RefCastleInfo;
    End;
end;

procedure TfrmCastleManage.ButtonCastleSaveClick(Sender: TObject);
begin
  if CurCastle = nil then
    exit;


  CurCastle.m_sName:= EditCastleName.Text ;
  CurCastle.m_sHomeMap:= EditCastleHome.Text ;
  CurCastle.m_sOwnGuild:= EditCastleGuild.Text ;
  CurCastle.m_sPalaceMap:= EditCastleHuang.Text ;
  CurCAstle.m_sSecretMap:=EditCastleMiDao.Text ;
  CurCastle.m_nPalaceDoorX:= UpDown1.Position ;
  CurCAstle.m_nPalaceDoorY:= UpDown2.Position;
  ButtonCastleSave.Enabled:=True;

end;

end.

⌨️ 快捷键说明

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