📄 svmain.pas
字号:
end;
procedure TFrmMain.G1Click(Sender: TObject);
begin
frmGameCmd:=TfrmGameCmd.Create(Owner);
frmGameCmd.Top:=Self.Top + 20;
frmGameCmd.Left:=Self.Left;
frmGameCmd.Open;
frmGameCmd.Free;
end;
procedure TFrmMain.MENU_OPTION_MONSTERClick(Sender: TObject);
begin
frmMonsterConfig:=TfrmMonsterConfig.Create(Owner);
frmMonsterConfig.Top:=Self.Top + 20;
frmMonsterConfig.Left:=Self.Left;
frmMonsterConfig.Open;
frmMonsterConfig.Free;
end;
procedure TFrmMain.MENU_CONTROL_RELOAD_MONSTERSAYClick(Sender: TObject);
begin
UserEngine.ClearMonSayMsg();
LoadMonSayMsg();
MainOutMessage('信息:怪物说话信息已加载...');
end;
procedure TFrmMain.MENU_CONTROL_RELOAD_DISABLEMAKEClick(Sender: TObject);
begin
LoadDisableTakeOffList();
LoadDisableMakeItem();
LoadEnableMakeItem();
LoadAllowSellOffItem();
LoadDisableMoveMap();
ItemUnit.LoadCustomItemName();
LoadDisableSendMsgList();
LoadGameLogItemNameList();
LoadItemBindIPaddr();
LoadItemBindAccount();
LoadItemBindCharName();
LoadUnMasterList();
LoadUnForceMasterList();
LoadDenyIPAddrList();
LoadDenyAccountList();
LoadDenyChrNameList();
LoadNoClearMonList();
FrmDB.LoadAdminList();
MainOutMessage('重新加载不允许(Take Off,制造,移动地图)列表...');
MainOutMessage('重新加载允许制造物品列表...');
MainOutMessage('重新加载Allow Sell Off list...');
MainOutMessage('重新加载Custom Item Name list...');
MainOutMessage('重新加载日志物品列表...');
MainOutMessage('重新加载绑定(IP,账号,人物)列表...');
MainOutMessage('重新加载UnMaster lists...');
MainOutMessage('重新加载禁止(IP,账号,人物)列表...');
MainOutMessage('重新加载不清除怪物列表...');
MainOutMessage('重新加载游戏管理员列表...');
end;
procedure TFrmMain.MENU_CONTROL_RELOAD_STARTPOINTClick(Sender: TObject);
begin
FrmDB.LoadStartPoint();
MainOutMessage('重新加载安全区复活点信息...');
end;
procedure TFrmMain.MENU_CONTROL_GATE_OPENClick(Sender: TObject);
ResourceString
sGatePortOpen = '网关已开启(%s:%d)';
begin
if not GateSocket.Active then begin
GateSocket.Active:=True;
MainOutMessage(format(sGatePortOpen,[GateSocket.Address,GateSocket.Port]));
end;
end;
procedure TFrmMain.MENU_CONTROL_GATE_CLOSEClick(Sender: TObject);
begin
CloseGateSocket();
end;
procedure TFrmMain.CloseGateSocket;
var
I: Integer;
ResourceString
sGatePortClose = '网关已关闭(%s:%d)';
begin
if GateSocket.Active then begin
for I := 0 to GateSocket.Socket.ActiveConnections - 1 do begin
GateSocket.Socket.Connections[I].Close;
end;
GateSocket.Active:=False;
MainOutMessage(format(sGatePortClose,[GateSocket.Address,GateSocket.Port]));
end;
end;
procedure TFrmMain.MENU_CONTROLClick(Sender: TObject);
begin
if GateSocket.Active then begin
MENU_CONTROL_GATE_OPEN.Enabled:=False;
MENU_CONTROL_GATE_CLOSE.Enabled:=True;
end else begin
MENU_CONTROL_GATE_OPEN.Enabled:=True;
MENU_CONTROL_GATE_CLOSE.Enabled:=False;
end;
end;
procedure UserEngineProcess(Config:pTM2Config;ThreadInfo:pTThreadInfo);
var
nRunTime :Integer;
dwRunTick :LongWord;
begin
l_dwRunTimeTick:=0;
dwRunTick:=GetTickCount();
ThreadInfo.dwRunTick:=dwRunTick;
while not ThreadInfo.boTerminaled do begin
nRunTime:=GetTickCount - ThreadInfo.dwRunTick;
if ThreadInfo.nRunTime < nRunTime then ThreadInfo.nRunTime:=nRunTime;
if ThreadInfo.nMaxRunTime < nRunTime then ThreadInfo.nMaxRunTime:=nRunTime;
if GetTickCount - dwRunTick >= 1000 then begin
dwRunTick:=GetTickCount();
if ThreadInfo.nRunTime > 0 then Dec(ThreadInfo.nRunTime);
end;
ThreadInfo.dwRunTick:=GetTickCount();
ThreadInfo.boActived:=True;
ThreadInfo.nRunFlag:=125;
if Config.boThreadRun then
ProcessGameRun();
Sleep(1);
end;
end;
procedure UserEngineThread(ThreadInfo:pTThreadInfo);stdcall;
var
nErrorCount:Integer;
ResourceString
sExceptionMsg = '[Exception] UserEngineThread ErrorCount = %d';
begin
nErrorCount:=0;
while True do begin
try
UserEngineProcess(ThreadInfo.Config,ThreadInfo);
break;
except
Inc(nErrorCount);
if nErrorCount > 10 then break;
MainOutMessage(format(sExceptionMsg,[nErrorCount]));
end;
end;
ExitThread(0);
end;
procedure ProcessGameRun();
var
I:Integer;
begin
EnterCriticalSection(ProcessHumanCriticalSection);
try
UserEngine.PrcocessData;
g_EventManager.Run;
RobotManage.Run;
if GetTickCount - l_dwRunTimeTick > 10000 then begin
l_dwRunTimeTick:=GetTickCount();
g_GuildManager.Run;
//CastleManager.Run;
//UserCastle.Run;
g_CastleManager.Run;
g_DenySayMsgList.Lock;
try
for I:=g_DenySayMsgList.Count - 1 downto 0 do begin
if GetTickCount > LongWord(g_DenySayMsgList.Objects[I]) then begin
g_DenySayMsgList.Delete(I);
end;
end;
finally
g_DenySayMsgList.UnLock;
end;
end;
finally
LeaveCriticalSection(ProcessHumanCriticalSection);
end;
end;
procedure TFrmMain.MENU_VIEW_GATEClick(Sender: TObject);
begin
MENU_VIEW_GATE.Checked:= not MENU_VIEW_GATE.Checked;
GridGate.Visible:=MENU_VIEW_GATE.Checked;
end;
procedure TFrmMain.MENU_VIEW_SESSIONClick(Sender: TObject);
begin
frmViewSession:=TfrmViewSession.Create(Owner);
frmViewSession.Top:=Top + 20;
frmViewSession.Left:=Left;
frmViewSession.Open();
frmViewSession.Free;
end;
procedure TFrmMain.MENU_VIEW_ONLINEHUMANClick(Sender: TObject);
begin
frmViewOnlineHuman:=TfrmViewOnlineHuman.Create(Owner);
frmViewOnlineHuman.Top:=Top + 20;
frmViewOnlineHuman.Left:=Left;
frmViewOnlineHuman.Open();
frmViewOnlineHuman.Free;
end;
procedure TFrmMain.MENU_VIEW_LEVELClick(Sender: TObject);
begin
frmViewLevel:=TfrmViewLevel.Create(Owner);
frmViewLevel.Top:=Top + 20;
frmViewLevel.Left:=Left;
frmViewLevel.Open();
frmViewLevel.Free;
end;
procedure TFrmMain.MENU_VIEW_LISTClick(Sender: TObject);
begin
frmViewList:=TfrmViewList.Create(Owner);
frmViewList.Top:=Top + 20;
frmViewList.Left:=Left;
frmViewList.Open();
frmViewList.Free;
end;
procedure TFrmMain.MENU_MANAGE_ONLINEMSGClick(Sender: TObject);
begin
frmOnlineMsg:=TfrmOnlineMsg.Create(Owner);
frmOnlineMsg.Top:=Top + 20;
frmOnlineMsg.Left:=Left;
frmOnlineMsg.Open();
frmOnlineMsg.Free;
end;
procedure TFrmMain.SetMenu;
begin
FrmMain.Menu:=MainMenu;
end;
procedure TFrmMain.MENU_VIEW_KERNELINFOClick(Sender: TObject);
begin
frmViewKernelInfo:=TfrmViewKernelInfo.Create(Owner);
frmViewKernelInfo.Top:=Top + 20;
frmViewKernelInfo.Left:=Left;
frmViewKernelInfo.Open();
frmViewKernelInfo.Free;
end;
procedure TFrmMain.MENU_TOOLS_MERCHANTClick(Sender: TObject);
begin
frmConfigMerchant:=TfrmConfigMerchant.Create(Owner);
frmConfigMerchant.Top:=Top + 20;
frmConfigMerchant.Left:=Left;
frmConfigMerchant.Open();
frmConfigMerchant.Free;
end;
procedure TFrmMain.MENU_OPTION_ITEMFUNCClick(Sender: TObject);
begin
frmItemSet:=TfrmItemSet.Create(Owner);
frmItemSet.Top:=Top + 20;
frmItemSet.Left:=Left;
frmItemSet.Open();
frmItemSet.Free;
end;
procedure TFrmMain.ClearMemoLog;
begin
if Application.MessageBox('你想要清除日志吗?','M2Server',MB_YESNO + MB_ICONQUESTION) = mrYes then begin
MemoLog.Clear;
end;
end;
procedure TFrmMain.MENU_TOOLS_MONGENClick(Sender: TObject);
begin
frmConfigMonGen:=TfrmConfigMonGen.Create(Owner);
frmConfigMonGen.Top:=Top + 20;
frmConfigMonGen.Left:=Left;
frmConfigMonGen.Open();
frmConfigMonGen.Free;
end;
procedure TFrmMain.MyMessage(var MsgData: TWmCopyData);
var
sData:String;
wIdent:Word;
begin
wIdent:=HiWord(MsgData.From);
// ProgramType:=TProgamType(LoWord(MsgData.From));
sData:=StrPas(MsgData.CopyDataStruct^.lpData);
case wIdent of //
GS_QUIT: begin
g_boExitServer:=True;
CloseGateSocket();
g_Config.boKickAllUser:=True;
CloseTimer.Enabled:=True;
end;
1: ;
2: ;
3: ;
end; // case
end;
procedure TFrmMain.MENU_TOOLS_IPSEARCHClick(Sender: TObject);
var
sIPaddr:String;
begin
sIPaddr:=InputBox('IP查找','Enter the IP to search for.','192.168.0.1');
if not IsIPaddr(sIPaddr) then begin
Application.MessageBox('Please enter a valid IP.','Error',MB_OK + MB_ICONERROR);
exit;
end;
MemoLog.Lines.Add(format('%s:%s',[sIPaddr,GetIPLocal(sIPaddr)]));
end;
procedure TFrmMain.MENU_MANAGE_CASTLEClick(Sender: TObject);
begin
frmCastleManage:=TfrmCastleManage.Create(Owner);
frmCastleManage.Top:=Top + 20;
frmCastleManage.Left:=Left;
frmCastleManage.Open();
frmCastleManage.Free;
end;
procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
ini: TMemIniFile;
begin
ini := TMemIniFile.Create(g_Config.PosFile);
ini.WriteInteger('GameServer','Left',frmMain.Left);
ini.WriteInteger('GameServer','Top',frmMain.Top);
ini.UpdateFile;
ini.Free;
end;
procedure TFrmMain.MENU_TOOLS_GAMESHOPClick(Sender: TObject);
begin
frmConfigGameShop:=TfrmConfigGameShop.Create(Owner);
frmConfigGameShop.Top:=Top + 20;
frmConfigGameShop.Left:=Left;
frmConfigGameShop.Open();
frmConfigGameShop.Free;
end;
procedure TFrmMain.MENU_CONTROL_RELOAD_QFUNCTIONClick(Sender: TObject);
begin
if g_FunctionNPC<> nil then begin
g_FunctionNPC.ClearScript;
g_FunctionNPC.LoadNpcScript;
MainOutMessage('触发功能脚本加载完成...');
end;
end;
procedure TFrmMain.MENU_MANAGE_GUILDClick(Sender: TObject);
begin
frmGuildManage := frmGuildManage.Create(Owner);
frmGuildManage.Top:=Top + 20;
frmGuildManage.Left:=Left;
frmGuildManage.Open();
frmGuildManage.Free;
end;
initialization
begin
{---- Adjust global SVN revision ----}
SVNRevision('$Id: svMain.pas 562 2007-01-19 16:33:33Z sean $');
end;
finalization
begin
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -