📄 configmerchant.pas
字号:
unit ConfigMerchant;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin,ObjNpc;
type
TfrmConfigMerchant = class(TForm)
ListBoxMerChant: TListBox;
Label1: TLabel;
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;
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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -