📄 clmain.pas
字号:
end;
procedure WaitAndPass (msec: longword);
var
start: longword;
begin
start := GetTickCount;
while GetTickCount - start < msec do begin
Application.ProcessMessages;
end;
end;
function GetRGB (c256: byte): integer;
begin
with frmMain.DxDraw do
Result:=RGB(DefColorTable[c256].rgbRed,
DefColorTable[c256].rgbGreen,
DefColorTable[c256].rgbBlue);
end;
procedure DebugOutStr (msg: string);
var
flname: string;
fhandle: TextFile;
begin
//DScreen.AddChatBoardString(msg,clWhite, clBlack);
exit;
flname := '.\!debug.txt';
if FileExists(flname) then begin
AssignFile (fhandle, flname);
Append (fhandle);
end else begin
AssignFile (fhandle, flname);
Rewrite (fhandle);
end;
WriteLn (fhandle, TimeToStr(Time) + ' ' + msg);
CloseFile (fhandle);
end;
function KeyboardHookProc (Code: Integer; WParam: Longint; var Msg: TMsg): Longint; stdcall;
begin
Result:=0;//jacky
if ((WParam = 9){ or (WParam = 13)}) and (g_nLastHookKey = 18) and (GetTickCount - g_dwLastHookKeyTime < 500) then begin
if FrmMain.WindowState <> wsMinimized then begin
FrmMain.WindowState := wsMinimized;
end else
Result := CallNextHookEx(g_ToolMenuHook, Code, WParam, Longint(@Msg));
exit;
end;
g_nLastHookKey := WParam;
g_dwLastHookKeyTime := GetTickCount;
Result := CallNextHookEx(g_ToolMenuHook, Code, WParam, Longint(@Msg));
end;
procedure TfrmMain.FormCreate(Sender: TObject);
var
flname, str: string;
ini: TIniFile;
FtpConf:TIniFile;
begin
ini := nil;
FtpConf := nil;
g_AutoPickupList :=TList.Create;
g_ShowItemList :=TGList.Create;
g_DWinMan:=TDWinManager.Create(Self);
g_DXDraw:=DXDraw;
Randomize;
ini := TIniFile.Create ('.\mir.ini');
if ini <> nil then begin
if EnglishVersion then begin
g_sServerAddr := ini.ReadString ('Setup', 'ServerAddr', g_sServerAddr);
g_nServerPort := ini.ReadInteger ('Setup', 'ServerPort', g_nServerPort);
LocalLanguage := imOpen;
end;
g_boFullScreen := ini.ReadBool ('Setup', 'FullScreen', g_boFullScreen);
g_sCurFontName := ini.ReadString ('Setup', 'FontName', g_sCurFontName);
g_sMainParam1:=Ini.ReadString('Setup', 'Param1', '202.98.153.141');
g_sMainParam2:=Ini.ReadString('Setup', 'Param2', '7000');
ini.Free;
end;
FtpConf:=TIniFile.Create('.\ftp.ini');
{$IF CLIENTTYPE = RMCLIENT} //检查如果客户端的标识不正确,则控制权限
g_sLogoText:=RMCLIENTTITLE;
{$ELSE}
if FtpConf <> nil then begin
g_sLogoText:=FtpConf.ReadString('Server','Server1Caption',g_sLogoText);
FtpConf.Free;
end;
{$IFEND}
Caption:=g_sLogoText;
if g_boFullScreen then
DXDraw.Options:=DXDraw.Options + [doFullScreen];
LoadWMImagesLib(nil);
NpcImageList:=TList.Create;
ItemImageList:=TList.Create;
WeaponImageList:=TList.Create;
HumImageList:=TList.Create;
g_DXSound:=TDXSound.Create(Self);
g_DXSound.Initialize;
DXDraw.Display.Width:=SCREENWIDTH;
DXDraw.Display.Height:=SCREENHEIGHT;
//
if g_DXSound.Initialized then begin
g_Sound:= TSoundEngine.Create (g_DXSound.DSound);
MP3:=TMPEG.Create(nil);
end else begin
g_Sound:= nil;
MP3:=nil;
end;
g_ToolMenuHook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardHookProc, 0, GetCurrentThreadID);
g_SoundList := TStringList.Create;
BGMusicList:=TStringList.Create;
flname := '.\wav\mirsound.lst';
LoadSoundList (flname);
flname := '.\wav\BGList.lst';
LoadBGMusicList(flname);
//if FileExists (flname) then
// SoundList.LoadFromFile (flname);
DScreen := TDrawScreen.Create;
IntroScene := TIntroScene.Create;
LoginScene := TLoginScene.Create;
SelectChrScene := TSelectChrScene.Create;
PlayScene := TPlayScene.Create;
LoginNoticeScene := TLoginNotice.Create;
Map := TMap.Create;
g_DropedItemList := TList.Create;
g_MagicList := TList.Create;
g_FreeActorList := TList.Create;
//DObjList := TList.Create;
EventMan := TClEventManager.Create;
g_ChangeFaceReadyList := TList.Create;
g_ServerList:=TStringList.Create;
g_MySelf := nil;
FillChar (g_UseItems, sizeof(TClientItem)*13, #0);
// FillChar (UseItems, sizeof(TClientItem)*9, #0);
FillChar (g_ItemArr, sizeof(TClientItem)*MAXBAGITEMCL, #0);
FillChar (g_DealItems, sizeof(TClientItem)*10, #0);
FillChar (g_DealRemoteItems, sizeof(TClientItem)*20, #0);
g_SaveItemList := TList.Create;
g_MenuItemList := TList.Create;
g_WaitingUseItem.Item.S.Name := ''; //馒侩芒 辑滚客 烹脚埃俊 烙矫历厘
g_EatingItem.S.Name := '';
g_nTargetX := -1;
g_nTargetY := -1;
g_TargetCret := nil;
g_FocusCret := nil;
g_FocusItem := nil;
g_MagicTarget := nil;
g_nDebugCount := 0;
g_nDebugCount1 := 0;
g_nDebugCount2 := 0;
g_nTestSendCount := 0;
g_nTestReceiveCount := 0;
g_boServerChanging := FALSE;
g_boBagLoaded := FALSE;
g_boAutoDig := FALSE;
g_dwLatestClientTime2 := 0;
g_dwFirstClientTime := 0;
g_dwFirstServerTime := 0;
g_dwFirstClientTimerTime := 0;
g_dwLatestClientTimerTime := 0;
g_dwFirstClientGetTime := 0;
g_dwLatestClientGetTime := 0;
g_nTimeFakeDetectCount := 0;
g_nTimeFakeDetectTimer := 0;
g_nTimeFakeDetectSum := 0;
g_dwSHGetTime := 0;
g_dwSHTimerTime := 0;
g_nSHFakeCount := 0;
g_nDayBright := 3; //广
g_nAreaStateValue := 0;
g_ConnectionStep := cnsLogin;
g_boSendLogin:=False;
g_boServerConnected := FALSE;
SocStr := '';
WarningLevel := 0; //阂樊菩哦 荐脚 冉荐 (菩哦汗荤 啊瓷己 乐澜)
ActionFailLock := FALSE;
g_boMapMoving := FALSE;
g_boMapMovingWait := FALSE;
g_boCheckBadMapMode := FALSE;
g_boCheckSpeedHackDisplay := FALSE;
g_boViewMiniMap := FALSE;
g_boShowGreenHint := FALSE;
g_boShowWhiteHint := FALSE;
FailDir := 0;
FailAction := 0;
g_nDupSelection := 0;
g_dwLastAttackTick := GetTickCount;
g_dwLastMoveTick := GetTickCount;
g_dwLatestSpellTick := GetTickCount;
g_dwAutoPickupTick := GetTickCount;
g_boFirstTime := TRUE;
g_boItemMoving := FALSE;
g_boDoFadeIn := FALSE;
g_boDoFadeOut := FALSE;
g_boDoFastFadeOut := FALSE;
g_boAttackSlow := FALSE;
g_boMoveSlow := FALSE;
g_boNextTimePowerHit := FALSE;
g_boCanLongHit := FALSE;
g_boCanWideHit := FALSE;
g_boCanCrsHit := False;
g_boCanTwnHit := False;
g_boNextTimeFireHit := FALSE;
g_boNoDarkness := FALSE;
g_SoftClosed := FALSE;
g_boQueryPrice := FALSE;
g_sSellPriceStr := '';
g_boAllowGroup := FALSE;
g_GroupMembers := TStringList.Create;
MainWinHandle := DxDraw.Handle;
//盔努腐, 内齿岿靛 殿..
BoOneClick := False;
OneClickMode := toNone;
g_boSound:=True;
g_boBGSound:=True;
if g_sMainParam1 = '' then begin
CSocket.Address:=g_sServerAddr;
CSocket.Port:=g_nServerPort;
end else begin
if (g_sMainParam1 <> '') and (g_sMainParam2 = '') then
CSocket.Address := g_sMainParam1;
if (g_sMainParam2 <> '') and (g_sMainParam3 = '') then begin
CSocket.Address := g_sMainParam1;
CSocket.Port := Str_ToInt (g_sMainParam2, 0);
end;
if (g_sMainParam3 <> '') then begin
if CompareText (g_sMainParam1, '/KWG') = 0 then begin
{
CSocket.Address := kornetworldaddress; //game.megapass.net';
CSocket.Port := 9000;
BoOneClick := TRUE;
OneClickMode := toKornetWorld;
with KornetWorld do begin
CPIPcode := MainParam2;
SVCcode := MainParam3;
LoginID := MainParam4;
CheckSum := MainParam5; //'dkskxhdkslxlkdkdsaaaasa';
end;
}
end else begin
CSocket.Address := g_sMainParam2;
CSocket.Port := Str_ToInt (g_sMainParam3, 0);
BoOneClick := TRUE;
end;
end;
end;
if BO_FOR_TEST then
CSocket.Address := TestServerAddr;
CSocket.Active:=True;
//MainSurface := nil;
DebugOutStr ('----------------------- started ------------------------');
Application.OnException := OnProgramException;
Application.OnIdle := AppOnIdle;
end;
procedure TfrmMain.OnProgramException (Sender: TObject; E: Exception);
begin
DebugOutStr (E.Message);
end;
procedure TfrmMain.WMSysCommand(var Message: TWMSysCommand);
begin
{ with Message do begin
if (CmdType and $FFF0) = SC_KEYMENU then begin
if (Key = VK_TAB) or (Key = VK_RETURN) then begin
FrmMain.WindowState := wsMinimized;
end else
inherited;
end else
inherited;
end;
}
inherited;
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
var
I: Integer;
begin
ClearShowItemList();
g_ShowItemList.Free;
g_ShowItemList:=nil;
g_AutoPickupList.Free;
g_AutoPickupList:=nil;
if g_ToolMenuHook <> 0 then UnhookWindowsHookEx(g_ToolMenuHook);
//SoundCloseProc;
//DXTimer.Enabled := FALSE;
Timer1.Enabled := FALSE;
MinTimer.Enabled := FALSE;
UnLoadWMImagesLib();
// WTiles.Finalize;
{
WObjects1.Finalize;
WObjects2.Finalize;
WObjects3.Finalize;
WObjects4.Finalize;
WObjects5.Finalize;
WObjects6.Finalize;
WObjects7.Finalize;
WObjects8.Finalize;
WObjects9.Finalize;
WObjects10.Finalize;
}
// WHumWing.Finalize;
WDragonImg.Finalize;
// WSmTiles.Finalize;
// WHumImg.Finalize;
// WHairImg.Finalize;
// WWeapon.Finalize;
// WMagic.Finalize;
// WMagic2.Finalize;
// WMagIcon.Finalize;
WMonImg.Finalize;
WMon2Img.Finalize;
WMon3Img.Finalize;
WMon4Img.Finalize;
WMon5Img.Finalize;
WMon6Img.Finalize;
WMon7Img.Finalize;
WMon8Img.Finalize;
WMon9Img.Finalize;
WMon10Img.Finalize;
WMon11Img.Finalize;
WMon12Img.Finalize;
WMon13Img.Finalize;
WMon14Img.Finalize;
WMon15Img.Finalize;
WMon16Img.Finalize;
WMon17Img.Finalize;
WMon18Img.Finalize;
WMon19Img.Finalize;
WMon20Img.Finalize;
WMon21Img.Finalize;
WMon50Img.Finalize;
WMon51Img.Finalize;
WMon52Img.Finalize;
WMon53Img.Finalize;
WMon54Img.Finalize;
// WNpcImg.Finalize;
WEffectImg.Finalize;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -