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

📄 editrcd.pas

📁 翎风世界..传奇服务端..DELPHI源代码 包括DBServer,LogDataServer,LoginGate,LoginSrv,M2Server等..内容齐全.
💻 PAS
字号:
unit EditRcd;

interface

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

type
  TfrmEditRcd = class(TForm)
    PageControl: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    EditChrName: TEdit;
    Label2: TLabel;
    EditAccount: TEdit;
    Label3: TLabel;
    EditPassword: TEdit;
    Label4: TLabel;
    EditDearName: TEdit;
    Label5: TLabel;
    EditMasterName: TEdit;
    GroupBox2: TGroupBox;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label11: TLabel;
    EditIdx: TEdit;
    Label12: TLabel;
    EditCurMap: TEdit;
    Label13: TLabel;
    EditCurX: TSpinEdit;
    EditCurY: TSpinEdit;
    Label14: TLabel;
    Label15: TLabel;
    EditHomeMap: TEdit;
    EditHomeX: TSpinEdit;
    EditHomeY: TSpinEdit;
    EditLevel: TSpinEdit;
    EditGold: TSpinEdit;
    EditGameGold: TSpinEdit;
    EditGamePoint: TSpinEdit;
    Label16: TLabel;
    EditCreditPoint: TSpinEdit;
    Label10: TLabel;
    EditPayPoint: TSpinEdit;
    Label17: TLabel;
    EditPKPoint: TSpinEdit;
    Label18: TLabel;
    EditContribution: TSpinEdit;
    GroupBox3: TGroupBox;
    ListViewMagic: TListView;
    GroupBox4: TGroupBox;
    ListViewUserItem: TListView;
    GroupBox5: TGroupBox;
    ListViewStorage: TListView;
    ButtonSaveData: TButton;
    ButtonExportData: TButton;
    ButtonImportData: TButton;
    SaveDialog: TSaveDialog;
    OpenDialog: TOpenDialog;
    CheckBoxIsMaster: TCheckBox;
    procedure ButtonExportDataClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure EditPasswordChange(Sender: TObject);
  private
    m_boOpened:Boolean;
    procedure RefShow();
    procedure RefShowRcd();
    procedure RefShowMagic();
    procedure RefShowUserItem();
    procedure RefShowStorage();
    procedure ProcessSaveRcdToFile();
    procedure ProcessLoadRcdformFile();
    procedure ProcessSaveRcd();
    { Private declarations }
  public
    m_ChrRcd:THumDataInfo;
    m_nIdx  :Integer;
    procedure Open();
    { Public declarations }
  end;

var
  frmEditRcd: TfrmEditRcd;

implementation

uses HumDB;

{$R *.dfm}

{ TfrmEditRcd }


procedure TfrmEditRcd.FormCreate(Sender: TObject);
begin
  //
end;

procedure TfrmEditRcd.RefShowRcd;
begin
  EditIdx.Text        :=IntToStr(m_nIdx);
  EditChrName.Text    :=m_ChrRcd.Data.sChrName;
  EditAccount.Text    :=m_ChrRcd.Data.sAccount;
  EditPassword.Text   :=m_ChrRcd.Data.sStoragePwd;
  EditDearName.Text   :=m_ChrRcd.Data.sDearName;
  EditMasterName.Text :=m_ChrRcd.Data.sMasterName;
  CheckBoxIsMaster.Checked:=m_ChrRcd.Data.boMaster;

  EditCurMap.Text     :=m_ChrRcd.Data.sCurMap;
  EditCurX.Value      :=m_ChrRcd.Data.wCurX;
  EditCurY.Value      :=m_ChrRcd.Data.wCurY;

  EditHomeMap.Text    :=m_ChrRcd.Data.sHomeMap;
  EditHomeX.Value     :=m_ChrRcd.Data.wHomeX;
  EditHomeY.Value     :=m_ChrRcd.Data.wHomeY;

  EditLevel.Value     :=m_ChrRcd.Data.Abil.Level;
  EditGold.Value      :=m_ChrRcd.Data.nGold;
  EditGameGold.Value  :=m_ChrRcd.Data.nGameGold;
  EditGamePoint.Value :=m_ChrRcd.Data.nGamePoint;
  EditPayPoint.Value  :=m_ChrRcd.Data.nPayMentPoint;
  EditCreditPoint.Value:=m_ChrRcd.Data.btCreditPoint;
  EditPKPoint.Value    :=m_ChrRcd.Data.nPKPoint;
end;

procedure TfrmEditRcd.Open;
begin

  RefShow();
  Caption:=format('编辑人物数据 [%s]',[m_ChrRcd.Data.sChrName]);
  PageControl.ActivePageIndex:=0;
  
  ShowModal;
end;

procedure TfrmEditRcd.RefShow;
begin
  m_boOpened:=False;
  RefShowRcd();
  RefShowMagic();
  RefShowUserItem();
  RefShowStorage();
  m_boOpened:=True;
end;

procedure TfrmEditRcd.RefShowMagic;
var
  I: Integer;
  ListItem:TListItem;
//  MagicInfo:pTHumMagicInfo;
begin
{  ListViewMagic.Clear;

  for I := Low(m_ChrRcd.Data.Magic) to High(m_ChrRcd.Data.Magic) do begin
    MagicInfo:=@m_ChrRcd.Data.Magic[I];
    if MagicInfo.wMagIdx = 0 then break;

    ListItem:=ListViewMagic.Items.Add;
    ListItem.Caption:=IntToStr(I);
    ListItem.SubItems.Add(IntToStr(MagicInfo.wMagIdx));
    ListItem.SubItems.Add('');
    ListItem.SubItems.Add(IntToStr(MagicInfo.btLevel));
    ListItem.SubItems.Add(IntToStr(MagicInfo.nTranPoint));
    ListItem.SubItems.Add(IntToStr(MagicInfo.btKey));
  end;}
end;

procedure TfrmEditRcd.RefShowUserItem;
var
  I: Integer;
  ListItem:TListItem;
  UserItem:pTUserItem;
ResourceString
  sItemValue = '%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d';
    //'%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d'  
begin
  ListViewUserItem.Clear;

  for I := Low(m_ChrRcd.Data.HumItems) to High(m_ChrRcd.Data.HumItems) do begin
    UserItem:=@m_ChrRcd.Data.HumItems[I];
    ListItem:=ListViewUserItem.Items.Add;
    ListItem.Caption:=IntToStr(I);
    ListItem.SubItems.Add(IntToStr(UserItem.MakeIndex));
    ListItem.SubItems.Add(IntToStr(UserItem.wIndex));
    ListItem.SubItems.Add('');    ;
    ListItem.SubItems.Add(format('%d/%d',[UserItem.Dura,UserItem.DuraMax]));

    ListItem.SubItems.Add(format(sItemValue,[
                                 UserItem.btValue[0],
                                 UserItem.btValue[1],
                                 UserItem.btValue[2],
                                 UserItem.btValue[3],
                                 UserItem.btValue[4],
                                 UserItem.btValue[5],
                                 UserItem.btValue[6],
                                 UserItem.btValue[7],
                                 UserItem.btValue[8],
                                 UserItem.btValue[9],
                                 UserItem.btValue[10],
                                 UserItem.btValue[11],
                                 UserItem.btValue[12],
                                 UserItem.btValue[13]
    ]));

  end;
end;

procedure TfrmEditRcd.RefShowStorage;
var
  I: Integer;
  ListItem:TListItem;
  UserItem:pTUserItem;
begin
  ListViewStorage.Clear;

  for I := Low(m_ChrRcd.Data.StorageItems) to High(m_ChrRcd.Data.StorageItems) do begin
    UserItem:=@m_ChrRcd.Data.StorageItems[I];
    if UserItem.wIndex = 0 then Continue;
      
    ListItem:=ListViewStorage.Items.Add;
    ListItem.Caption:=IntToStr(I);
    ListItem.SubItems.Add(IntToStr(UserItem.MakeIndex));
    ListItem.SubItems.Add(IntToStr(UserItem.wIndex));
    ListItem.SubItems.Add('');    ;
    ListItem.SubItems.Add(format('%d/%d',[UserItem.Dura,UserItem.DuraMax]));
    ListItem.SubItems.Add(format('%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d',[
                                 UserItem.btValue[0],
                                 UserItem.btValue[1],
                                 UserItem.btValue[2],
                                 UserItem.btValue[3],
                                 UserItem.btValue[4],
                                 UserItem.btValue[5],
                                 UserItem.btValue[6],
                                 UserItem.btValue[7],
                                 UserItem.btValue[8],
                                 UserItem.btValue[9],
                                 UserItem.btValue[10],
                                 UserItem.btValue[11],
                                 UserItem.btValue[12],
                                 UserItem.btValue[13]
    ]));

  end;

end;

procedure TfrmEditRcd.ButtonExportDataClick(Sender: TObject);
begin
  if Sender = ButtonExportData then begin
    ProcessSaveRcdToFile();
  end else
  if Sender = ButtonImportData then begin
    ProcessLoadRcdformFile();
  end else
  if Sender = ButtonSaveData then begin
    ProcessSaveRcd();
  end;
    
end;

procedure TfrmEditRcd.ProcessSaveRcdToFile;
var
  sSaveFileName:String;
  nFileHandle:Integer;
begin
  SaveDialog.FileName:=m_ChrRcd.Data.sChrName;
  SaveDialog.InitialDir:='.\';
  if not SaveDialog.Execute then exit;
  sSaveFileName:=SaveDialog.FileName;

  if FileExists(sSaveFileName) then
    nFileHandle:=FileOpen(sSaveFileName,fmOpenReadWrite or fmShareDenyNone)
  else nFileHandle:=FileCreate(sSaveFileName);
  if nFileHandle <= 0 then begin
    MessageBox(Handle,'保存文件出现错误!!!','错误信息',MB_OK + MB_ICONEXCLAMATION);
    exit;
  end;
  FileWrite(nFileHandle,m_ChrRcd,SizeOf(THumDataInfo));
  FileClose(nFileHandle);
  MessageBox(Handle,'人物数据导出成功!!!','提示信息',MB_OK + MB_ICONINFORMATION);
end;

procedure TfrmEditRcd.ProcessLoadRcdformFile;
var
  sLoadFileName:String;
  nFileHandle:Integer;
  ChrRcd:THumDataInfo;
begin
  OpenDialog.FileName:=m_ChrRcd.Data.sChrName;
  OpenDialog.InitialDir:='.\';
  if not OpenDialog.Execute then exit;
  sLoadFileName:=OpenDialog.FileName;

  if not FileExists(sLoadFileName) then begin
    MessageBox(Handle,'指定的文件未找到!!!','错误信息',MB_OK + MB_ICONEXCLAMATION);
    exit;
  end;
  nFileHandle:=FileOpen(sLoadFileName,fmOpenReadWrite or fmShareDenyNone);

  if nFileHandle <= 0 then begin
    MessageBox(Handle,'打开文件出现错误!!!','错误信息',MB_OK + MB_ICONEXCLAMATION);
    exit;
  end;
  if not FileRead(nFileHandle,ChrRcd,SizeOf(THumDataInfo)) = SizeOf(THumDataInfo) then begin
    MessageBox(Handle,'读取文件出现错误!!!'#13#13'文件格式可能不正确','错误信息',MB_OK + MB_ICONEXCLAMATION);
    exit;
  end;
  ChrRcd.Header:=m_ChrRcd.Header;
  ChrRcd.Data.sChrName:=m_ChrRcd.Data.sChrName;
  ChrRcd.Data.sAccount:=m_ChrRcd.Data.sAccount;
  m_ChrRcd:=ChrRcd;
  FileClose(nFileHandle);
  RefShow();
  MessageBox(Handle,'人物数据导入成功!!!','提示信息',MB_OK + MB_ICONINFORMATION);
end;


procedure TfrmEditRcd.ProcessSaveRcd;
var
  nIdx     :Integer;
  boSaveOK :Boolean;
begin
  boSaveOK:=False;
  try
    if HumDataDB.Open then begin
      nIdx:=HumDataDB.Index(m_ChrRcd.Header.sName);
      if (nIdx >= 0) then begin
        HumDataDB.Update(nIdx,m_ChrRcd);
        boSaveOK:=True;
      end;
    end;
  finally
    HumDataDB.Close;
  end;
  if boSaveOK then begin
    MessageBox(Handle,'人物数据保存成功!!!','提示信息',MB_OK + MB_ICONINFORMATION);
  end else begin
    MessageBox(Handle,'人物数据保存失败!!!','错误信息',MB_OK + MB_ICONEXCLAMATION);
  end;
    
end;


procedure TfrmEditRcd.EditPasswordChange(Sender: TObject);
begin
  if not m_boOpened then exit;
  if Sender = EditPassword then begin
    m_ChrRcd.Data.sStoragePwd:=Trim(EditPassword.Text);
  end else
  if Sender = EditDearName then begin
    m_ChrRcd.Data.sDearName:=Trim(EditDearName.Text);
  end else
  if Sender = EditMasterName then begin
    m_ChrRcd.Data.sMasterName:=Trim(EditMasterName.Text);
  end else
  if Sender = CheckBoxIsMaster then begin
    m_ChrRcd.Data.boMaster:=CheckBoxIsMaster.Checked;
  end else
  if Sender = EditCurMap then begin
    m_ChrRcd.Data.sCurMap:=Trim(EditCurMap.Text);
  end else
  if Sender = EditCurX then begin
    m_ChrRcd.Data.wCurX:=EditCurX.Value;
  end else
  if Sender = EditCurY then begin
    m_ChrRcd.Data.wCurY:=EditCurY.Value;
  end else
  if Sender = EditHomeMap then begin
    m_ChrRcd.Data.sHomeMap:=Trim(EditHomeMap.Text);
  end else    
  if Sender = EditHomeX then begin
    m_ChrRcd.Data.wHomeX:=EditHomeX.Value;
  end else
  if Sender = EditCurY then begin
    m_ChrRcd.Data.wHomeY:=EditHomeY.Value;
  end else
  if Sender = EditLevel then begin
    m_ChrRcd.Data.Abil.Level:=EditLevel.Value;
  end else
  if Sender = EditGold then begin
    m_ChrRcd.Data.nGold:=EditGold.Value;
  end else
  if Sender = EditGameGold then begin
    m_ChrRcd.Data.nGameGold:=EditGameGold.Value;
  end else
  if Sender = EditGamePoint then begin
    m_ChrRcd.Data.nGamePoint:=EditGamePoint.Value;
  end else
  if Sender = EditPayPoint then begin
    m_ChrRcd.Data.nPayMentPoint:=EditPayPoint.Value;
  end else
  if Sender = EditCreditPoint then begin
    m_ChrRcd.Data.btCreditPoint:=EditCreditPoint.Value;
  end else
  if Sender = EditPKPoint then begin
    m_ChrRcd.Data.nPKPoint:=EditPKPoint.Value;
  end else
  if Sender = EditContribution then begin
    m_ChrRcd.Data.wContribution:=EditContribution.Value;
  end

end;

end.

⌨️ 快捷键说明

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