⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clmain.pas

📁 在网上有很多传奇源程序DELPHI
💻 PAS
📖 第 1 页 / 共 5 页
字号:
            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 + -