📄 frmmain.pas
字号:
Path631,Path696:String[$64];//$631
ClothMan,//$6FB
ClothWoMan,//$72E
Weapon, //$761
Light, //$794
BasicDrug, //$7C7
GoldStone, //$7FA
SilverStone, //$82D
SteelStone, //$860
CopperStone,//$893
BlackStone, //$8C6
Zuma1, //$8F9
Zuma2, //$92C
Zuma3, //$95F
Zuma4, //$992
Bee, //$9C5
SActorer, //$9F8
WomaHorn:String[$32]; //$A2B
ZumaPiece : string[$32]; //$A5E
ByteA91:array[0..6] of byte; //$A91
end;
type
TEICSetupFile = class
tmp:THandle;
Info:TEICSetupInfo;
end;
var
Form1: TForm1;
CSetupFile:TEICSetupFile;
implementation
{$R *.dfm}
function _GetStrByShortStr(Source: ShortString): String;
var
len : Integer;
begin
Result := '';
len := PByte(@Source)^;
if len > 0 then begin
SetLength(Result,len);
CopyMemory(Pointer(Result),Pointer(Integer(@Source) + 1),len);
end
end;
procedure XorBuf(Dest:PByte;XorBuf:Byte;Len:Integer);
var I:Integer;
begin
for I:= 0 to Len -1 do begin
PByte(Integer(Dest)+I)^ := PByte(Integer(Dest)+I)^ xor XorBuf;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var Stream:TMemoryStream;
begin
With OpenDialog1 do begin
InitialDir := 'D:\Mud3\Setup';
if Execute then begin
Edit1.Text := FileName;
Stream := TMemoryStream.Create;
try
Stream.LoadFromFile(Edit1.Text);
Stream.Position := 0;
XorBuf(Stream.Memory,4,SizeOf(TEICSetupInfo));
Stream.ReadBuffer(CSetupFile.Info,SizeOf(TEICSetupInfo));
GetValues;
finally Stream.Free end;
end;
end;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
var Stream:TMemoryStream;S:String;
begin
Stream := TMemoryStream.Create;
try
Stream.Position := 0;
if (Edit1.Text <> '') And (FileExists(Edit1.Text)) then begin
S := Edit1.Text;
end else begin
S := '!Setup.txt';
end;
SetValues;
Stream.WriteBuffer(CSetupFile.Info,SizeOF(TEICSetupInfo));
XorBuf(Stream.Memory,4,SizeOf(TEICSetupInfo));
Stream.SaveToFile(S);
finally Stream.Free end;
end;
procedure TForm1.GetValues;
begin
With CSetupFile do begin
Edit2.Text := IntToStr(Info.MakeItemIndexBase);
Edit3.Text := BoolToStr(Info.BoServiceMode,TRUE);
Edit4.Text := BoolToStr(Info.ViewAdmissionFailureMsg,TRUE);
Edit5.Text := IntToStr(Info.TestLevel);
Edit6.Text := IntToStr(Info.TestUsers);
Edit7.Text := Info.ServerName;
Edit8.Text := BoolToStr(Info.View1100X_Msg,TRUE);
Edit9.Text := BoolToStr(Info.BoTestServer,TRUE);
Edit10.Text := IntToStr(Info.TestMoney);
Edit11.Text := Info.IP1.IP;
Edit12.Text := IntToStr(Info.IP1.Port);
Edit13.Text := Info.IP2.IP;
Edit14.Text := IntToStr(Info.IP2.Port);
Edit15.Text := Info.IP3.IP;
Edit16.Text := IntToStr(Info.IP3.Port);
Edit17.Text := Info.IP4.IP;
Edit18.Text := IntToStr(Info.IP4.Port);
Edit19.Text := IntToStr(Info.HumLimitTime);
Edit20.Text := IntToStr(Info.MonLimitTime);
Edit21.Text := IntToStr(Info.ZenLimitTime);
Edit22.Text := IntToStr(Info.NpcLimitTime);
Edit23.Text := IntToStr(Info.SocLimitTime);
Edit24.Text := IntToStr(Info.DecLimitTime);
Edit25.Text := IntToStr(Info.tbLimit[0]);
Edit26.Text := IntToStr(Info.tbLimit[1]);
Edit27.Text := IntToStr(Info.tbLimit[2]);
Edit28.Text := IntToStr(Info.tbLimit[3]);
Edit29.Text := IntToStr(Info.tbLimit[4]);
Edit30.Text := IntToStr(Info.tbLimit[5]);
Edit31.Text := IntToStr(Info.tbLimit[6]);
Edit32.Text := IntToStr(Info.tbLimit[7]);
Edit33.Text := Info.DSN1.IP;
Edit34.Text := Info.DSN1.SA;
Edit35.Text := Info.DSN1.Pass;
Edit36.Text := Info.DSN1.DSN;
Edit37.Text := Info.DSN2.IP;
Edit38.Text := Info.DSN2.SA;
Edit39.Text := Info.DSN2.Pass;
Edit40.Text := Info.DSN2.DSN;
Edit41.Text := FloatToStr(Info.ExtraExpRate);
Edit42.Text := FloatToStr(Info.ExtraMoneyRate);
Edit43.Text := FloatToStr(Info.ExtraItemRate);
Edit44.Text := FloatToStr(Info.ExtraMonGenRate);
Edit45.Text := IntToStr(Info.FeedLevel);
Edit46.Text := BoolToStr(Info.BoApplyEventOption,TRUE);
Edit89.Text := IntToStr(Info.MakeItemIndex);
Edit59.Text := Info.PathShare;
Edit60.Text := Info.PathGuilds;
Edit61.Text := Info.PathGuildList;
Edit62.Text := Info.PathShareV;
Edit63.Text := Info.PathConLog;
Edit64.Text := Info.PathRoot;
Edit65.Text := Info.PathEnvir;
Edit66.Text := Info.PathMap;
Edit67.Text := Info.PathLogB;
Edit68.Text := Info.PathMir3Exe;
Edit69.Text := Info.Path631;
Edit70.Text := Info.Path696;
Edit71.Text := Info.ClothMan;
Edit72.Text := Info.ClothWoMan;
Edit73.Text := Info.Weapon;
Edit74.Text := Info.Light;
Edit75.Text := Info.BasicDrug;
Edit76.Text := Info.GoldStone;
Edit77.Text := Info.SilverStone;
Edit78.Text := Info.SteelStone;
Edit79.Text := Info.CopperStone;
Edit80.Text := Info.BlackStone;
Edit81.Text := Info.Zuma1;
Edit82.Text := Info.Zuma2;
Edit83.Text := Info.Zuma3;
Edit84.Text := Info.Zuma4;
Edit85.Text := Info.Bee;
Edit86.Text := Info.SActorer;
Edit87.Text := Info.WomaHorn;
Edit88.Text := Info.ZumaPiece;
Edit47.Text := Info.EmergencyMapName;
Edit48.Text := IntToStr(Info.EmergencyMapX);
Edit49.Text := IntToStr(Info.EmergencyMapY);
Edit50.Text := Info.Warr.Map;
Edit51.Text := IntToStr(Info.Warr.X);
Edit52.Text := IntToStr(Info.Warr.Y);
Edit53.Text := Info.Wizard.Map;
Edit54.Text := IntToStr(Info.Wizard.X);
Edit55.Text := IntToStr(Info.Wizard.Y);
Edit56.Text := Info.Taos.Map;
Edit57.Text := IntToStr(Info.Taos.X);
Edit58.Text := IntToStr(Info.Taos.Y);
end;
end;
procedure TForm1.SetValues;
begin
With CSetupFile do begin
Info.MakeItemIndexBase := StrToIntDef(Edit2.Text,Info.MakeItemIndexBase);
Info.BoServiceMode := StrToBoolDef(Edit3.Text,Info.BoServiceMode);
Info.ViewAdmissionFailureMsg := StrToBoolDef(Edit4.Text,Info.ViewAdmissionFailureMsg);
Info.TestLevel := StrToIntDef(Edit5.Text,Info.TestLevel);
Info.TestUsers := StrToIntDef(Edit6.Text,Info.TestUsers);
Info.ServerName := Edit7.Text;
Info.View1100X_Msg := StrToBoolDef(Edit8.Text,Info.View1100X_Msg);
Info.BoTestServer := StrToBoolDef(Edit9.Text,Info.BoTestServer);
Info.TestMoney := StrToIntDef(Edit10.Text,info.TestMoney);
Info.IP1.IP := Edit11.Text;
Info.IP1.Port := StrToIntDef(Edit12.Text,Info.IP1.Port);
Info.IP2.IP := Edit13.Text;
Info.IP2.Port := StrToIntDef(Edit14.Text,Info.IP2.Port);
Info.IP3.IP := Edit15.Text;
Info.IP3.Port := StrToIntDef(Edit16.Text,Info.IP3.Port);
Info.IP4.IP := Edit17.Text;
Info.IP4.Port := StrToIntDef(Edit18.Text,Info.IP4.Port);
Info.HumLimitTime := StrToIntDef(Edit19.Text,Info.HumLimitTime);
Info.MonLimitTime := StrToIntDef(Edit20.Text,Info.MonLimitTime);
Info.ZenLimitTime := StrToIntDef(Edit21.Text,Info.ZenLimitTime);
Info.NpcLimitTime := StrToIntDef(Edit22.Text,Info.NpcLimitTime);
Info.SocLimitTime := StrToIntDef(Edit23.Text,Info.SocLimitTime);
Info.DecLimitTime := StrToIntDef(Edit24.Text,Info.DecLimitTime);
Info.tbLimit[0] := StrToIntDef(Edit25.Text,Info.tbLimit[0]);
Info.tbLimit[1] := StrToIntDef(Edit26.Text,Info.tbLimit[1]);
Info.tbLimit[2] := StrToIntDef(Edit27.Text,Info.tbLimit[2]);
Info.tbLimit[3] := StrToIntDef(Edit28.Text,Info.tbLimit[3]);
Info.tbLimit[4] := StrToIntDef(Edit29.Text,Info.tbLimit[4]);
Info.tbLimit[5] := StrToIntDef(Edit30.Text,Info.tbLimit[5]);
Info.tbLimit[6] := StrToIntDef(Edit31.Text,Info.tbLimit[6]);
Info.tbLimit[7] := StrToIntDef(Edit32.Text,Info.tbLimit[7]);
Info.DSN1.IP := Edit33.Text;
Info.DSN1.SA := Edit34.Text;
Info.DSN1.Pass := Edit35.Text;
Info.DSN1.DSN := Edit36.Text;
Info.DSN2.IP := Edit37.Text;
Info.DSN2.SA := Edit38.Text;
Info.DSN2.Pass := Edit39.Text;
Info.DSN2.DSN := Edit40.Text;
Info.ExtraExpRate := StrToFloatDef(Edit41.Text,Info.ExtraExpRate);
Info.ExtraMoneyRate := StrToFloatDef(Edit42.Text,Info.ExtraMoneyRate);
Info.ExtraItemRate := StrToFloatDef(Edit43.Text,Info.ExtraItemRate);
Info.ExtraMonGenRate := StrToFloatDef(Edit44.Text,Info.ExtraMonGenRate);
info.FeedLevel := StrToIntDef(Edit45.Text,Info.FeedLevel);
Info.BoApplyEventOption := StrToBoolDef(Edit46.Text,Info.BoApplyEventOption);
Info.MakeItemIndex := StrToIntDef(Edit89.Text,Info.MakeItemIndex);
Info.PathShare := Edit59.Text;
Info.PathGuilds := Edit60.Text;
Info.PathGuildList := Edit61.Text;
Info.PathShareV := Edit62.Text;
Info.PathConLog := Edit63.Text;
Info.PathRoot := Edit64.Text;
Info.PathEnvir := Edit65.Text;
Info.PathMap := Edit66.Text;
Info.PathLogB := Edit67.Text;
Info.PathMir3Exe := Edit68.Text;
Info.Path631 := Edit69.Text;
Info.Path696 := Edit70.Text;
Info.ClothMan := Edit71.Text;
Info.ClothWoMan := Edit72.Text;
Info.Weapon := Edit73.Text;
Info.Light := Edit74.Text;
Info.BasicDrug := Edit75.Text;
Info.GoldStone := Edit76.Text;
Info.SilverStone := Edit77.Text;
Info.SteelStone := Edit78.Text;
Info.CopperStone := Edit79.Text;
Info.BlackStone := Edit80.Text;
Info.Zuma1 := Edit81.Text;
Info.Zuma2 := Edit82.Text;
Info.Zuma3 := Edit83.Text;
Info.Zuma4 := Edit84.Text;
Info.Bee := Edit85.Text;
Info.SActorer := Edit86.Text;
Info.WomaHorn := Edit87.Text;
Info.ZumaPiece := Edit88.Text;
Info.EmergencyMapName := Edit47.Text;
Info.EmergencyMapX := StrToIntDef(Edit48.Text,Info.EmergencyMapX);
Info.EmergencyMapY := StrToIntDef(Edit49.Text,Info.EmergencyMapY);
Info.Warr.Map := Edit50.Text;
Info.Warr.X := StrToIntDef(Edit51.Text,Info.Warr.X);
Info.Warr.Y := StrToIntDef(Edit52.Text,Info.Warr.Y);
Info.Wizard.Map := Edit53.Text;
Info.Wizard.X := StrToIntDef(Edit54.Text,Info.Wizard.X);
Info.Wizard.Y := StrToIntDef(Edit55.Text,Info.Wizard.Y);
Info.Taos.Map := Edit56.Text;
Info.Taos.X := StrToIntDef(Edit57.Text,Info.Taos.X);
Info.Taos.Y := StrToIntDef(Edit58.Text,Info.Taos.Y);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CSetupFile := TEICSetupFile.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
CSetupFile.Free;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if FileExists(Edit1.Text) then BitBtn2.Caption := '保存'
else BitBtn2.Caption := '生成新 !Setup.txt 到当前目录';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -