📄 configmerchant.pas
字号:
unit ConfigMerchant;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, ObjNpc;
type
TfrmConfigMerchant = class(TForm)
GroupBoxNPC: TGroupBox;
Label2: TLabel;
EditScriptName: TEdit;
Label3: TLabel;
EditMapName: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
EditShowName: TEdit;
Label7: TLabel;
Label8: TLabel;
CheckBoxOfCastle: TCheckBox;
ComboBoxDir: TComboBox;
EditImageIdx: TSpinEdit;
EditX: TSpinEdit;
EditY: TSpinEdit;
GroupBoxScript: TGroupBox;
MemoScript: TMemo;
ButtonScriptSave: TButton;
GroupBox3: TGroupBox;
CheckBoxBuy: TCheckBox;
CheckBoxSell: TCheckBox;
CheckBoxStorage: TCheckBox;
CheckBoxGetback: TCheckBox;
CheckBoxMakedrug: TCheckBox;
CheckBoxUpgradenow: TCheckBox;
CheckBoxGetbackupgnow: TCheckBox;
CheckBoxRepair: TCheckBox;
CheckBoxS_repair: TCheckBox;
ButtonReLoadNpc: TButton;
ButtonSave: TButton;
CheckBoxDenyRefStatus: TCheckBox;
Label9: TLabel;
EditPriceRate: TSpinEdit;
Label10: TLabel;
EditMapDesc: TEdit;
CheckBoxSendMsg: TCheckBox;
CheckBoxAutoMove: TCheckBox;
Label11: TLabel;
EditMoveTime: TSpinEdit;
ButtonClearTempData: TButton;
ButtonViewData: TButton;
GroupBox1: TGroupBox;
ListBoxMerChant: TListBox;
procedure ListBoxMerChantClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ButtonSaveClick(Sender: TObject);
procedure CheckBoxDenyRefStatusClick(Sender: TObject);
procedure EditXChange(Sender: TObject);
procedure EditYChange(Sender: TObject);
procedure EditShowNameChange(Sender: TObject);
procedure EditImageIdxChange(Sender: TObject);
procedure CheckBoxOfCastleClick(Sender: TObject);
procedure CheckBoxBuyClick(Sender: TObject);
procedure CheckBoxSellClick(Sender: TObject);
procedure CheckBoxGetbackClick(Sender: TObject);
procedure CheckBoxStorageClick(Sender: TObject);
procedure CheckBoxUpgradenowClick(Sender: TObject);
procedure CheckBoxGetbackupgnowClick(Sender: TObject);
procedure CheckBoxRepairClick(Sender: TObject);
procedure CheckBoxS_repairClick(Sender: TObject);
procedure CheckBoxMakedrugClick(Sender: TObject);
procedure EditPriceRateChange(Sender: TObject);
procedure ButtonScriptSaveClick(Sender: TObject);
procedure ButtonReLoadNpcClick(Sender: TObject);
procedure EditScriptNameChange(Sender: TObject);
procedure EditMapNameChange(Sender: TObject);
procedure ComboBoxDirChange(Sender: TObject);
procedure MemoScriptChange(Sender: TObject);
procedure CheckBoxSendMsgClick(Sender: TObject);
procedure CheckBoxAutoMoveClick(Sender: TObject);
procedure EditMoveTimeChange(Sender: TObject);
procedure ButtonClearTempDataClick(Sender: TObject);
private
SelMerchant: TMerchant;
boOpened: Boolean;
boModValued: Boolean;
procedure ModValue();
procedure uModValue();
procedure RefListBoxMerChant();
procedure ClearMerchantData();
procedure LoadScriptFile();
procedure ChangeScriptAllowAction();
{ Private declarations }
public
procedure Open();
{ Public declarations }
end;
var
frmConfigMerchant: TfrmConfigMerchant;
implementation
uses UsrEngn, M2Share;
{$R *.dfm}
{ TfrmConfigMerchant }
procedure TfrmConfigMerchant.ModValue;
begin
ButtonSave.Enabled := True;
ButtonScriptSave.Enabled := True;
end;
procedure TfrmConfigMerchant.uModValue;
begin
ButtonSave.Enabled := False;
ButtonScriptSave.Enabled := False;
end;
procedure TfrmConfigMerchant.Open;
begin
boOpened := False;
uModValue();
CheckBoxDenyRefStatus.Checked := False;
SelMerchant := nil;
RefListBoxMerChant;
boOpened := True;
ShowModal;
end;
procedure TfrmConfigMerchant.ButtonClearTempDataClick(Sender: TObject);
begin
if Application.MessageBox(PChar('是否确认清除NPC临时数据?'), '确认信息', MB_YESNO + MB_ICONQUESTION) = mrYes then begin
ClearMerchantData();
end;
end;
procedure TfrmConfigMerchant.ButtonSaveClick(Sender: TObject);
var
i: Integer;
SaveList: TStringList;
Merchant: TMerchant;
sMerchantFile: string;
sIsCastle: string;
sCanMove: string;
begin
sMerchantFile := g_Config.sEnvirDir + 'Merchant.txt';
SaveList := TStringList.Create;
UserEngine.m_MerchantList.Lock;
try
for i := 0 to UserEngine.m_MerchantList.Count - 1 do begin
Merchant := TMerchant(UserEngine.m_MerchantList.Items[i]);
if Merchant.m_sMapName = '0' then Continue;
if Merchant.m_boCastle then sIsCastle := '1'
else sIsCastle := '0';
if Merchant.m_boCanMove then sCanMove := '1'
else sCanMove := '0';
SaveList.Add(Merchant.m_sScript + #9 +
Merchant.m_sMapName + #9 +
IntToStr(Merchant.m_nCurrX) + #9 +
IntToStr(Merchant.m_nCurrY) + #9 +
Merchant.m_sCharName + #9 +
IntToStr(Merchant.m_nFlag) + #9 +
IntToStr(Merchant.m_wAppr) + #9 +
sIsCastle + #9 +
sCanMove + #9 +
IntToStr(Merchant.m_dwMoveTime)
)
end;
SaveList.SaveToFile(sMerchantFile);
finally
UserEngine.m_MerchantList.UnLock;
end;
SaveList.Free;
uModValue();
end;
procedure TfrmConfigMerchant.ClearMerchantData;
var
i: Integer;
Merchant: TMerchant;
begin
UserEngine.m_MerchantList.Lock;
try
for i := 0 to UserEngine.m_MerchantList.Count - 1 do begin
Merchant := TMerchant(UserEngine.m_MerchantList.Items[i]);
Merchant.ClearData();
end;
finally
UserEngine.m_MerchantList.UnLock;
end;
end;
procedure TfrmConfigMerchant.RefListBoxMerChant;
var
i: Integer;
Merchant: TMerchant;
begin
UserEngine.m_MerchantList.Lock;
try
for i := 0 to UserEngine.m_MerchantList.Count - 1 do begin
Merchant := TMerchant(UserEngine.m_MerchantList.Items[i]);
if (Merchant.m_sMapName = '0') and (Merchant.m_nCurrX = 0) and (Merchant.m_nCurrY = 0) then Continue;
ListBoxMerChant.Items.AddObject(Merchant.m_sCharName + ' - ' + Merchant.m_sMapName + ' (' + IntToStr(Merchant.m_nCurrX) + ':' + IntToStr(Merchant.m_nCurrY) + ')', Merchant);
end;
finally
UserEngine.m_MerchantList.UnLock;
end;
end;
procedure TfrmConfigMerchant.ListBoxMerChantClick(Sender: TObject);
var
nSelIndex: Integer;
begin
CheckBoxDenyRefStatus.Checked := False;
uModValue();
boOpened := False;
nSelIndex := ListBoxMerChant.ItemIndex;
if nSelIndex < 0 then exit;
SelMerchant := TMerchant(ListBoxMerChant.Items.Objects[nSelIndex]);
EditScriptName.Text := SelMerchant.m_sScript;
EditMapName.Text := SelMerchant.m_sMapName;
EditMapDesc.Text := SelMerchant.m_PEnvir.sMapDesc;
EditX.Value := SelMerchant.m_nCurrX;
EditY.Value := SelMerchant.m_nCurrY;
EditShowName.Text := SelMerchant.m_sCharName;
ComboBoxDir.ItemIndex := SelMerchant.m_nFlag;
EditImageIdx.Value := SelMerchant.m_wAppr;
CheckBoxOfCastle.Checked := SelMerchant.m_boCastle;
CheckBoxAutoMove.Checked := SelMerchant.m_boCanMove;
EditMoveTime.Value := SelMerchant.m_dwMoveTime;
CheckBoxBuy.Checked := SelMerchant.m_boBuy;
CheckBoxSell.Checked := SelMerchant.m_boSell;
CheckBoxGetback.Checked := SelMerchant.m_boGetback;
CheckBoxStorage.Checked := SelMerchant.m_boStorage;
CheckBoxUpgradenow.Checked := SelMerchant.m_boUpgradenow;
CheckBoxGetbackupgnow.Checked := SelMerchant.m_boGetBackupgnow;
CheckBoxRepair.Checked := SelMerchant.m_boRepair;
CheckBoxS_repair.Checked := SelMerchant.m_boS_repair;
CheckBoxMakedrug.Checked := SelMerchant.m_boMakeDrug;
CheckBoxSendMsg.Checked := SelMerchant.m_boSendmsg;
EditPriceRate.Value := SelMerchant.m_nPriceRate;
MemoScript.Clear;
ButtonReLoadNpc.Enabled := False;
LoadScriptFile();
GroupBoxNPC.Enabled := True;
GroupBoxScript.Enabled := True;
boOpened := True;
end;
procedure TfrmConfigMerchant.FormCreate(Sender: TObject);
begin
ComboBoxDir.Items.Add('0');
ComboBoxDir.Items.Add('1');
ComboBoxDir.Items.Add('2');
ComboBoxDir.Items.Add('3');
ComboBoxDir.Items.Add('4');
ComboBoxDir.Items.Add('5');
ComboBoxDir.Items.Add('6');
ComboBoxDir.Items.Add('7');
end;
procedure TfrmConfigMerchant.CheckBoxDenyRefStatusClick(Sender: TObject);
begin
if SelMerchant <> nil then begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -