📄 heroconfig.pas
字号:
unit HeroConfig;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Spin, Grids;
type
TLevelExpScheme = (s_OldLevelExp, s_StdLevelExp, s_2Mult, s_5Mult, s_8Mult, s_10Mult, s_20Mult, s_30Mult, s_40Mult, s_50Mult, s_60Mult, s_70Mult, s_80Mult, s_90Mult, s_100Mult, s_150Mult, s_200Mult, s_250Mult, s_300Mult);
TfrmHeroConfig = class(TForm)
PageControl: TPageControl;
TabSheet1: TTabSheet;
GroupBoxLevelExp: TGroupBox;
Label37: TLabel;
ComboBoxLevelExp: TComboBox;
GridLevelExp: TStringGrid;
GroupBox8: TGroupBox;
Label23: TLabel;
EditKillMonExpRate: TSpinEdit;
GroupBox29: TGroupBox;
Label61: TLabel;
EditStartLevel: TSpinEdit;
GroupBox59: TGroupBox;
Label131: TLabel;
Label132: TLabel;
Label133: TLabel;
SpinEditWarrorAttackTime: TSpinEdit;
SpinEditWizardAttackTime: TSpinEdit;
SpinEditTaoistAttackTime: TSpinEdit;
ButtonHeroExpSave: TButton;
GroupBox1: TGroupBox;
Label1: TLabel;
SpinEditNeedLevel: TSpinEdit;
ComboBoxBagItemCount: TComboBox;
TabSheet2: TTabSheet;
GroupBox67: TGroupBox;
CheckBoxKillByMonstDropUseItem: TCheckBox;
CheckBoxKillByHumanDropUseItem: TCheckBox;
CheckBoxDieScatterBag: TCheckBox;
CheckBoxDieRedScatterBagAll: TCheckBox;
GroupBox69: TGroupBox;
Label130: TLabel;
Label2: TLabel;
Label134: TLabel;
ScrollBarDieDropUseItemRate: TScrollBar;
EditDieDropUseItemRate: TEdit;
ScrollBarDieRedDropUseItemRate: TScrollBar;
EditDieRedDropUseItemRate: TEdit;
ScrollBarDieScatterBagRate: TScrollBar;
EditDieScatterBagRate: TEdit;
ButtonHeroDieSave: TButton;
GroupBox2: TGroupBox;
Label124: TLabel;
Label125: TLabel;
SpinEditEatHPItemRate: TSpinEdit;
SpinEditEatMPItemRate: TSpinEdit;
Label126: TLabel;
Label3: TLabel;
TabSheet3: TTabSheet;
GroupBox3: TGroupBox;
Label4: TLabel;
EditMaxFirDragonPoint: TSpinEdit;
Label5: TLabel;
EditAddFirDragonPoint: TSpinEdit;
Label6: TLabel;
EditDecFirDragonPoint: TSpinEdit;
ButtonHeroAttackSave: TButton;
GroupBox52: TGroupBox;
Label135: TLabel;
EditHeroAttackRate: TSpinEdit;
procedure ComboBoxLevelExpClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ButtonHeroExpSaveClick(Sender: TObject);
procedure EditStartLevelChange(Sender: TObject);
procedure EditKillMonExpRateChange(Sender: TObject);
procedure ComboBoxBagItemCountChange(Sender: TObject);
procedure SpinEditNeedLevelChange(Sender: TObject);
procedure SpinEditWarrorAttackTimeChange(Sender: TObject);
procedure SpinEditWizardAttackTimeChange(Sender: TObject);
procedure SpinEditTaoistAttackTimeChange(Sender: TObject);
procedure ButtonHeroDieSaveClick(Sender: TObject);
procedure CheckBoxKillByMonstDropUseItemClick(Sender: TObject);
procedure CheckBoxKillByHumanDropUseItemClick(Sender: TObject);
procedure CheckBoxDieScatterBagClick(Sender: TObject);
procedure CheckBoxDieRedScatterBagAllClick(Sender: TObject);
procedure ScrollBarDieDropUseItemRateChange(Sender: TObject);
procedure ScrollBarDieRedDropUseItemRateChange(Sender: TObject);
procedure ScrollBarDieScatterBagRateChange(Sender: TObject);
procedure SpinEditEatHPItemRateChange(Sender: TObject);
procedure SpinEditEatMPItemRateChange(Sender: TObject);
procedure ButtonHeroAttackSaveClick(Sender: TObject);
procedure EditMaxFirDragonPointChange(Sender: TObject);
procedure EditAddFirDragonPointChange(Sender: TObject);
procedure EditDecFirDragonPointChange(Sender: TObject);
procedure EditHeroAttackRateChange(Sender: TObject);
private
{ Private declarations }
boOpened: Boolean;
boModValued: Boolean;
procedure ModValue();
procedure uModValue();
public
{ Public declarations }
procedure Open();
end;
var
frmHeroConfig: TfrmHeroConfig;
implementation
uses M2Share, HUtil32, SDK, ActionSpeedConfig;
{$R *.dfm}
procedure TfrmHeroConfig.ModValue();
begin
boModValued := True;
ButtonHeroExpSave.Enabled := True;
ButtonHeroDieSave.Enabled := True;
ButtonHeroAttackSave.Enabled := True;
end;
procedure TfrmHeroConfig.uModValue();
begin
boModValued := False;
ButtonHeroExpSave.Enabled := False;
ButtonHeroDieSave.Enabled := False;
ButtonHeroAttackSave.Enabled := False;
end;
procedure TfrmHeroConfig.ComboBoxLevelExpClick(Sender: TObject);
var
I: Integer;
LevelExpScheme: TLevelExpScheme;
dwOneLevelExp: LongWord;
dwExp: LongWord;
begin
if not boOpened then Exit;
if Application.MessageBox('升级经验计划设置的经验将立即生效,是否确认使用此经验计划?', '确认信息', MB_YESNO + MB_ICONQUESTION) = IDNO then begin
Exit;
end;
LevelExpScheme := TLevelExpScheme(ComboBoxLevelExp.Items.Objects[ComboBoxLevelExp.ItemIndex]);
case LevelExpScheme of
s_OldLevelExp: g_Config.dwHeroNeedExps := g_dwOldNeedExps;
s_StdLevelExp: begin
g_Config.dwHeroNeedExps := g_dwOldNeedExps;
dwOneLevelExp := 4000000000 div High(g_Config.dwHeroNeedExps);
for I := 1 to MAXCHANGELEVEL do begin
if (26 + I) > MAXCHANGELEVEL then Break;
dwExp := dwOneLevelExp * LongWord(I);
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[26 + I] := dwExp;
end;
end;
s_2Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 2;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_5Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 5;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_8Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 8;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_10Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 10;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_20Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 20;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_30Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 30;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_40Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 40;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_50Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 50;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_60Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 60;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_70Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 70;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_80Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 80;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_90Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 90;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_100Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 100;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_150Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 150;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_200Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 200;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_250Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 250;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
s_300Mult: begin
for I := 1 to MAXCHANGELEVEL do begin
dwExp := g_Config.dwHeroNeedExps[I] div 300;
if dwExp = 0 then dwExp := 1;
g_Config.dwHeroNeedExps[I] := dwExp;
end;
end;
end;
for I := 1 to GridLevelExp.RowCount - 1 do begin
GridLevelExp.Cells[1, I] := IntToStr(g_Config.dwHeroNeedExps[I]);
end;
ModValue();
end;
procedure TfrmHeroConfig.Open();
var
I: Integer;
s01: string;
begin
boOpened := False;
PageControl.ActivePageIndex := 0;
uModValue();
for I := 1 to GridLevelExp.RowCount - 1 do begin
GridLevelExp.Cells[1, I] := IntToStr(g_Config.dwNeedExps[I]);
end;
GroupBoxLevelExp.Caption := Format('升级经验(最高有效等级%d)', [MAXUPLEVEL]);
EditStartLevel.Value := g_Config.nHeroStartLevel;
EditKillMonExpRate.Value := g_Config.nHeroKillMonExpRate;
ComboBoxBagItemCount.Items.Clear;
for I := Low(g_Config.nHeroBagItemCount) to High(g_Config.nHeroBagItemCount) do begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -