📄 clmain.pas
字号:
with KornetWorld do begin
CPIPcode := MainParam2;
SVCcode := MainParam3;
LoginID := MainParam4;
CheckSum := MainParam5; //'dkskxhdkslxlkdkdsaaaasa';
end;
end else begin
//老馆 盔努腐 烹钦 霸捞飘侩
CSocket.Address := MainParam2;
CSocket.Port := Str_ToInt (MainParam3, 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;
Font.Charset:=GB2312_CHARSET;
Font.Name:=CurFontName;//'楷体';
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);
begin
if ToolMenuHook <> 0 then UnhookWindowsHookEx(ToolMenuHook);
//SoundCloseProc;
//DXTimer.Enabled := FALSE;
Timer1.Enabled := FALSE;
MinTimer.Enabled := FALSE;
myrecstr.Free;
mysendstr.Free;
WTiles.Finalize;
WObjects1.Finalize;
WObjects2.Finalize;
WObjects3.Finalize;
WObjects4.Finalize;
WObjects5.Finalize;
WObjects6.Finalize;
WObjects7.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;
WNpcImg.Finalize;
WEffectImg.Finalize;
WProgUse.Finalize;
WProgUse2.Finalize;
WChrSel.Finalize;
WMMap.Finalize;
WBagItem.Finalize;
WStateItem.Finalize;
WDnItem.Finalize;
DScreen.Finalize;
PlayScene.Finalize;
LoginNoticeScene.Finalize;
DScreen.Free;
IntroScene.Free;
LoginScene.Free;
SelectChrScene.Free;
PlayScene.Free;
LoginNoticeScene.Free;
SaveItemList.Free;
MenuItemList.Free;
DebugOutStr ('----------------------- closed -------------------------');
Map.Free;
DropedItemList.Free;
MagicList.Free;
FreeActorList.Free;
ChangeFaceReadyList.Free;
//if MainSurface <> nil then MainSurface.Free;
Sound.Free;
SoundList.Free;
//DObjList.Free;
EventMan.Free;
end;
function ComposeColor(Dest, Src: TRGBQuad; Percent: Integer): TRGBQuad;
begin
with Result do
begin
rgbRed := Src.rgbRed+((Dest.rgbRed-Src.rgbRed)*Percent div 256);
rgbGreen := Src.rgbGreen+((Dest.rgbGreen-Src.rgbGreen)*Percent div 256);
rgbBlue := Src.rgbBlue+((Dest.rgbBlue-Src.rgbBlue)*Percent div 256);
rgbReserved := 0;
end;
end;
procedure TFrmMain.DXDraw1Initialize(Sender: TObject);
begin
if BoFirstTime then begin
BoFirstTime := FALSE;
DxDraw1.SurfaceWidth := SCREENWIDTH;
DxDraw1.SurfaceHeight := SCREENHEIGHT;
DxDraw1.Surface.Canvas.Font.Assign (FrmMain.Font);
FrmMain.Font.Name := CurFontName;
FrmMain.Canvas.Font.Name := CurFontName;
DxDraw1.Surface.Canvas.Font.Name := CurFontName;
PlayScene.EdChat.Font.Name := CurFontName;
//MainSurface := TDirectDrawSurface.Create (FrmMain.DXDraw1.DDraw);
//MainSurface.SystemMemory := TRUE;
//MainSurface.SetSize (SCREENWIDTH, SCREENHEIGHT);
WTiles.DDraw := DxDraw1.DDraw;
WObjects1.DDraw := DxDraw1.DDraw;
WObjects2.DDraw := DxDraw1.DDraw;
WObjects3.DDraw := DxDraw1.DDraw;
WObjects4.DDraw := DxDraw1.DDraw;
WObjects5.DDraw := DxDraw1.DDraw;
WObjects6.DDraw := DxDraw1.DDraw;
WObjects7.DDraw := DxDraw1.DDraw;
WSmTiles.DDraw := DxDraw1.DDraw;
WProgUse.DDraw := DxDraw1.DDraw;
WProgUse2.DDraw := DxDraw1.DDraw;
WChrSel.DDraw := DxDraw1.DDraw;
WMMap.DDraw := DxDraw1.DDraw;
WBagItem.DDraw := DxDraw1.DDraw;
WStateItem.DDraw := DxDraw1.DDraw;
WDnItem.DDraw := DxDraw1.DDraw;
WHumImg.DDraw := DxDraw1.DDraw;
WHairImg.DDraw := DxDraw1.DDraw;
WWeapon.DDraw := DxDraw1.DDraw;
WMagic.DDraw := DxDraw1.DDraw;
WMagic2.DDraw := DxDraw1.DDraw;
WMagIcon.DDraw := DxDraw1.DDraw;
WMonImg.DDraw := DxDraw1.DDraw;
WMon2Img.DDraw := DxDraw1.DDraw;
WMon3Img.DDraw := DxDraw1.DDraw;
WMon4Img.DDraw := DxDraw1.DDraw;
WMon5Img.DDraw := DxDraw1.DDraw;
WMon6Img.DDraw := DxDraw1.DDraw;
WMon7Img.DDraw := DxDraw1.DDraw;
WMon8Img.DDraw := DxDraw1.DDraw;
WMon9Img.DDraw := DxDraw1.DDraw;
WMon10Img.DDraw := DxDraw1.DDraw;
WMon11Img.DDraw := DxDraw1.DDraw;
WMon12Img.DDraw := DxDraw1.DDraw;
WMon13Img.DDraw := DxDraw1.DDraw;
WMon14Img.DDraw := DxDraw1.DDraw;
WMon15Img.DDraw := DxDraw1.DDraw;
WMon16Img.DDraw := DxDraw1.DDraw;
WMon17Img.DDraw := DxDraw1.DDraw;
WMon18Img.DDraw := DxDraw1.DDraw;
WNpcImg.DDraw := DxDraw1.DDraw;
WEffectImg.DDraw := DxDraw1.DDraw;
WTiles.Initialize;
WObjects1.Initialize;
WObjects2.Initialize;
WObjects3.Initialize;
WObjects4.Initialize;
WObjects5.Initialize;
WObjects6.Initialize;
WObjects7.Initialize;
WSmTiles.Initialize;
WProgUse.Initialize;
WProgUse2.Initialize;
WChrSel.Initialize;
WMMap.Initialize;
WBagItem.Initialize;
WStateItem.Initialize;
WDnItem.Initialize;
WHumImg.Initialize;
WHairImg.Initialize;
WWeapon.Initialize;
WMagic.Initialize;
WMagic2.Initialize;
WMagIcon.Initialize;
WMonImg.Initialize;
WMon2Img.Initialize;
WMon3Img.Initialize;
WMon4Img.Initialize;
WMon5Img.Initialize;
WMon6Img.Initialize;
WMon7Img.Initialize;
WMon8Img.Initialize;
WMon9Img.Initialize;
WMon10Img.Initialize;
WMon11Img.Initialize;
WMon12Img.Initialize;
WMon13Img.Initialize;
WMon14Img.Initialize;
WMon15Img.Initialize;
WMon16Img.Initialize;
WMon17Img.Initialize;
WMon18Img.Initialize;
WNpcImg.Initialize;
WEffectImg.Initialize;
DXDraw1.DefColorTable := WProgUse.MainPalette;
DXDraw1.ColorTable := DXDraw1.DefColorTable;
DXDraw1.UpdatePalette;
//256 Blend utility
if not LoadNearestIndex (NEARESTPALETTEINDEXFILE) then begin
BuildNearestIndex (DXDraw1.ColorTable);
SaveNearestIndex (NEARESTPALETTEINDEXFILE);
end;
BuildColorLevels (DXDraw1.ColorTable);
DScreen.Initialize;
PlayScene.Initialize;
FrmDlg.Initialize;
if doFullScreen in DxDraw1.Options then begin
//Screen.Cursor := crNone;
end else begin
Left := 0;
Top := 0;
Width := SCREENWIDTH;
Height := SCREENHEIGHT;
NoDarkness := TRUE; //是否使用黑暗? 使用黑暗后进入后只有
//一点亮光
UseDIBSurface := TRUE;
end;
ImgMixSurface := TDirectDrawSurface.Create (FrmMain.DXDraw1.DDraw);
ImgMixSurface.SystemMemory := TRUE;
ImgMixSurface.SetSize (300, 350);
MiniMapSurface := TDirectDrawSurface.Create (FrmMain.DXDraw1.DDraw);
MiniMapSurface.SystemMemory := TRUE;
MiniMapSurface.SetSize (540, 360);
//DXDraw1.Surface.SystemMemory := TRUE;
end;
end;
procedure TFrmMain.DXDraw1Finalize(Sender: TObject);
begin
//DXTimer.Enabled := FALSE;
end;
procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Savebags ('.\Data\' + ServerName + '.' + CharName + '.itm', @ItemArr);
//DxTimer.Enabled := FALSE;
end;
{------------------------------------------------------------}
function TFrmMain.GetObjs (wunit, idx: integer): TDirectDrawSurface;
begin
case wunit of
0: Result := WObjects1.Images[idx];
1: Result := WObjects2.Images[idx];
2: Result := WObjects3.Images[idx];
3: Result := WObjects4.Images[idx];
4: Result := WObjects5.Images[idx];
5: Result := WObjects6.Images[idx];
6: Result := WObjects7.Images[idx];
else Result := WObjects1.Images[idx];
end;
end;
function TFrmMain.GetObjsEx (wunit, idx: integer; var px, py: integer): TDirectDrawSurface;
begin
case wunit of
0: Result := WObjects1.GetCachedImage (idx, px, py);
1: Result := WObjects2.GetCachedImage (idx, px, py);
2: Result := WObjects3.GetCachedImage (idx, px, py);
3: Result := WObjects4.GetCachedImage (idx, px, py);
4: Result := WObjects5.GetCachedImage (idx, px, py);
5: Result := WObjects6.GetCachedImage (idx, px, py);
6: Result := WObjects7.GetCachedImage (idx, px, py);
else Result := WObjects1.GetCachedImage (idx, px, py);
end;
end;
procedure TFrmMain.ProcOnIdle;
var
done: Boolean;
begin
AppOnIdle (self, done);
//DXTimerTimer (self, 0);
end;
procedure TFrmMain.AppOnIdle (Sender: TObject; var Done: Boolean);
//procedure TFrmMain.DXTimerTimer(Sender: TObject; LagCount: Integer);
var
i, j: integer;
p: TPoint;
DF: DDBLTFX;
d: TDirectDrawSurface;
yy: Integer;
begin
Done := TRUE;
if not DXDraw1.CanDraw then exit;
// DXDraw1.Surface.Fill(0);
// BoldTextOut (DxDraw1.Surface, 0, 0, clBlack, clBlack, 'test test ' + TimeToStr(Time));
// DxDraw1.Surface.Canvas.Release;
ProcessKeyMessages;
ProcessActionMessages;
DScreen.DrawScreen (DxDraw1.Surface);
DWinMan.DirectPaint (DxDraw1.Surface);
DScreen.DrawScreenTop (DxDraw1.Surface);
DScreen.DrawHint (DxDraw1.Surface);
{Draw cursor}
{ CursorSurface := FrmMain.WProgUse.Images[0];
if CursorSurface <> nil then begin
GetCursorPos (p);
DxDraw1.Surface.Draw (p.x, p.y, CursorSurface.ClientRect, CursorSurface, TRUE);
end;}
if ItemMoving then begin
if (MovingItem.Item.S.Name <> '金币') then //'陛傈') then
d := FrmMain.WBagItem.Images[MovingItem.Item.S.Looks]
else d := FrmMain.WBagItem.Images[115]; //金币捣 葛剧
if d <> nil then begin
GetCursorPos (p);
DxDraw1.Surface.Draw (p.x-(d.ClientRect.Right div 2), p.y-(d.ClientRect.Bottom div 2), d.ClientRect, d, TRUE);
end;
end;
if DoFadeOut then begin
if FadeIndex < 1 then FadeIndex := 1;
MakeDark (DxDraw1.Surface, FadeIndex);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -